Commit 385c63d955212c61d239b7ad3301e488a4c8f00f
1 parent
71f366bcac
Exists in
master
-
Showing 13 changed files with 13 additions and 949 deletions Inline Diff
- redpitaya/client/dds_control.grc
- redpitaya/client/gr_add_const_set_offset.xml
- redpitaya/client/gr_nco_counter_send_conf.xml
- redpitaya/client/gr_source_test.xml
- redpitaya/client/gr_source_test.xml.old
- redpitaya/client/redpitaya_gnuradio.py
- redpitaya/client/redpitaya_gnuradio.pyc
- redpitaya/client/sourceme.bma
- redpitaya/client/top_block.py
- redpitaya/gnuradio_blocks/dds_control.grc
- redpitaya/gnuradio_blocks/dds_control.py
- redpitaya/gnuradio_blocks/top_block.py
- sdr/fm_radio/fm_radio.py
redpitaya/client/dds_control.grc
<?xml version='1.0' encoding='utf-8'?> | 1 | File was deleted | ||
<?grc format='1' created='3.7.10'?> | 2 | |||
<flow_graph> | 3 | |||
<timestamp>Thu Feb 2 22:54:58 2017</timestamp> | 4 | |||
<block> | 5 | |||
<key>options</key> | 6 | |||
<param> | 7 | |||
<key>author</key> | 8 | |||
<value></value> | 9 | |||
</param> | 10 | |||
<param> | 11 | |||
<key>window_size</key> | 12 | |||
<value></value> | 13 | |||
</param> | 14 | |||
<param> | 15 | |||
<key>category</key> | 16 | |||
<value>[GRC Hier Blocks]</value> | 17 | |||
</param> | 18 | |||
<param> | 19 | |||
<key>comment</key> | 20 | |||
<value></value> | 21 | |||
</param> | 22 | |||
<param> | 23 | |||
<key>description</key> | 24 | |||
<value></value> | 25 | |||
</param> | 26 | |||
<param> | 27 | |||
<key>_enabled</key> | 28 | |||
<value>True</value> | 29 | |||
</param> | 30 | |||
<param> | 31 | |||
<key>_coordinate</key> | 32 | |||
<value>(8, 8)</value> | 33 | |||
</param> | 34 | |||
<param> | 35 | |||
<key>_rotation</key> | 36 | |||
<value>0</value> | 37 | |||
</param> | 38 | |||
<param> | 39 | |||
<key>generate_options</key> | 40 | |||
<value>qt_gui</value> | 41 | |||
</param> | 42 | |||
<param> | 43 | |||
<key>hier_block_src_path</key> | 44 | |||
<value>.:</value> | 45 | |||
</param> | 46 | |||
<param> | 47 | |||
<key>id</key> | 48 | |||
<value>top_block</value> | 49 | |||
</param> | 50 | |||
<param> | 51 | |||
<key>max_nouts</key> | 52 | |||
<value>0</value> | 53 | |||
</param> | 54 | |||
<param> | 55 | |||
<key>qt_qss_theme</key> | 56 | |||
<value></value> | 57 | |||
</param> | 58 | |||
<param> | 59 | |||
<key>realtime_scheduling</key> | 60 | |||
<value></value> | 61 | |||
</param> | 62 | |||
<param> | 63 | |||
<key>run_command</key> | 64 | |||
<value>{python} -u {filename}</value> | 65 | |||
</param> | 66 | |||
<param> | 67 | |||
<key>run_options</key> | 68 | |||
<value>prompt</value> | 69 | |||
</param> | 70 | |||
<param> | 71 | |||
<key>run</key> | 72 | |||
<value>True</value> | 73 | |||
</param> | 74 | |||
<param> | 75 | |||
<key>thread_safe_setters</key> | 76 | |||
<value></value> | 77 | |||
</param> | 78 | |||
<param> | 79 | |||
<key>title</key> | 80 | |||
<value></value> | 81 | |||
</param> | 82 | |||
</block> | 83 | |||
<block> | 84 | |||
<key>variable_qtgui_range</key> | 85 | |||
<param> | 86 | |||
<key>comment</key> | 87 | |||
<value></value> | 88 | |||
</param> | 89 | |||
<param> | 90 | |||
<key>value</key> | 91 | |||
<value>0</value> | 92 | |||
</param> | 93 | |||
<param> | 94 | |||
<key>_enabled</key> | 95 | |||
<value>True</value> | 96 | |||
</param> | 97 | |||
<param> | 98 | |||
<key>_coordinate</key> | 99 | |||
<value>(704, 24)</value> | 100 | |||
</param> | 101 | |||
<param> | 102 | |||
<key>gui_hint</key> | 103 | |||
<value>1, 0</value> | 104 | |||
</param> | 105 | |||
<param> | 106 | |||
<key>_rotation</key> | 107 | |||
<value>0</value> | 108 | |||
</param> | 109 | |||
<param> | 110 | |||
<key>id</key> | 111 | |||
<value>a_dds</value> | 112 | |||
</param> | 113 | |||
<param> | 114 | |||
<key>label</key> | 115 | |||
<value>DDS amplitude</value> | 116 | |||
</param> | 117 | |||
<param> | 118 | |||
<key>min_len</key> | 119 | |||
<value>200</value> | 120 | |||
</param> | 121 | |||
<param> | 122 | |||
<key>orient</key> | 123 | |||
<value>Qt.Horizontal</value> | 124 | |||
</param> | 125 | |||
<param> | 126 | |||
<key>start</key> | 127 | |||
<value>0</value> | 128 | |||
</param> | 129 | |||
<param> | 130 | |||
<key>step</key> | 131 | |||
<value>128</value> | 132 | |||
</param> | 133 | |||
<param> | 134 | |||
<key>stop</key> | 135 | |||
<value>8191</value> | 136 | |||
</param> | 137 | |||
<param> | 138 | |||
<key>rangeType</key> | 139 | |||
<value>int</value> | 140 | |||
</param> | 141 | |||
<param> | 142 | |||
<key>widget</key> | 143 | |||
<value>counter_slider</value> | 144 | |||
</param> | 145 | |||
</block> | 146 | |||
<block> | 147 | |||
<key>variable</key> | 148 | |||
<param> | 149 | |||
<key>comment</key> | 150 | |||
<value></value> | 151 | |||
</param> | 152 | |||
<param> | 153 | |||
<key>_enabled</key> | 154 | |||
<value>True</value> | 155 | |||
</param> | 156 | |||
<param> | 157 | |||
<key>_coordinate</key> | 158 | |||
<value>(0, 248)</value> | 159 | |||
</param> | 160 | |||
<param> | 161 | |||
<key>_rotation</key> | 162 | |||
<value>0</value> | 163 | |||
</param> | 164 | |||
<param> | 165 | |||
<key>id</key> | 166 | |||
<value>addr</value> | 167 | |||
</param> | 168 | |||
<param> | 169 | |||
<key>value</key> | 170 | |||
<value>"192.168.0.202"</value> | 171 | |||
</param> | 172 | |||
</block> | 173 | |||
<block> | 174 | |||
<key>variable_qtgui_range</key> | 175 | |||
<param> | 176 | |||
<key>comment</key> | 177 | |||
<value></value> | 178 | |||
</param> | 179 | |||
<param> | 180 | |||
<key>value</key> | 181 | |||
<value>0</value> | 182 | |||
</param> | 183 | |||
<param> | 184 | |||
<key>_enabled</key> | 185 | |||
<value>True</value> | 186 | |||
</param> | 187 | |||
<param> | 188 | |||
<key>_coordinate</key> | 189 | |||
<value>(488, 24)</value> | 190 | |||
</param> | 191 | |||
<param> | 192 | |||
<key>gui_hint</key> | 193 | |||
<value>0, 0</value> | 194 | |||
</param> | 195 | |||
<param> | 196 | |||
<key>_rotation</key> | 197 | |||
<value>0</value> | 198 | |||
</param> | 199 | |||
<param> | 200 | |||
<key>id</key> | 201 | |||
<value>f_dds</value> | 202 | |||
</param> | 203 | |||
<param> | 204 | |||
<key>label</key> | 205 | |||
<value>DDS frequency</value> | 206 | |||
</param> | 207 | |||
<param> | 208 | |||
<key>min_len</key> | 209 | |||
<value>200</value> | 210 | |||
</param> | 211 | |||
<param> | 212 | |||
<key>orient</key> | 213 | |||
<value>Qt.Horizontal</value> | 214 | |||
</param> | 215 | |||
<param> | 216 | |||
<key>start</key> | 217 | |||
<value>0</value> | 218 | |||
</param> | 219 | |||
<param> | 220 | |||
<key>step</key> | 221 | |||
<value>100000</value> | 222 | |||
</param> | 223 | |||
<param> | 224 | |||
<key>stop</key> | 225 | |||
<value>60000000</value> | 226 | |||
</param> | 227 | |||
<param> | 228 | |||
<key>rangeType</key> | 229 | |||
<value>int</value> | 230 | |||
</param> | 231 | |||
<param> | 232 | |||
<key>widget</key> | 233 | |||
<value>counter_slider</value> | 234 | |||
</param> | 235 | |||
</block> | 236 | |||
<block> | 237 | |||
<key>variable_qtgui_range</key> | 238 | |||
<param> | 239 | |||
<key>comment</key> | 240 | |||
<value></value> | 241 | |||
</param> | 242 | |||
<param> | 243 | |||
<key>value</key> | 244 | |||
<value>0</value> | 245 | |||
</param> | 246 | |||
<param> | 247 | |||
<key>_enabled</key> | 248 | |||
<value>True</value> | 249 | |||
</param> | 250 | |||
<param> | 251 | |||
<key>_coordinate</key> | 252 | |||
<value>(328, 24)</value> | 253 | |||
</param> | 254 | |||
<param> | 255 | |||
<key>gui_hint</key> | 256 | |||
<value>2, 0</value> | 257 | |||
</param> | 258 | |||
<param> | 259 | |||
<key>_rotation</key> | 260 | |||
<value>0</value> | 261 | |||
</param> | 262 | |||
<param> | 263 | |||
<key>id</key> | 264 | |||
<value>offset_out1</value> | 265 | |||
</param> | 266 | |||
<param> | 267 | |||
<key>label</key> | 268 | |||
<value>Offset DDS</value> | 269 | |||
</param> | 270 | |||
<param> | 271 | |||
<key>min_len</key> | 272 | |||
<value>200</value> | 273 | |||
</param> | 274 | |||
<param> | 275 | |||
<key>orient</key> | 276 | |||
<value>Qt.Horizontal</value> | 277 | |||
</param> | 278 | |||
<param> | 279 | |||
<key>start</key> | 280 | |||
<value>-8192</value> | 281 | |||
</param> | 282 | |||
<param> | 283 | |||
<key>step</key> | 284 | |||
<value>100</value> | 285 | |||
</param> | 286 | |||
<param> | 287 | |||
<key>stop</key> | 288 | |||
<value>8191</value> | 289 | |||
</param> | 290 | |||
<param> | 291 | |||
<key>rangeType</key> | 292 | |||
<value>int</value> | 293 | |||
</param> | 294 | |||
<param> | 295 | |||
<key>widget</key> | 296 | |||
<value>counter_slider</value> | 297 | |||
</param> | 298 | |||
</block> | 299 | |||
<block> | 300 | |||
<key>variable</key> | 301 | |||
<param> | 302 | |||
<key>comment</key> | 303 | |||
<value></value> | 304 | |||
</param> | 305 | |||
<param> | 306 | |||
<key>_enabled</key> | 307 | |||
<value>True</value> | 308 | |||
</param> | 309 | |||
<param> | 310 | |||
<key>_coordinate</key> | 311 | |||
<value>(0, 320)</value> | 312 | |||
</param> | 313 | |||
<param> | 314 | |||
<key>_rotation</key> | 315 | |||
<value>0</value> | 316 | |||
</param> | 317 | |||
<param> | 318 | |||
<key>id</key> | 319 | |||
<value>port</value> | 320 | |||
</param> | 321 | |||
<param> | 322 | |||
<key>value</key> | 323 | |||
<value>1001</value> | 324 | |||
</param> | 325 | |||
</block> | 326 | |||
<block> | 327 | |||
<key>variable</key> | 328 | |||
<param> | 329 | |||
<key>comment</key> | 330 | |||
<value></value> | 331 | |||
</param> | 332 | |||
<param> | 333 | |||
<key>_enabled</key> | 334 | |||
<value>True</value> | 335 | |||
</param> | 336 | |||
<param> | 337 | |||
<key>_coordinate</key> | 338 | |||
<value>(8, 160)</value> | 339 | |||
</param> | 340 | |||
<param> | 341 | |||
<key>_rotation</key> | 342 | |||
<value>0</value> | 343 | |||
</param> | 344 | |||
<param> | 345 | |||
<key>id</key> | 346 | |||
<value>samp_rate</value> | 347 | |||
</param> | 348 | |||
<param> | 349 | |||
<key>value</key> | 350 | |||
<value>32000</value> | 351 | |||
</param> | 352 | |||
</block> | 353 | |||
<block> | 354 | |||
<key>add_const_set_offset</key> | 355 | |||
<param> | 356 | |||
<key>addr</key> | 357 | |||
<value>addr</value> | 358 | |||
</param> | 359 | |||
<param> | 360 | |||
<key>alias</key> | 361 | |||
<value></value> | 362 | |||
</param> | 363 | |||
<param> | 364 | |||
<key>comment</key> | 365 | |||
<value></value> | 366 | |||
</param> | 367 | |||
<param> | 368 | |||
<key>const</key> | 369 | |||
<value>offset_out1</value> | 370 | |||
</param> | 371 | |||
<param> | 372 | |||
<key>device</key> | 373 | |||
<value>/dev/dds_offset</value> | 374 | |||
</param> | 375 | |||
<param> | 376 | |||
<key>_enabled</key> | 377 | |||
<value>True</value> | 378 | |||
</param> | 379 | |||
<param> | 380 | |||
<key>_coordinate</key> | 381 | |||
<value>(304, 176)</value> | 382 | |||
</param> | 383 | |||
<param> | 384 | |||
<key>_rotation</key> | 385 | |||
<value>0</value> | 386 | |||
</param> | 387 | |||
<param> | 388 | |||
<key>id</key> | 389 | |||
<value>add_const_set_offset_0</value> | 390 | |||
</param> | 391 | |||
<param> | 392 | |||
<key>port</key> | 393 | |||
<value>port</value> | 394 | |||
</param> | 395 | |||
</block> | 396 | |||
<block> | 397 | |||
<key>add_const_set_offset</key> | 398 | |||
<param> | 399 | |||
<key>addr</key> | 400 | |||
<value>addr</value> | 401 | |||
</param> | 402 | |||
<param> | 403 | |||
<key>alias</key> | 404 | |||
<value></value> | 405 | |||
</param> | 406 | |||
<param> | 407 | |||
<key>comment</key> | 408 | |||
<value></value> | 409 | |||
</param> | 410 | |||
<param> | 411 | |||
<key>const</key> | 412 | |||
<value>a_dds</value> | 413 | |||
</param> | 414 | |||
<param> | 415 | |||
<key>device</key> | 416 | |||
<value>/dev/dds_ampl</value> | 417 | |||
</param> | 418 | |||
<param> | 419 | |||
<key>_enabled</key> | 420 | |||
<value>True</value> | 421 | |||
</param> | 422 | |||
<param> | 423 | |||
<key>_coordinate</key> | 424 | |||
<value>(704, 176)</value> | 425 | |||
</param> | 426 | |||
<param> | 427 | |||
<key>_rotation</key> | 428 | |||
<value>0</value> | 429 | |||
</param> | 430 | |||
<param> | 431 | |||
<key>id</key> | 432 | |||
<value>add_const_set_offset_0_0</value> | 433 | |||
</param> | 434 | |||
<param> | 435 | |||
<key>port</key> | 436 | |||
<value>port</value> | 437 | |||
</param> | 438 | |||
</block> | 439 | |||
<block> | 440 | |||
<key>nco_counter_send_conf</key> | 441 | |||
<param> | 442 | |||
<key>acc_size</key> | 443 | |||
<value>32</value> | 444 | |||
</param> | 445 | |||
<param> | 446 | |||
<key>addr</key> | 447 | |||
<value>addr</value> | 448 | |||
</param> | 449 | |||
<param> | 450 | |||
<key>alias</key> | 451 | |||
<value></value> | 452 | |||
</param> | 453 | |||
<param> | 454 | |||
<key>comment</key> | 455 | |||
<value></value> | 456 | |||
</param> | 457 | |||
<param> | 458 | |||
<key>device</key> | 459 | |||
<value>/dev/dds_freq</value> | 460 | |||
</param> | 461 | |||
<param> | 462 | |||
<key>_enabled</key> | 463 | |||
<value>True</value> | 464 | |||
</param> | 465 | |||
<param> | 466 | |||
<key>freq_dds</key> | 467 | |||
<value>f_dds</value> | 468 | |||
</param> | 469 | |||
<param> | 470 | |||
<key>freq_ref</key> | 471 | |||
<value>125000000</value> | 472 | |||
</param> | 473 | |||
<param> | 474 | |||
<key>_coordinate</key> | 475 | |||
<value>(488, 176)</value> | 476 | |||
</param> | 477 | |||
<param> | 478 | |||
<key>_rotation</key> | 479 | |||
<value>0</value> | 480 | |||
</param> | 481 | |||
<param> | 482 | |||
<key>id</key> | 483 | |||
<value>nco_counter_send_conf_0</value> | 484 | |||
</param> | 485 | |||
<param> | 486 | |||
<key>offset</key> | 487 | |||
<value>0</value> | 488 | |||
</param> | 489 | |||
<param> | 490 | |||
<key>port</key> | 491 | |||
<value>port</value> | 492 | |||
</param> | 493 | |||
</block> | 494 | |||
</flow_graph> | 495 |
redpitaya/client/gr_add_const_set_offset.xml
<?xml version="1.0"?> | 1 | File was deleted | ||
<!-- | 2 | |||
# GNU Radio blocks for the Red Pitaya transceiver | 3 | |||
# Copyright (C) 2015 Renzo Davoli | 4 | |||
# | 5 | |||
# This program is free software; you can redistribute it and/or | 6 | |||
# modify it under the terms of the GNU General Public License | 7 | |||
# as published by the Free Software Foundation; either version 2 | 8 | |||
# of the License, or (at your option) any later version. | 9 | |||
# | 10 | |||
# This program is distributed in the hope that it will be useful, | 11 | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | |||
# GNU General Public License for more details. | 14 | |||
# | 15 | |||
# You should have received a copy of the GNU General Public License | 16 | |||
# along with this program; if not, write to the Free Software | 17 | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 18 | |||
--> | 19 | |||
<block> | 20 | |||
<name>add_const_set_offset</name> | 21 | |||
<key>add_const_set_offset</key> | 22 | |||
<category>Red Pitaya</category> | 23 | |||
<import>import redpitaya_gnuradio</import> | 24 | |||
<make>redpitaya_gnuradio.add_const_set_offset( | 25 | |||
addr=$addr, | 26 | |||
port=$port, | 27 | |||
device=$device, | 28 | |||
const=$const, | 29 | |||
) | 30 | |||
</make> | 31 | |||
<callback>set_const(device=$device, const=$const)</callback> | 32 | |||
<param> | 33 | |||
<name>Address</name> | 34 | |||
<key>addr</key> | 35 | |||
<value>192.168.0.201</value> | 36 | |||
<type>string</type> | 37 | |||
</param> | 38 | |||
<param> | 39 | |||
<name>Port</name> | 40 | |||
<key>port</key> | 41 | |||
<value>1001</value> | 42 | |||
<type>int</type> | 43 | |||
</param> | 44 | |||
<param> | 45 | |||
<name>Device</name> | 46 | |||
<key>device</key> | 47 | |||
<value>/dev/add_const_0</value> | 48 | |||
<type>string</type> | 49 | |||
</param> | 50 | |||
<param> | 51 | |||
<name>Constant</name> | 52 | |||
<key>const</key> | 53 | |||
<value>0</value> | 54 | |||
<type>int</type> | 55 | |||
</param> | 56 | |||
</block> | 57 |
redpitaya/client/gr_nco_counter_send_conf.xml
<?xml version="1.0"?> | 1 | File was deleted | ||
<!-- | 2 | |||
# GNU Radio blocks for the Red Pitaya transceiver | 3 | |||
# Copyright (C) 2015 Renzo Davoli | 4 | |||
# | 5 | |||
# This program is free software; you can redistribute it and/or | 6 | |||
# modify it under the terms of the GNU General Public License | 7 | |||
# as published by the Free Software Foundation; either version 2 | 8 | |||
# of the License, or (at your option) any later version. | 9 | |||
# | 10 | |||
# This program is distributed in the hope that it will be useful, | 11 | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | |||
# GNU General Public License for more details. | 14 | |||
# | 15 | |||
# You should have received a copy of the GNU General Public License | 16 | |||
# along with this program; if not, write to the Free Software | 17 | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 18 | |||
--> | 19 | |||
<block> | 20 | |||
<name>nco_counter_send_conf</name> | 21 | |||
<key>nco_counter_send_conf</key> | 22 | |||
<category>Red Pitaya</category> | 23 | |||
<import>import redpitaya_gnuradio</import> | 24 | |||
<make>redpitaya_gnuradio.nco_counter_send_conf( | 25 | |||
addr=$addr, | 26 | |||
port=$port, | 27 | |||
device=$device, | 28 | |||
freq_ref=$freq_ref, | 29 | |||
freq_dds=$freq_dds, | 30 | |||
acc_size=$acc_size, | 31 | |||
offset=$offset, | 32 | |||
) | 33 | |||
</make> | 34 | |||
<callback>set_nco(device=$device, freq_ref=$freq_ref, freq_dds=$freq_dds, acc_size=$acc_size, offset=$offset)</callback> | 35 | |||
<param> | 36 | |||
<name>Address</name> | 37 | |||
<key>addr</key> | 38 | |||
<value>192.168.0.201</value> | 39 | |||
<type>string</type> | 40 | |||
</param> | 41 | |||
<param> | 42 | |||
<name>Port</name> | 43 | |||
<key>port</key> | 44 | |||
<value>1001</value> | 45 | |||
<type>int</type> | 46 | |||
</param> | 47 | |||
<param> | 48 | |||
<name>Device</name> | 49 | |||
<key>device</key> | 50 | |||
<value>/dev/dds1</value> | 51 | |||
<type>string</type> | 52 | |||
</param> | 53 | |||
<param> | 54 | |||
<name>Frequency ref</name> | 55 | |||
<key>freq_ref</key> | 56 | |||
<value>125000000</value> | 57 | |||
<type>int</type> | 58 | |||
</param> | 59 | |||
<param> | 60 | |||
<name>Frequency DDS</name> | 61 | |||
<key>freq_dds</key> | 62 | |||
<value>0</value> | 63 | |||
<type>int</type> | 64 | |||
</param> | 65 | |||
<param> | 66 | |||
<name>Accumulator size</name> | 67 | |||
<key>acc_size</key> | 68 | |||
<value>28</value> | 69 | |||
<type>int</type> | 70 | |||
</param> | 71 | |||
<param> | 72 | |||
<name>Offset</name> | 73 | |||
<key>offset</key> | 74 | |||
<value>0</value> | 75 | |||
<type>int</type> | 76 | |||
</param> | 77 | |||
</block> | 78 |
redpitaya/client/gr_source_test.xml
<?xml version="1.0"?> | 1 | File was deleted | ||
<!-- | 2 | |||
# GNU Radio blocks for the Red Pitaya transceiver | 3 | |||
# Copyright (C) 2015 Renzo Davoli | 4 | |||
# | 5 | |||
# This program is free software; you can redistribute it and/or | 6 | |||
# modify it under the terms of the GNU General Public License | 7 | |||
# as published by the Free Software Foundation; either version 2 | 8 | |||
# of the License, or (at your option) any later version. | 9 | |||
# | 10 | |||
# This program is distributed in the hope that it will be useful, | 11 | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | |||
# GNU General Public License for more details. | 14 | |||
# | 15 | |||
# You should have received a copy of the GNU General Public License | 16 | |||
# along with this program; if not, write to the Free Software | 17 | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 18 | |||
--> | 19 | |||
<block> | 20 | |||
<name>source_test</name> | 21 | |||
<key>source_test</key> | 22 | |||
<category>Red Pitaya</category> | 23 | |||
<import>import redpitaya_gnuradio</import> | 24 | |||
<make>redpitaya_gnuradio.source_test()</make> | 25 | |||
<source> | 26 | |||
<name>out</name> | 27 | |||
<type>complex</type> | 28 | |||
</source> | 29 | |||
</block> | 30 |
redpitaya/client/gr_source_test.xml.old
<?xml version="1.0"?> | 1 | File was deleted | ||
<!-- | 2 | |||
# GNU Radio blocks for the Red Pitaya transceiver | 3 | |||
# Copyright (C) 2015 Renzo Davoli | 4 | |||
# | 5 | |||
# This program is free software; you can redistribute it and/or | 6 | |||
# modify it under the terms of the GNU General Public License | 7 | |||
# as published by the Free Software Foundation; either version 2 | 8 | |||
# of the License, or (at your option) any later version. | 9 | |||
# | 10 | |||
# This program is distributed in the hope that it will be useful, | 11 | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | |||
# GNU General Public License for more details. | 14 | |||
# | 15 | |||
# You should have received a copy of the GNU General Public License | 16 | |||
# along with this program; if not, write to the Free Software | 17 | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 18 | |||
--> | 19 | |||
<block> | 20 | |||
<name>source_test</name> | 21 | |||
<key>source_test</key> | 22 | |||
<category>Red Pitaya</category> | 23 | |||
<import>import redpitaya_gnuradio</import> | 24 | |||
<make>redpitaya_gnuradio.source_test()</make> | 25 | |||
<source> | 26 | |||
<name>out</name> | 27 | |||
<type>complex</type> | 28 | |||
</source> | 29 | |||
</block> | 30 |
redpitaya/client/redpitaya_gnuradio.py
#!/usr/bin/env python | 1 | File was deleted | ||
2 | ||||
# GNU Radio blocks for the Red Pitaya transceiver | 3 | |||
# Copyright (C) 2015 Renzo Davoli | 4 | |||
# | 5 | |||
# This program is free software; you can redistribute it and/or | 6 | |||
# modify it under the terms of the GNU General Public License | 7 | |||
# as published by the Free Software Foundation; either version 2 | 8 | |||
# of the License, or (at your option) any later version. | 9 | |||
# | 10 | |||
# This program is distributed in the hope that it will be useful, | 11 | |||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | |||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | |||
# GNU General Public License for more details. | 14 | |||
# | 15 | |||
# You should have received a copy of the GNU General Public License | 16 | |||
# along with this program; if not, write to the Free Software | 17 | |||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 18 | |||
19 | ||||
import socket, os | 20 | |||
from gnuradio import gr, blocks | 21 | |||
22 | ||||
class add_const_set_offset(gr.hier_block2): | 23 | |||
def __init__(self, addr, port, device, const): | 24 | |||
self.name = "add_const_set_offset" | 25 | |||
gr.hier_block2.__init__( | 26 | |||
self, | 27 | |||
name = self.name, | 28 | |||
input_signature = gr.io_signature(0, 0, 0), | 29 | |||
output_signature = gr.io_signature(0, 0, 0) | 30 | |||
) | 31 | |||
self.ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | 32 | |||
self.ctrl_sock.connect((addr, port)) | 33 | |||
self.set_const(device, const) | 34 | |||
35 | ||||
def set_const(self, device, const): | 36 | |||
self.ctrl_sock.send('%s;%s;%i\n'%(self.name, device, const)) | 37 | |||
38 | ||||
39 | ||||
class nco_counter_send_conf(gr.hier_block2): | 40 | |||
def __init__(self, addr, port, device, freq_ref, freq_dds, acc_size, offset): | 41 | |||
self.name = "nco_counter_send_conf" | 42 | |||
gr.hier_block2.__init__( | 43 | |||
self, | 44 | |||
name = self.name, | 45 | |||
input_signature = gr.io_signature(0, 0, 0), | 46 | |||
output_signature = gr.io_signature(0, 0, 0) | 47 | |||
) | 48 | |||
self.ctrl_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | 49 | |||
self.ctrl_sock.connect((addr, port)) | 50 | |||
self.set_nco(device, freq_ref, freq_dds, acc_size, offset) | 51 | |||
52 | ||||
def set_nco(self, device, freq_ref, freq_dds, acc_size, offset): | 53 | |||
self.ctrl_sock.send('%s;%s;%i;%i;%i;%i\n'%(self.name, device, freq_ref, freq_dds, acc_size, offset)) | 54 | |||
55 | ||||
'''~ | 56 | |||
class source_test(gr.hier_block2): | 57 | |||
def __init__(self): | 58 | |||
self.name = "source_test" | 59 | |||
gr.hier_block2.__init__( | 60 | |||
self, | 61 | |||
name = self.name, | 62 | |||
input_signature = gr.io_signature(0, 0, 0), | 63 |
redpitaya/client/redpitaya_gnuradio.pyc
No preview for this file type
redpitaya/client/sourceme.bma
export GRC_BLOCKS_PATH=. | 1 | File was deleted |
redpitaya/client/top_block.py
#!/usr/bin/env python2 | 1 | File was deleted | ||
# -*- coding: utf-8 -*- | 2 | |||
################################################## | 3 | |||
# GNU Radio Python Flow Graph | 4 | |||
# Title: Top Block | 5 | |||
# Generated: Mon Feb 13 22:24:05 2017 | 6 | |||
################################################## | 7 | |||
8 | ||||
if __name__ == '__main__': | 9 | |||
import ctypes | 10 | |||
import sys | 11 | |||
if sys.platform.startswith('linux'): | 12 | |||
try: | 13 | |||
x11 = ctypes.cdll.LoadLibrary('libX11.so') | 14 | |||
x11.XInitThreads() | 15 | |||
except: | 16 | |||
print "Warning: failed to XInitThreads()" | 17 | |||
18 | ||||
from PyQt4 import Qt | 19 | |||
from gnuradio import eng_notation | 20 | |||
from gnuradio import gr | 21 | |||
from gnuradio.eng_option import eng_option | 22 | |||
from gnuradio.filter import firdes | 23 | |||
from gnuradio.qtgui import Range, RangeWidget | 24 | |||
from optparse import OptionParser | 25 | |||
import redpitaya_gnuradio | 26 | |||
import sys | 27 | |||
28 | ||||
29 | ||||
class top_block(gr.top_block, Qt.QWidget): | 30 | |||
31 | ||||
def __init__(self): | 32 | |||
gr.top_block.__init__(self, "Top Block") | 33 | |||
Qt.QWidget.__init__(self) | 34 | |||
self.setWindowTitle("Top Block") | 35 | |||
try: | 36 | |||
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) | 37 | |||
except: | 38 | |||
pass | 39 | |||
self.top_scroll_layout = Qt.QVBoxLayout() | 40 | |||
self.setLayout(self.top_scroll_layout) | 41 | |||
self.top_scroll = Qt.QScrollArea() | 42 | |||
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) | 43 | |||
self.top_scroll_layout.addWidget(self.top_scroll) | 44 | |||
self.top_scroll.setWidgetResizable(True) | 45 | |||
self.top_widget = Qt.QWidget() | 46 | |||
self.top_scroll.setWidget(self.top_widget) | 47 | |||
self.top_layout = Qt.QVBoxLayout(self.top_widget) | 48 | |||
self.top_grid_layout = Qt.QGridLayout() | 49 | |||
self.top_layout.addLayout(self.top_grid_layout) | 50 | |||
51 | ||||
self.settings = Qt.QSettings("GNU Radio", "top_block") | 52 | |||
self.restoreGeometry(self.settings.value("geometry").toByteArray()) | 53 | |||
54 | ||||
################################################## | 55 | |||
# Variables | 56 | |||
################################################## | 57 | |||
self.samp_rate = samp_rate = 32000 | 58 | |||
self.port = port = 1001 | 59 | |||
self.offset_out1 = offset_out1 = 0 | 60 | |||
self.f_dds = f_dds = 0 | 61 | |||
self.addr = addr = "192.168.0.202" | 62 | |||
self.a_dds = a_dds = 0 | 63 | |||
64 | ||||
################################################## | 65 | |||
# Blocks | 66 | |||
################################################## | 67 | |||
self._offset_out1_range = Range(-8192, 8191, 100, 0, 200) | 68 | |||
self._offset_out1_win = RangeWidget(self._offset_out1_range, self.set_offset_out1, 'Offset DDS', "counter_slider", int) | 69 | |||
self.top_grid_layout.addWidget(self._offset_out1_win, 2, 0) | 70 | |||
self._f_dds_range = Range(0, 60000000, 100000, 0, 200) | 71 | |||
self._f_dds_win = RangeWidget(self._f_dds_range, self.set_f_dds, 'DDS frequency', "counter_slider", int) | 72 | |||
self.top_grid_layout.addWidget(self._f_dds_win, 0, 0) | 73 | |||
self._a_dds_range = Range(0, 8191, 128, 0, 200) | 74 | |||
self._a_dds_win = RangeWidget(self._a_dds_range, self.set_a_dds, 'DDS amplitude', "counter_slider", int) | 75 | |||
self.top_grid_layout.addWidget(self._a_dds_win, 1, 0) | 76 | |||
self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf( | 77 | |||
addr=addr, | 78 | |||
port=port, | 79 | |||
device='/dev/dds_freq', | 80 | |||
freq_ref=125000000, | 81 | |||
freq_dds=f_dds, | 82 | |||
acc_size=32, | 83 | |||
offset=0, | 84 | |||
) | 85 | |||
86 | ||||
self.add_const_set_offset_0_0 = redpitaya_gnuradio.add_const_set_offset( | 87 | |||
addr=addr, | 88 | |||
port=port, | 89 | |||
device='/dev/dds_ampl', | 90 | |||
const=a_dds, | 91 | |||
) | 92 | |||
93 | ||||
self.add_const_set_offset_0 = redpitaya_gnuradio.add_const_set_offset( | 94 | |||
addr=addr, | 95 | |||
port=port, | 96 | |||
device='/dev/dds_offset', | 97 | |||
const=offset_out1, | 98 | |||
) | 99 | |||
100 | ||||
101 | ||||
def closeEvent(self, event): | 102 | |||
self.settings = Qt.QSettings("GNU Radio", "top_block") | 103 | |||
self.settings.setValue("geometry", self.saveGeometry()) | 104 | |||
event.accept() | 105 | |||
106 | ||||
def get_samp_rate(self): | 107 | |||
return self.samp_rate | 108 | |||
109 | ||||
def set_samp_rate(self, samp_rate): | 110 | |||
self.samp_rate = samp_rate | 111 | |||
112 | ||||
def get_port(self): | 113 | |||
return self.port | 114 | |||
115 | ||||
def set_port(self, port): | 116 | |||
self.port = port | 117 | |||
118 | ||||
def get_offset_out1(self): | 119 | |||
return self.offset_out1 | 120 | |||
121 | ||||
def set_offset_out1(self, offset_out1): | 122 | |||
self.offset_out1 = offset_out1 | 123 | |||
self.add_const_set_offset_0.set_const(device='/dev/dds_offset', const=self.offset_out1) | 124 | |||
125 | ||||
def get_f_dds(self): | 126 | |||
return self.f_dds | 127 | |||
128 | ||||
def set_f_dds(self, f_dds): | 129 | |||
self.f_dds = f_dds | 130 | |||
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) | 131 | |||
132 | ||||
def get_addr(self): | 133 | |||
return self.addr | 134 | |||
135 | ||||
def set_addr(self, addr): | 136 |
redpitaya/gnuradio_blocks/dds_control.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>top_block</value> | 49 | 49 | <value>dds_control</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>(704, 24)</value> | 100 | 100 | <value>(704, 24)</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>128</value> | 132 | 132 | <value>128</value> | |
</param> | 133 | 133 | </param> | |
<param> | 134 | 134 | <param> | |
<key>stop</key> | 135 | 135 | <key>stop</key> | |
<value>8191</value> | 136 | 136 | <value>8191</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>(0, 248)</value> | 159 | 159 | <value>(0, 248)</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.202"</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>(488, 24)</value> | 190 | 190 | <value>(488, 24)</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>100000</value> | 222 | 222 | <value>100000</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>int</value> | 230 | 230 | <value>int</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>(328, 24)</value> | 253 | 253 | <value>(328, 24)</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>-8192</value> | 281 | 281 | <value>-8192</value> | |
</param> | 282 | 282 | </param> | |
<param> | 283 | 283 | <param> | |
<key>step</key> | 284 | 284 | <key>step</key> | |
<value>100</value> | 285 | 285 | <value>100</value> | |
</param> | 286 | 286 | </param> | |
<param> | 287 | 287 | <param> | |
<key>stop</key> | 288 | 288 | <key>stop</key> | |
<value>8191</value> | 289 | 289 | <value>8191</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>(0, 320)</value> | 312 | 312 | <value>(0, 320)</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>variable</key> | 328 | 328 | <key>variable</key> | |
<param> | 329 | 329 | <param> | |
<key>comment</key> | 330 | 330 | <key>comment</key> | |
<value></value> | 331 | 331 | <value></value> | |
</param> | 332 | 332 | </param> | |
<param> | 333 | 333 | <param> | |
<key>_enabled</key> | 334 | 334 | <key>_enabled</key> | |
<value>True</value> | 335 | 335 | <value>0</value> | |
</param> | 336 | 336 | </param> | |
<param> | 337 | 337 | <param> | |
<key>_coordinate</key> | 338 | 338 | <key>_coordinate</key> | |
<value>(8, 160)</value> | 339 | 339 | <value>(8, 160)</value> | |
</param> | 340 | 340 | </param> | |
<param> | 341 | 341 | <param> | |
<key>_rotation</key> | 342 | 342 | <key>_rotation</key> | |
<value>0</value> | 343 | 343 | <value>0</value> | |
</param> | 344 | 344 | </param> | |
<param> | 345 | 345 | <param> | |
<key>id</key> | 346 | 346 | <key>id</key> | |
<value>samp_rate</value> | 347 | 347 | <value>samp_rate</value> | |
</param> | 348 | 348 | </param> | |
<param> | 349 | 349 | <param> | |
<key>value</key> | 350 | 350 | <key>value</key> | |
<value>32000</value> | 351 | 351 | <value>32000</value> | |
</param> | 352 | 352 | </param> | |
</block> | 353 | 353 | </block> | |
<block> | 354 | 354 | <block> | |
<key>add_const_set_offset</key> | 355 | 355 | <key>add_const_set_offset</key> | |
<param> | 356 | 356 | <param> | |
<key>addr</key> | 357 | 357 | <key>addr</key> | |
<value>addr</value> | 358 | 358 | <value>addr</value> | |
</param> | 359 | 359 | </param> | |
<param> | 360 | 360 | <param> | |
<key>alias</key> | 361 | 361 | <key>alias</key> | |
<value></value> | 362 | 362 | <value></value> | |
</param> | 363 | 363 | </param> | |
<param> | 364 | 364 | <param> | |
<key>comment</key> | 365 | 365 | <key>comment</key> | |
<value></value> | 366 | 366 | <value></value> | |
</param> | 367 | 367 | </param> | |
<param> | 368 | 368 | <param> | |
<key>const</key> | 369 | 369 | <key>const</key> | |
<value>offset_out1</value> | 370 | 370 | <value>offset_out1</value> | |
</param> | 371 | 371 | </param> | |
<param> | 372 | 372 | <param> | |
<key>device</key> | 373 | 373 | <key>device</key> | |
<value>/dev/dds_offset</value> | 374 | 374 | <value>/dev/dds_offset</value> | |
</param> | 375 | 375 | </param> | |
<param> | 376 | 376 | <param> | |
<key>_enabled</key> | 377 | 377 | <key>_enabled</key> | |
<value>True</value> | 378 | 378 | <value>True</value> | |
</param> | 379 | 379 | </param> | |
<param> | 380 | 380 | <param> | |
<key>_coordinate</key> | 381 | 381 | <key>_coordinate</key> | |
<value>(304, 176)</value> | 382 | 382 | <value>(304, 176)</value> | |
</param> | 383 | 383 | </param> | |
<param> | 384 | 384 | <param> | |
<key>_rotation</key> | 385 | 385 | <key>_rotation</key> | |
<value>0</value> | 386 | 386 | <value>0</value> | |
</param> | 387 | 387 | </param> | |
<param> | 388 | 388 | <param> | |
<key>id</key> | 389 | 389 | <key>id</key> | |
<value>add_const_set_offset_0</value> | 390 | 390 | <value>add_const_set_offset_0</value> | |
</param> | 391 | 391 | </param> | |
<param> | 392 | 392 | <param> | |
<key>port</key> | 393 | 393 | <key>port</key> | |
<value>port</value> | 394 | 394 | <value>port</value> | |
</param> | 395 | 395 | </param> | |
</block> | 396 | 396 | </block> | |
<block> | 397 | 397 | <block> | |
<key>add_const_set_offset</key> | 398 | 398 | <key>add_const_set_offset</key> | |
<param> | 399 | 399 | <param> | |
<key>addr</key> | 400 | 400 | <key>addr</key> | |
<value>addr</value> | 401 | 401 | <value>addr</value> | |
</param> | 402 | 402 | </param> | |
<param> | 403 | 403 | <param> | |
<key>alias</key> | 404 | 404 | <key>alias</key> | |
<value></value> | 405 | 405 | <value></value> | |
</param> | 406 | 406 | </param> | |
<param> | 407 | 407 | <param> | |
<key>comment</key> | 408 | 408 | <key>comment</key> | |
<value></value> | 409 | 409 | <value></value> | |
</param> | 410 | 410 | </param> | |
<param> | 411 | 411 | <param> | |
<key>const</key> | 412 | 412 | <key>const</key> | |
<value>a_dds</value> | 413 | 413 | <value>a_dds</value> | |
</param> | 414 | 414 | </param> | |
<param> | 415 | 415 | <param> | |
<key>device</key> | 416 | 416 | <key>device</key> | |
<value>/dev/dds_ampl</value> | 417 | 417 | <value>/dev/dds_ampl</value> | |
</param> | 418 | 418 | </param> | |
<param> | 419 | 419 | <param> | |
<key>_enabled</key> | 420 | 420 | <key>_enabled</key> | |
<value>True</value> | 421 | 421 | <value>True</value> | |
</param> | 422 | 422 | </param> | |
<param> | 423 | 423 | <param> | |
<key>_coordinate</key> | 424 | 424 | <key>_coordinate</key> | |
<value>(704, 176)</value> | 425 | 425 | <value>(704, 176)</value> | |
</param> | 426 | 426 | </param> | |
<param> | 427 | 427 | <param> | |
<key>_rotation</key> | 428 | 428 | <key>_rotation</key> | |
<value>0</value> | 429 | 429 | <value>0</value> | |
</param> | 430 | 430 | </param> | |
<param> | 431 | 431 | <param> | |
<key>id</key> | 432 | 432 | <key>id</key> | |
<value>add_const_set_offset_0_0</value> | 433 | 433 | <value>add_const_set_offset_0_0</value> | |
</param> | 434 | 434 | </param> | |
<param> | 435 | 435 | <param> | |
<key>port</key> | 436 | 436 | <key>port</key> | |
<value>port</value> | 437 | 437 | <value>port</value> | |
</param> | 438 | 438 | </param> | |
</block> | 439 | 439 | </block> | |
<block> | 440 | 440 | <block> | |
<key>nco_counter_send_conf</key> | 441 | 441 | <key>nco_counter_send_conf</key> | |
<param> | 442 | 442 | <param> | |
<key>acc_size</key> | 443 | 443 | <key>acc_size</key> | |
<value>32</value> | 444 | 444 | <value>32</value> | |
</param> | 445 | 445 | </param> | |
<param> | 446 | 446 | <param> | |
<key>addr</key> | 447 | 447 | <key>addr</key> | |
<value>addr</value> | 448 | 448 | <value>addr</value> | |
</param> | 449 | 449 | </param> | |
<param> | 450 | 450 | <param> | |
<key>alias</key> | 451 | 451 | <key>alias</key> | |
<value></value> | 452 | 452 | <value></value> | |
</param> | 453 | 453 | </param> | |
<param> | 454 | 454 | <param> | |
<key>comment</key> | 455 | 455 | <key>comment</key> | |
<value></value> | 456 | 456 | <value></value> | |
</param> | 457 | 457 | </param> | |
<param> | 458 | 458 | <param> | |
<key>device</key> | 459 | 459 | <key>device</key> | |
<value>/dev/dds_freq</value> | 460 | 460 | <value>/dev/dds_freq</value> | |
</param> | 461 | 461 | </param> | |
<param> | 462 | 462 | <param> | |
<key>_enabled</key> | 463 | 463 | <key>_enabled</key> | |
<value>True</value> | 464 | 464 | <value>True</value> | |
</param> | 465 | 465 | </param> | |
<param> | 466 | 466 | <param> | |
<key>freq_dds</key> | 467 | 467 | <key>freq_dds</key> | |
<value>f_dds</value> | 468 | 468 | <value>f_dds</value> | |
</param> | 469 | 469 | </param> | |
<param> | 470 | 470 | <param> | |
<key>freq_ref</key> | 471 | 471 | <key>freq_ref</key> | |
<value>125000000</value> | 472 | 472 | <value>125000000</value> | |
</param> | 473 | 473 | </param> | |
<param> | 474 | 474 | <param> | |
<key>_coordinate</key> | 475 | 475 | <key>_coordinate</key> | |
<value>(488, 176)</value> | 476 | 476 | <value>(488, 176)</value> | |
</param> | 477 | 477 | </param> | |
<param> | 478 | 478 | <param> | |
<key>_rotation</key> | 479 | 479 | <key>_rotation</key> | |
<value>0</value> | 480 | 480 | <value>0</value> | |
</param> | 481 | 481 | </param> | |
<param> | 482 | 482 | <param> | |
<key>id</key> | 483 | 483 | <key>id</key> | |
<value>nco_counter_send_conf_0</value> | 484 | 484 | <value>nco_counter_send_conf_0</value> | |
</param> | 485 | 485 | </param> | |
<param> | 486 | 486 | <param> | |
<key>offset</key> | 487 | 487 | <key>offset</key> | |
<value>0</value> | 488 | 488 | <value>0</value> | |
</param> | 489 | 489 | </param> | |
<param> | 490 | 490 | <param> | |
<key>port</key> | 491 | 491 | <key>port</key> | |
<value>port</value> | 492 | 492 | <value>port</value> | |
</param> | 493 | 493 | </param> | |
</block> | 494 | 494 | </block> | |
</flow_graph> | 495 | 495 | </flow_graph> | |
496 | 496 | |||
redpitaya/gnuradio_blocks/dds_control.py
File was created | 1 | #!/usr/bin/env python2 | ||
2 | # -*- coding: utf-8 -*- | |||
3 | ################################################## | |||
4 | # GNU Radio Python Flow Graph | |||
5 | # Title: Dds Control | |||
6 | # Generated: Tue Mar 21 12:05:52 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 dds_control(gr.top_block, Qt.QWidget): | |||
31 | ||||
32 | def __init__(self): | |||
33 | gr.top_block.__init__(self, "Dds Control") | |||
34 | Qt.QWidget.__init__(self) | |||
35 | self.setWindowTitle("Dds Control") | |||
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", "dds_control") | |||
53 | self.restoreGeometry(self.settings.value("geometry").toByteArray()) | |||
54 | ||||
55 | ################################################## | |||
56 | # Variables | |||
57 | ################################################## | |||
58 | self.port = port = 1001 | |||
59 | self.offset_out1 = offset_out1 = 0 | |||
60 | self.f_dds = f_dds = 0 | |||
61 | self.addr = addr = "192.168.0.201" | |||
62 | self.a_dds = a_dds = 0 | |||
63 | ||||
64 | ################################################## | |||
65 | # Blocks | |||
66 | ################################################## | |||
67 | self._offset_out1_range = Range(-8192, 8191, 100, 0, 200) | |||
68 | self._offset_out1_win = RangeWidget(self._offset_out1_range, self.set_offset_out1, 'Offset DDS', "counter_slider", int) | |||
69 | self.top_grid_layout.addWidget(self._offset_out1_win, 2, 0) | |||
70 | self._f_dds_range = Range(0, 60000000, 100000, 0, 200) | |||
71 | self._f_dds_win = RangeWidget(self._f_dds_range, self.set_f_dds, 'DDS frequency', "counter_slider", int) | |||
72 | self.top_grid_layout.addWidget(self._f_dds_win, 0, 0) | |||
73 | self._a_dds_range = Range(0, 8191, 128, 0, 200) | |||
74 | self._a_dds_win = RangeWidget(self._a_dds_range, self.set_a_dds, 'DDS amplitude', "counter_slider", int) | |||
75 | self.top_grid_layout.addWidget(self._a_dds_win, 1, 0) | |||
76 | self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf( | |||
77 | addr=addr, | |||
78 | port=port, | |||
79 | device='/dev/dds_freq', | |||
80 | freq_ref=125000000, | |||
81 | freq_dds=f_dds, | |||
82 | acc_size=32, | |||
83 | offset=0, | |||
84 | ) | |||
85 | ||||
86 | self.add_const_set_offset_0_0 = redpitaya_gnuradio.add_const_set_offset( | |||
87 | addr=addr, | |||
88 | port=port, | |||
89 | device='/dev/dds_ampl', | |||
90 | const=a_dds, | |||
91 | ) | |||
92 | ||||
93 | self.add_const_set_offset_0 = redpitaya_gnuradio.add_const_set_offset( | |||
94 | addr=addr, | |||
95 | port=port, | |||
96 | device='/dev/dds_offset', | |||
97 | const=offset_out1, | |||
98 | ) | |||
99 | ||||
100 | ||||
101 | def closeEvent(self, event): | |||
102 | self.settings = Qt.QSettings("GNU Radio", "dds_control") | |||
103 | self.settings.setValue("geometry", self.saveGeometry()) | |||
104 | event.accept() | |||
105 | ||||
106 | def get_port(self): | |||
107 | return self.port | |||
108 | ||||
109 | def set_port(self, port): | |||
110 | self.port = port | |||
111 | ||||
112 | def get_offset_out1(self): | |||
113 | return self.offset_out1 | |||
114 | ||||
115 | def set_offset_out1(self, offset_out1): | |||
116 | self.offset_out1 = offset_out1 | |||
117 | self.add_const_set_offset_0.set_const(device='/dev/dds_offset', const=self.offset_out1) | |||
118 | ||||
119 | def get_f_dds(self): | |||
120 | return self.f_dds | |||
121 | ||||
122 | def set_f_dds(self, f_dds): | |||
123 | self.f_dds = f_dds | |||
124 | 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) | |||
125 | ||||
126 | def get_addr(self): | |||
127 | return self.addr | |||
128 | ||||
129 | def set_addr(self, addr): | |||
130 | self.addr = addr | |||
131 |
redpitaya/gnuradio_blocks/top_block.py
#!/usr/bin/env python2 | 1 | File was deleted | ||
# -*- coding: utf-8 -*- | 2 | |||
################################################## | 3 | |||
# GNU Radio Python Flow Graph | 4 | |||
# Title: Top Block | 5 | |||
# Generated: Mon Feb 13 22:24:05 2017 | 6 | |||
################################################## | 7 | |||
8 | ||||
if __name__ == '__main__': | 9 | |||
import ctypes | 10 | |||
import sys | 11 | |||
if sys.platform.startswith('linux'): | 12 | |||
try: | 13 | |||
x11 = ctypes.cdll.LoadLibrary('libX11.so') | 14 | |||
x11.XInitThreads() | 15 | |||
except: | 16 | |||
print "Warning: failed to XInitThreads()" | 17 | |||
18 | ||||
from PyQt4 import Qt | 19 | |||
from gnuradio import eng_notation | 20 | |||
from gnuradio import gr | 21 | |||
from gnuradio.eng_option import eng_option | 22 | |||
from gnuradio.filter import firdes | 23 | |||
from gnuradio.qtgui import Range, RangeWidget | 24 | |||
from optparse import OptionParser | 25 | |||
import redpitaya_gnuradio | 26 | |||
import sys | 27 | |||
28 | ||||
29 | ||||
class top_block(gr.top_block, Qt.QWidget): | 30 | |||
31 | ||||
def __init__(self): | 32 | |||
gr.top_block.__init__(self, "Top Block") | 33 | |||
Qt.QWidget.__init__(self) | 34 | |||
self.setWindowTitle("Top Block") | 35 | |||
try: | 36 | |||
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) | 37 | |||
except: | 38 | |||
pass | 39 | |||
self.top_scroll_layout = Qt.QVBoxLayout() | 40 | |||
self.setLayout(self.top_scroll_layout) | 41 | |||
self.top_scroll = Qt.QScrollArea() | 42 | |||
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) | 43 | |||
self.top_scroll_layout.addWidget(self.top_scroll) | 44 | |||
self.top_scroll.setWidgetResizable(True) | 45 | |||
self.top_widget = Qt.QWidget() | 46 | |||
self.top_scroll.setWidget(self.top_widget) | 47 | |||
self.top_layout = Qt.QVBoxLayout(self.top_widget) | 48 | |||
self.top_grid_layout = Qt.QGridLayout() | 49 | |||
self.top_layout.addLayout(self.top_grid_layout) | 50 | |||
51 | ||||
self.settings = Qt.QSettings("GNU Radio", "top_block") | 52 | |||
self.restoreGeometry(self.settings.value("geometry").toByteArray()) | 53 | |||
54 | ||||
################################################## | 55 | |||
# Variables | 56 | |||
################################################## | 57 | |||
self.samp_rate = samp_rate = 32000 | 58 | |||
self.port = port = 1001 | 59 | |||
self.offset_out1 = offset_out1 = 0 | 60 | |||
self.f_dds = f_dds = 0 | 61 | |||
self.addr = addr = "192.168.0.202" | 62 | |||
self.a_dds = a_dds = 0 | 63 | |||
64 | ||||
################################################## | 65 | |||
# Blocks | 66 | |||
################################################## | 67 | |||
self._offset_out1_range = Range(-8192, 8191, 100, 0, 200) | 68 | |||
self._offset_out1_win = RangeWidget(self._offset_out1_range, self.set_offset_out1, 'Offset DDS', "counter_slider", int) | 69 | |||
self.top_grid_layout.addWidget(self._offset_out1_win, 2, 0) | 70 | |||
self._f_dds_range = Range(0, 60000000, 100000, 0, 200) | 71 | |||
self._f_dds_win = RangeWidget(self._f_dds_range, self.set_f_dds, 'DDS frequency', "counter_slider", int) | 72 | |||
self.top_grid_layout.addWidget(self._f_dds_win, 0, 0) | 73 | |||
self._a_dds_range = Range(0, 8191, 128, 0, 200) | 74 | |||
self._a_dds_win = RangeWidget(self._a_dds_range, self.set_a_dds, 'DDS amplitude', "counter_slider", int) | 75 | |||
self.top_grid_layout.addWidget(self._a_dds_win, 1, 0) | 76 | |||
self.nco_counter_send_conf_0 = redpitaya_gnuradio.nco_counter_send_conf( | 77 | |||
addr=addr, | 78 | |||
port=port, | 79 | |||
device='/dev/dds_freq', | 80 | |||
freq_ref=125000000, | 81 | |||
freq_dds=f_dds, | 82 | |||
acc_size=32, | 83 | |||
offset=0, | 84 | |||
) | 85 | |||
86 | ||||
self.add_const_set_offset_0_0 = redpitaya_gnuradio.add_const_set_offset( | 87 | |||
addr=addr, | 88 | |||
port=port, | 89 | |||
device='/dev/dds_ampl', | 90 | |||
const=a_dds, | 91 | |||
) | 92 | |||
93 | ||||
self.add_const_set_offset_0 = redpitaya_gnuradio.add_const_set_offset( | 94 | |||
addr=addr, | 95 | |||
port=port, | 96 | |||
device='/dev/dds_offset', | 97 | |||
const=offset_out1, | 98 | |||
) | 99 | |||
100 | ||||
101 | ||||
def closeEvent(self, event): | 102 | |||
self.settings = Qt.QSettings("GNU Radio", "top_block") | 103 | |||
self.settings.setValue("geometry", self.saveGeometry()) | 104 | |||
event.accept() | 105 | |||
106 | ||||
def get_samp_rate(self): | 107 | |||
return self.samp_rate | 108 | |||
109 | ||||
def set_samp_rate(self, samp_rate): | 110 | |||
self.samp_rate = samp_rate | 111 | |||
112 | ||||
def get_port(self): | 113 | |||
return self.port | 114 | |||
115 | ||||
def set_port(self, port): | 116 | |||
self.port = port | 117 | |||
118 | ||||
def get_offset_out1(self): | 119 | |||
return self.offset_out1 | 120 | |||
121 | ||||
def set_offset_out1(self, offset_out1): | 122 | |||
self.offset_out1 = offset_out1 | 123 | |||
self.add_const_set_offset_0.set_const(device='/dev/dds_offset', const=self.offset_out1) | 124 | |||
125 | ||||
def get_f_dds(self): | 126 | |||
return self.f_dds | 127 | |||
128 | ||||
def set_f_dds(self, f_dds): | 129 | |||
self.f_dds = f_dds | 130 | |||
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) | 131 | |||
132 | ||||
def get_addr(self): | 133 | |||
return self.addr | 134 | |||
135 | ||||
def set_addr(self, addr): | 136 |
sdr/fm_radio/fm_radio.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: Fm Radio | 5 | 5 | # Title: Fm Radio | |
# Generated: Fri Mar 17 17:36:39 2017 | 6 | 6 | # Generated: Tue Mar 21 14:48: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 analog | 20 | 20 | from gnuradio import analog | |
from gnuradio import audio | 21 | 21 | from gnuradio import audio | |
from gnuradio import eng_notation | 22 | 22 | from gnuradio import eng_notation | |
from gnuradio import filter | 23 | 23 | from gnuradio import filter | |
from gnuradio import gr | 24 | 24 | from gnuradio import gr | |
from gnuradio import qtgui | 25 | 25 | from gnuradio import qtgui | |
from gnuradio.eng_option import eng_option | 26 | 26 | from gnuradio.eng_option import eng_option | |
from gnuradio.filter import firdes | 27 | 27 | from gnuradio.filter import firdes | |
from gnuradio.qtgui import Range, RangeWidget | 28 | 28 | from gnuradio.qtgui import Range, RangeWidget | |
from optparse import OptionParser | 29 | 29 | from optparse import OptionParser | |
import osmosdr | 30 | 30 | import osmosdr | |
import sip | 31 | 31 | import sip | |
import sys | 32 | 32 | import sys | |
import time | 33 | 33 | import time | |
34 | 34 | |||
35 | 35 | |||
class fm_radio(gr.top_block, Qt.QWidget): | 36 | 36 | class fm_radio(gr.top_block, Qt.QWidget): | |
37 | 37 | |||
def __init__(self): | 38 | 38 | def __init__(self): | |
gr.top_block.__init__(self, "Fm Radio") | 39 | 39 | gr.top_block.__init__(self, "Fm Radio") | |
Qt.QWidget.__init__(self) | 40 | 40 | Qt.QWidget.__init__(self) | |
self.setWindowTitle("Fm Radio") | 41 | 41 | self.setWindowTitle("Fm Radio") | |
try: | 42 | 42 | try: | |
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) | 43 | 43 | self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) | |
except: | 44 | 44 | except: | |
pass | 45 | 45 | pass | |
self.top_scroll_layout = Qt.QVBoxLayout() | 46 | 46 | self.top_scroll_layout = Qt.QVBoxLayout() | |
self.setLayout(self.top_scroll_layout) | 47 | 47 | self.setLayout(self.top_scroll_layout) | |
self.top_scroll = Qt.QScrollArea() | 48 | 48 | self.top_scroll = Qt.QScrollArea() | |
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) | 49 | 49 | self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) | |
self.top_scroll_layout.addWidget(self.top_scroll) | 50 | 50 | self.top_scroll_layout.addWidget(self.top_scroll) | |
self.top_scroll.setWidgetResizable(True) | 51 | 51 | self.top_scroll.setWidgetResizable(True) | |
self.top_widget = Qt.QWidget() | 52 | 52 | self.top_widget = Qt.QWidget() | |
self.top_scroll.setWidget(self.top_widget) | 53 | 53 | self.top_scroll.setWidget(self.top_widget) | |
self.top_layout = Qt.QVBoxLayout(self.top_widget) | 54 | 54 | self.top_layout = Qt.QVBoxLayout(self.top_widget) | |
self.top_grid_layout = Qt.QGridLayout() | 55 | 55 | self.top_grid_layout = Qt.QGridLayout() | |
self.top_layout.addLayout(self.top_grid_layout) | 56 | 56 | self.top_layout.addLayout(self.top_grid_layout) | |
57 | 57 | |||
self.settings = Qt.QSettings("GNU Radio", "fm_radio") | 58 | 58 | self.settings = Qt.QSettings("GNU Radio", "fm_radio") | |
self.restoreGeometry(self.settings.value("geometry").toByteArray()) | 59 | 59 | self.restoreGeometry(self.settings.value("geometry").toByteArray()) | |
60 | 60 | |||
################################################## | 61 | 61 | ################################################## | |
# Variables | 62 | 62 | # Variables | |
################################################## | 63 | 63 | ################################################## | |
self.samp_rate = samp_rate = 48e3 | 64 | 64 | self.samp_rate = samp_rate = 48e3 | |
self.freq = freq = 160011000 | 65 | 65 | self.freq = freq = 160011000 | |
66 | 66 | |||
################################################## | 67 | 67 | ################################################## | |
# Blocks | 68 | 68 | # Blocks | |
################################################## | 69 | 69 | ################################################## | |
self._freq_range = Range(52e6, 2e9, 1e3, 160011000, 200) | 70 | 70 | self._freq_range = Range(52e6, 2e9, 1e3, 160011000, 200) | |
self._freq_win = RangeWidget(self._freq_range, self.set_freq, "freq", "counter_slider", float) | 71 | 71 | self._freq_win = RangeWidget(self._freq_range, self.set_freq, "freq", "counter_slider", float) | |
self.top_grid_layout.addWidget(self._freq_win, 0,0) | 72 | 72 | self.top_grid_layout.addWidget(self._freq_win, 0,0) | |
self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + '' ) | 73 | 73 | self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + '' ) | |
self.rtlsdr_source_0.set_sample_rate(samp_rate*10*4) | 74 | 74 | self.rtlsdr_source_0.set_sample_rate(samp_rate*10*4) | |
self.rtlsdr_source_0.set_center_freq(freq, 0) | 75 | 75 | self.rtlsdr_source_0.set_center_freq(freq, 0) | |
self.rtlsdr_source_0.set_freq_corr(0, 0) | 76 | 76 | self.rtlsdr_source_0.set_freq_corr(0, 0) | |
self.rtlsdr_source_0.set_dc_offset_mode(0, 0) | 77 | 77 | self.rtlsdr_source_0.set_dc_offset_mode(0, 0) | |
self.rtlsdr_source_0.set_iq_balance_mode(0, 0) | 78 | 78 | self.rtlsdr_source_0.set_iq_balance_mode(0, 0) | |
self.rtlsdr_source_0.set_gain_mode(False, 0) | 79 | 79 | self.rtlsdr_source_0.set_gain_mode(False, 0) | |
self.rtlsdr_source_0.set_gain(20, 0) | 80 | 80 | self.rtlsdr_source_0.set_gain(20, 0) | |
self.rtlsdr_source_0.set_if_gain(20, 0) | 81 | 81 | self.rtlsdr_source_0.set_if_gain(20, 0) | |
self.rtlsdr_source_0.set_bb_gain(20, 0) | 82 | 82 | self.rtlsdr_source_0.set_bb_gain(20, 0) | |
self.rtlsdr_source_0.set_antenna('', 0) | 83 | 83 | self.rtlsdr_source_0.set_antenna('', 0) | |
self.rtlsdr_source_0.set_bandwidth(0, 0) | 84 | 84 | self.rtlsdr_source_0.set_bandwidth(0, 0) | |
85 | 85 | |||
self.qtgui_sink_x_1 = qtgui.sink_f( | 86 | 86 | self.qtgui_sink_x_1 = qtgui.sink_f( | |
1024, #fftsize | 87 | 87 | 1024, #fftsize | |
firdes.WIN_BLACKMAN_hARRIS, #wintype | 88 | 88 | firdes.WIN_BLACKMAN_hARRIS, #wintype | |
0, #fc | 89 | 89 | 0, #fc | |
samp_rate*10, #bw | 90 | 90 | samp_rate*10, #bw | |
"", #name | 91 | 91 | "", #name | |
True, #plotfreq | 92 | 92 | True, #plotfreq | |
True, #plotwaterfall | 93 | 93 | True, #plotwaterfall | |
True, #plottime | 94 | 94 | True, #plottime | |
True, #plotconst | 95 | 95 | True, #plotconst | |
) | 96 | 96 | ) | |
self.qtgui_sink_x_1.set_update_time(1.0/10) | 97 | 97 | self.qtgui_sink_x_1.set_update_time(1.0/10) | |
self._qtgui_sink_x_1_win = sip.wrapinstance(self.qtgui_sink_x_1.pyqwidget(), Qt.QWidget) | 98 | 98 | self._qtgui_sink_x_1_win = sip.wrapinstance(self.qtgui_sink_x_1.pyqwidget(), Qt.QWidget) | |
self.top_grid_layout.addWidget(self._qtgui_sink_x_1_win, 10,0) | 99 | 99 | self.top_grid_layout.addWidget(self._qtgui_sink_x_1_win, 10,0) | |
100 | 100 | |||
self.qtgui_sink_x_1.enable_rf_freq(False) | 101 | 101 | self.qtgui_sink_x_1.enable_rf_freq(False) | |
102 | 102 | |||
103 | 103 | |||
104 | 104 | |||
self.qtgui_sink_x_0 = qtgui.sink_c( | 105 | 105 | self.qtgui_sink_x_0 = qtgui.sink_c( | |
1024, #fftsize | 106 | 106 | 1024, #fftsize | |
firdes.WIN_BLACKMAN_hARRIS, #wintype | 107 | 107 | firdes.WIN_BLACKMAN_hARRIS, #wintype | |
0, #fc | 108 | 108 | 0, #fc | |
samp_rate*10*4, #bw | 109 | 109 | samp_rate*10*4, #bw | |
"", #name | 110 | 110 | "", #name | |
True, #plotfreq | 111 | 111 | True, #plotfreq | |
True, #plotwaterfall | 112 | 112 | True, #plotwaterfall | |
True, #plottime | 113 | 113 | True, #plottime | |
True, #plotconst | 114 | 114 | True, #plotconst | |
) | 115 | 115 | ) | |
self.qtgui_sink_x_0.set_update_time(1.0/10) | 116 | 116 | self.qtgui_sink_x_0.set_update_time(1.0/10) | |
self._qtgui_sink_x_0_win = sip.wrapinstance(self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget) | 117 | 117 | self._qtgui_sink_x_0_win = sip.wrapinstance(self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget) | |
self.top_grid_layout.addWidget(self._qtgui_sink_x_0_win, 9,0) | 118 | 118 | self.top_grid_layout.addWidget(self._qtgui_sink_x_0_win, 9,0) | |
119 | 119 | |||
self.qtgui_sink_x_0.enable_rf_freq(False) | 120 | 120 | self.qtgui_sink_x_0.enable_rf_freq(False) | |
121 | 121 | |||
122 | 122 | |||
123 | 123 | |||
self.low_pass_filter_0_0 = filter.fir_filter_fff(10, firdes.low_pass( | 124 | 124 | self.low_pass_filter_0_0 = filter.fir_filter_fff(10, firdes.low_pass( | |
1, samp_rate*10, samp_rate*2, 1e4, firdes.WIN_HAMMING, 6.76)) | 125 | 125 | 1, samp_rate*10, samp_rate*2, 1e4, firdes.WIN_HAMMING, 6.76)) | |
self.low_pass_filter_0 = filter.fir_filter_ccf(4, firdes.low_pass( | 126 | 126 | self.low_pass_filter_0 = filter.fir_filter_ccf(4, firdes.low_pass( | |
1, samp_rate*10*4, 500e3, 10e3, firdes.WIN_HAMMING, 6.76)) | 127 | 127 | 1, samp_rate*10*4, 500e3, 10e3, firdes.WIN_HAMMING, 6.76)) | |
self.audio_sink_0 = audio.sink(int(samp_rate), '', True) | 128 | 128 | self.audio_sink_0 = audio.sink(int(samp_rate), '', True) | |
self.analog_wfm_rcv_0 = analog.wfm_rcv( | 129 | 129 | self.analog_wfm_rcv_0 = analog.wfm_rcv( | |
quad_rate=samp_rate*10, | 130 | 130 | quad_rate=samp_rate*10, | |
audio_decimation=1, | 131 | 131 | audio_decimation=1, | |
) | 132 | 132 | ) | |
133 | 133 | |||
################################################## | 134 | 134 | ################################################## | |
# Connections | 135 | 135 | # Connections | |
################################################## | 136 | 136 | ################################################## | |
self.connect((self.analog_wfm_rcv_0, 0), (self.low_pass_filter_0_0, 0)) | 137 | 137 | self.connect((self.analog_wfm_rcv_0, 0), (self.low_pass_filter_0_0, 0)) | |
self.connect((self.analog_wfm_rcv_0, 0), (self.qtgui_sink_x_1, 0)) | 138 | 138 | self.connect((self.analog_wfm_rcv_0, 0), (self.qtgui_sink_x_1, 0)) | |
self.connect((self.low_pass_filter_0, 0), (self.analog_wfm_rcv_0, 0)) | 139 | 139 | self.connect((self.low_pass_filter_0, 0), (self.analog_wfm_rcv_0, 0)) | |
self.connect((self.low_pass_filter_0_0, 0), (self.audio_sink_0, 0)) | 140 | 140 | self.connect((self.low_pass_filter_0_0, 0), (self.audio_sink_0, 0)) | |
self.connect((self.rtlsdr_source_0, 0), (self.low_pass_filter_0, 0)) | 141 | 141 | self.connect((self.rtlsdr_source_0, 0), (self.low_pass_filter_0, 0)) | |
self.connect((self.rtlsdr_source_0, 0), (self.qtgui_sink_x_0, 0)) | 142 | 142 | self.connect((self.rtlsdr_source_0, 0), (self.qtgui_sink_x_0, 0)) | |
143 | 143 | |||
def closeEvent(self, event): | 144 | 144 | def closeEvent(self, event): | |
self.settings = Qt.QSettings("GNU Radio", "fm_radio") | 145 | 145 | self.settings = Qt.QSettings("GNU Radio", "fm_radio") | |
self.settings.setValue("geometry", self.saveGeometry()) | 146 | 146 | self.settings.setValue("geometry", self.saveGeometry()) | |
event.accept() | 147 | 147 | event.accept() | |
148 | 148 | |||
def get_samp_rate(self): | 149 | 149 | def get_samp_rate(self): | |
return self.samp_rate | 150 | 150 | return self.samp_rate | |
151 | 151 | |||
def set_samp_rate(self, samp_rate): | 152 | 152 | def set_samp_rate(self, samp_rate): | |
self.samp_rate = samp_rate | 153 | 153 | self.samp_rate = samp_rate | |
self.rtlsdr_source_0.set_sample_rate(self.samp_rate*10*4) | 154 | 154 | self.rtlsdr_source_0.set_sample_rate(self.samp_rate*10*4) | |
self.qtgui_sink_x_1.set_frequency_range(0, self.samp_rate*10) | 155 | 155 | self.qtgui_sink_x_1.set_frequency_range(0, self.samp_rate*10) | |
self.qtgui_sink_x_0.set_frequency_range(0, self.samp_rate*10*4) | 156 | 156 | self.qtgui_sink_x_0.set_frequency_range(0, self.samp_rate*10*4) | |
self.low_pass_filter_0_0.set_taps(firdes.low_pass(1, self.samp_rate*10, self.samp_rate*2, 1e4, firdes.WIN_HAMMING, 6.76)) | 157 | 157 | self.low_pass_filter_0_0.set_taps(firdes.low_pass(1, self.samp_rate*10, self.samp_rate*2, 1e4, firdes.WIN_HAMMING, 6.76)) | |
self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate*10*4, 500e3, 10e3, firdes.WIN_HAMMING, 6.76)) | 158 | 158 | self.low_pass_filter_0.set_taps(firdes.low_pass(1, self.samp_rate*10*4, 500e3, 10e3, firdes.WIN_HAMMING, 6.76)) | |
159 | 159 |