close
Warning:
Can't synchronize with repository "(default)" (/common/SVN/crkit does not appear to be a Subversion repository.). Look in the Trac log for more information.
- Timestamp:
-
Aug 1, 2014, 3:17:21 AM (10 years ago)
- Author:
-
seskar
- Comment:
-
--
Legend:
- Unmodified
- Added
- Removed
- Modified
-
v1
|
v2
|
|
1 | | == wiserd == |
| 1 | === wiserd === |
2 | 2 | |
3 | | [[TOC(Documentation/dSDR/*, depth=2)]] |
| 3 | [[TOC(wiser/mSoftware* )]] |
4 | 4 | |
5 | 5 | '''wiserd''' was developed as a basic software building block of a distributed frequency-domain based spectrum sensing system consisting of a number of deployed spectrum sensors (SDR nodes) that are managed by the centralized controller. The main goal was to provision the SDR node with a monolithic (i.e. simple to deploy) relatively portable (i.e. with minimal number of software dependencies) application with fft based processing of time-domain RF signals that has ability to control RF and spectrum sensing parameters. Over time, the '''wiserd''' grew up to include other (not necessarily frequency domain and not receiver only) modules. The [http://en.wikipedia.org/wiki/Daemon_%28computing%29 daemon type C++ application] is divided into modules and is multithreaded. The block-diagram of the application is shown in Figure 1. It consist of the following functional modules: |
… |
… |
|
18 | 18 | The '''wiserd''' code was written using [http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml Google style]. |
19 | 19 | |
20 | | === Receiver modules === |
| 20 | ==== Receiver modules ==== |
21 | 21 | |
22 | 22 | 1. '''fft_movavg_udp''': performs the FFT on the time samples received from the receiver module, calculates the moving average and sends the results via UDP. The consumer name used to add the consumer while using the program is "fftmovingavgudp". Needed parameters: FFT length, averaging window length, UDP address and port. |
… |
… |
|
26 | 26 | 1. '''fft_sigpower_oml''': performs the FFT on the time samples receivd from the receiver module, calculates the peak power in dBm and 3dB bandwidth each second, and on used command sends the results to the OML server. Needed parameters: FFT length, OML server address and port (use server name "FILE" to store locally), OML filename. |
27 | 27 | |
28 | | === Transmitter modules === |
| 28 | ==== Transmitter modules ==== |
29 | 29 | |
30 | 30 | 1. '''signal_from_file''': reads IQ time samples stored as complex floats from a file and sends them to the transmitting module. Producer name is "signalfromfile". Needed parameters: file name. |
31 | 31 | 1. '''waveform''': has a number of predefined waveforms to be sent to the transmitting module. Consumer name is "waveform". Needed parameters: waveform type, waveform frequency (depending on the type). |
32 | 32 | |
33 | | === Usage === |
| 33 | ==== Usage ==== |
34 | 34 | |
35 | 35 | The commands may be entered in the command line or sent via TCP. The default port is 5123. The list of commands with their syntax: |
36 | 36 | |
37 | | ==== get ==== |
| 37 | ===== get ===== |
38 | 38 | '''get''' command is used to obtain values of parameters of certain modules. The user must use the correct module (uhd, rx and tx) when trying to access a parameter. For example, the receiver frequency, called rx_freq, is a parameter of the radio module (uhd), since it is set using the radio device driver. On the other hand, FFT length or the moving average window or anything the receiver consumers might need is a part of the receiver module (rx). For example, the command to get the current value of the receiver frequency is: |
39 | 39 | {{{ |
… |
… |
|
41 | 41 | }}} |
42 | 42 | |
43 | | ==== set ==== |
| 43 | ===== set ===== |
44 | 44 | '''set''' command is used to set values of the parameters. It's similar to "get", with the addition of the value at the end. Example: |
45 | 45 | {{{ |
… |
… |
|
47 | 47 | }}} |
48 | 48 | |
49 | | ==== add ==== |
| 49 | ===== add ===== |
50 | 50 | '''"add"''' command is used to add a consumer to the transmitting or receiving module. Examples: |
51 | 51 | {{{ |
… |
… |
|
54 | 54 | }}} |
55 | 55 | |
56 | | ==== delete ==== |
| 56 | ===== delete ===== |
57 | 57 | '''"delete"''' command deletes (stops) an added producer/consumer from the transmitting or receiving module. Examples: |
58 | 58 | {{{ |
… |
… |
|
60 | 60 | }}} |
61 | 61 | |
62 | | ==== scan ==== |
| 62 | ===== scan ===== |
63 | 63 | "scan" is a procedure that reads a script from a file, and then follows it to perform scanning of the spectrum by repeatedly adding the store_to_file consumer, and then deleting it when the work is done, for different values of receiving parameters. It has a single parameter: the file name from which the script is loaded. The input file is a textual file. The first line contains a single number N, the number of times the store_to_file will be run, followed by N lines containing 4 parameters each: central receiver frequency, receiver sampling rate, receiver gain and the required number of samples to be stored. |
64 | 64 | |
65 | | === Module Parameters === |
| 65 | ==== Module Parameters ==== |
66 | 66 | |
67 | 67 | || Receiver module ('''rx''') || |
… |
… |
|
93 | 93 | || clock_ref || USRP radio clock reference || |
94 | 94 | |
95 | | === Development === |
| 95 | ==== Development ==== |
96 | 96 | |
97 | 97 | The latest version of the '''wiserd''' code is available in the [source:wiserd git repository]. To check out the latest code: |