root/documentation/ossie/user-guide-0.8.1/UserGuide.tex @ 10577

Revision 10577, 17.3 KB (checked in by Snyder.Jason, 2 years ago)

updates for multi-select in OEF and wavecli.py

Line 
1% ------------------------------------------------------------------
2%
3%   TITLE: OSSIE Installation and User Guide 0.8.1
4% AUTHORS: Mike Ekoniak, Matt Carrick, Drew Cormier, Christopher Covington,
5%          Carl B. Dietrich, Joseph Gaeddert, Benjamin Hilburn,
6%          C. Ian Phelps, Shereef Sayed, Jason Snyder, Haris Volos
7% CREATED:
8% REVISED:
9%     URL: http://ossie.wireless.vt.edu/
10%
11% ------------------------------------------------------------------
12
13\documentclass[11pt]{article}
14
15\setlength{\textwidth}{6.5in}
16\setlength{\textheight}{8.2in}
17\setlength{\evensidemargin}{0in}
18\setlength{\oddsidemargin}{0in}
19\setlength{\topmargin}{0in}
20\setlength{\parindent}{0pt}
21\setlength{\parskip}{0.1in}
22
23\newcommand{\describeossiedemo}{The demonstration waveform simulates a very
24basic QPSK communication system. It consists of three components: a transmitter,
25a channel, and a receiver. The transmitter generates bursts of 512 QPSK symbols
26that are sent through an AWGN channel and decoded by the receiver. The number of
27errors per burst will be printed out on the screen while the waveform runs.}
28
29\newcommand{\ossieversion}{0.8.1}
30
31%@usepackage{html}
32%@usepackage{verbatim}
33
34%@begin{comment}
35\usepackage{listings}
36%@end{comment}
37
38\usepackage{appendix}
39\usepackage[pdftex]{graphicx}
40\usepackage{url}
41
42% ------------------- BIBLIOGRAPHY STYLE -------------------
43\usepackage[sort]{natbib}
44\bibliographystyle{plain} % note the change here
45%\bibliographystyle{IEEEtran}
46\bibpunct{[}{]}{,}{n}{}{;}  % define bibliography punctuation
47% The six mandatory arguments for \bibpunct are:
48%   1. opening bracket: '(', '[', '{', or '<'
49%   2. closing bracket: ')', ']', '}', or '>'
50%   3. separator between multiple citations: ';' or ','
51%   4. citation style: 'n' for numerical style, 's' for numerical superscript style, or 'a' for authorÐyear style
52%   5. punctuation between the author names and the year
53%   6. punctuation between years or numbers when common author lists are suppressed: ',' or ';'
54
55%@begin{comment}
56% due to magic hacks, hyperref must be right before document begin
57\usepackage[pdftex]{hyperref}
58\usepackage{wrapfig}
59\hypersetup{colorlinks,
60           citecolor=blue,
61           filecolor=blue,
62           linkcolor=blue,
63           urlcolor=blue,
64           pdftex}
65%@end{comment}
66
67% ------------------- MAIN DOCUMENT -------------------
68\begin{document}
69\thispagestyle{empty}
70\pagenumbering{roman}
71
72%@begin{comment}
73\definecolor{MyCommentColor}{rgb}{0.1,0.4,0.1}
74\definecolor{MyCodeBackgroundColor}{rgb}{0.95,0.95,0.95}
75%\definecolor{MyCodeFrameRuleColor}{rgb}{0.9,0.9,0.9}
76\definecolor{MyStringColor}{rgb}{0.6,0.1,0.1}
77\definecolor{MyKeywordColor}{rgb}{0.6,0.1,0.1}
78
79% define lstlistings style
80% (see http://tug.ctan.org/tex-archive/macros/latex/contrib/listings/)
81\lstloadlanguages{[GNU]C++,Python,[CORBA]IDL,sh}
82
83\lstset{% general command to set parameter(s)
84    basicstyle=\small\ttfamily,          % print whole listing small
85    keywordstyle=\color{MyKeywordColor}\bfseries,
86    identifierstyle=\color{black},
87    commentstyle=\color{MyCommentColor}, % define color and sytle of comments
88    stringstyle=\ttfamily\color{MyStringColor},      % typewriter type for strings
89    %showstringspaces=false,     % no special string spaces
90    backgroundcolor=\color{MyCodeBackgroundColor},
91    frame=none,
92    %framerule=0.5pt,
93    %framexleftmargin=2pt,
94    %framexrightmargin=2pt,
95    %framexbottommargin=2pt,
96    %framextopmargin=2pt,
97    %rulecolor=\color{MyCodeFrameRuleColor},
98    nolol=true,     % suppress listoflistings entry
99    tabsize=4,
100    linewidth=\linewidth,
101    breaklines=false,
102    xleftmargin=6pt,
103    xrightmargin=6pt
104}
105%@end{comment}
106
107{\huge OSSIE \ossieversion\ Installation and User Guide\\}
108
109%\vfill
110
111{\sf Matt Carrick, Drew Cormier, Christopher Covington, Carl B. Dietrich, \\
112Joseph Gaeddert, Benjamin Hilburn, C. Ian Phelps, Shereef Sayed, \\
113Deepan Seeralan, Jason Snyder, Haris Volos}
114
115\vfill
116
117September, 2010
118
119
120\vfill
121
122\begin{figure*}[!ht]
123\centering
124\includegraphics[width=6in]{figures/alf_screenshot_00.png}
125\end{figure*}
126
127\vfill
128
129OSSIE is an open source Software Defined Radio (SDR) development effort based
130at Virginia Tech. OSSIE is primarily intended to enable research and education
131in SDR and wireless communications. The software package includes an SDR core
132framework based on the JTRS Software Communications Architecture, tools
133for rapid development of SDR components and waveforms (applications), and an
134evolving library of pre-built components and waveforms. In addition, free
135laboratory exercises for SDR education and training are being developed in
136cooperation with the Naval Postgraduate School.\\
137
138\begin{center}
139{\sf\small OSSIE is the Open Source SCA Implementation::Embedded}
140\end{center}
141
142\pagebreak
143\tableofcontents
144%@begin{comment}
145\lstlistoflistings
146%@end{comment}
147
148\pagebreak
149\pagenumbering{arabic}
150
151% ------------------- Quick Start Guide -------------------
152\newpage
153\input{QuickStartGuide}
154
155% ------------------- Introduction -------------------
156\newpage
157\input{Introduction}
158
159% ------------------- Installation Guide -------------------
160\newpage
161\input{Installation}
162
163% ------------------- Running Waveforms -------------------
164\newpage
165\input{RunningWaveforms}
166
167% ------------------- Waveform Workshop -------------------
168\newpage
169\input{WaveformWorkshop}
170
171% ------------------- OEF Guide -------------------
172\newpage
173\include{OEFGuide}
174
175% ------------------- OWD Guide -------------------
176\newpage
177\include{OWDGuide}
178
179% ------------------- ALF Guide -------------------
180\newpage
181\include{ALFGuide}
182
183% ------------------- WaveDash Guide -------------------
184\newpage
185\include{WaveDash}
186
187% ------------------- wavecli.py Guide -----------------
188\newpage
189\include{wavecli}
190
191%-------------------- Uninstallation -------------------
192\newpage
193\include{Uninstallation}
194
195% ------------------- Helping With Development -------------------
196\newpage
197\input{HelpingWithDevelopment}
198
199% ------------------- Troubleshooting -------------------
200\newpage
201\input{Troubleshooting}
202
203% ------------------- NoCites -------------------
204\nocite{vmware:web}
205\nocite{irctutorial:web}
206\nocite{writingbugreports:web}
207\nocite{Bard:2007}
208\nocite{Buracchini:2000}
209\nocite{Reed:2002}
210\nocite{jtrssca:web}
211
212% ------------------------------------------------------------------
213%
214%             APPENDICES
215%
216% ------------------------------------------------------------------
217\pagebreak
218\appendix
219\appendixpage
220\addappheadtotoc
221
222% -------------------- managing services --------------------------
223\section{Managing Services on Fedora Core 9}
224\label{appendix:services}
225Controlling which services are currently running on your computer and which
226start up with your computer is very easy with Fedora Core's Service
227Configuration interface. From the GNOME taskbar, click
228System$\to$Administration$\to$Services. You will need to enter your root (system
229administrator) password to use the dialog.  The window that pops up shows you
230all of the available services on your computer.  Services that have a check in
231the box next to them are currently running.  To turn a service on or off,
232simply click the box, or select it and press the `Start' or `Stop' button at
233the top of the list.
234
235In order to edit which services start with your computer when it boots, you need
236to know a little about runlevels.  You computer has several different
237runlevels. The one you are most concerned with is runlevel 5.  Runlevel 5 means
238multiuser X-server mode.  Generally speaking, if you are using a graphical
239interface then you are in runlevel 5.
240
241To have omniNames start with your computer, select it in the services list,
242click `Edit Runlevel' on the top menubar, and select runlevel 5.  Click
243the save button to save your configuration.
244
245That's it!  The next time you start your computer, omniNames will start running
246automatically.
247
248% ------------------- omniNames.sh -------------------
249\section{Creating {\tt omniNames.sh}}
250\label{appendix:omninamessh}
251Installing omniORB from RPM automatically starts the naming service when the
252system boots.
253If omniORB was {\it not} installed using RPM, the naming service will
254probably need to be started manually.
255To do so, create a file called {\tt omniNames.sh} containing the following
256\begin{lstlisting}[caption={{\tt omniNames.sh} file}, nolol=false]
257 #!/bin/sh
258 
259 killall omniNames
260 rm /sdr/logs/omninames*
261 
262 omniNames -start -logdir /sdr/logs &
263\end{lstlisting}
264
265Once this file is created, the file must be given executable permissions:
266\begin{lstlisting}[]
267 $ chmod 755 omniNames.sh
268 # cp omniNames.sh /usr/local/bin
269\end{lstlisting}
270
271Create a directory for the logs:
272\begin{lstlisting}[]
273 $ mkdir /sdr/logs
274\end{lstlisting}
275
276The script can now be run by executing {\tt omniNames.sh} in any terminal.
277You can check to see if {\tt omniNames} is running by executing:
278\begin{lstlisting}[]
279 $ nameclt list
280\end{lstlisting}
281If the naming service is {\it not} running you will see an error like:
282\begin{lstlisting}[]
283  Unexpected error when trying to narrow the NamingContext.
284\end{lstlisting}
285
286% ------------------- ossie.pth -------------------
287\newpage
288\section{Configuring {\tt ossie.pth}}
289\label{appendix:ossiepth}
290In order for the Python tools to link properly, a Python path file must be
291created to point to the shared modules.
292The default {\tt ossie.pth} file is located under \\
293{\tt ossie-\ossieversion/src/system/ossie/idl/python/} and is installed by default in \\
294{\tt /usr/lib/pythonX.X/site-packages} when you install the ossie core
295framework libraries.
296
297If you did {\it not} install omniORBpy using an RPM, you might need to add \\
298{\tt /usr/local/lib/pythonX.X/site-packages} to {\tt ossie.pth}, where
299{\it X.X} corresponds to the specific version of Python installed on your
300system.
301Now reinstall by running {\tt python setup.py install} as root within the \\
302{\tt ossie-\ossieversion/system/ossie/idl/python/} directory:
303\begin{lstlisting}[]
304 # cd ossie-0.8.1/system/ossie/idl/python/
305 # python setup.py install
306\end{lstlisting}
307
308% ----------- source component creation ----------
309\newpage
310\section{Data Source Component Creation}
311\label{appendix:datasourcecreation}
312The component TxDemo will be used as an example on how to create a data source.
313When creating a component which is not a data source, typically only the function
314{\tt ProcessData} needs to be modified to include the desired operation. This is
315not the case for a source component, however. The code that needs to be updated in
316this example resides in the {\tt start}, {\tt stop}, and {\tt ProcessData} functions.
317Locate the directory {\tt components/TxDemo} and open the files TxDemo.h and TxDemo.cpp.
318
319In TxDemo.h, near the end of the file the following code will be listed:
320\begin{lstlisting}[]
321  bool continue_processing(void);
322  volatile bool thread_started;
323\end{lstlisting}
324The flag {\tt thread\_started} holds the state of the component; whether or not the
325component should continue sending data. A function {\tt continue\_processing} is also
326declared which will be used to check {\tt thread\_started} and determine if the component
327should continue sending packets.
328
329In TxDemo.cpp, locate the {\tt start} function and the following code will be listed:
330\begin{lstlisting}[]
331  omni_mutex_lock l(processing_mutex);
332  if (false == thread_started){
333    thread_started = true;    //initialize
334    //Create the thread for the writer's processing function
335    processing_thread = new omni_thread(Run, (void *) this);
336
337    //Start the thread containing the writer's processing function
338    processing_thread->start();
339    }
340\end{lstlisting}
341This code creates a new thread and starts processing when the {\tt thread\_started}
342variable is set to true.
343
344Now locate the {\tt stop} function, and the following code will be listed:
345\begin{lstlisting}[]
346  omni_mutex_lock l(processing_mutex);
347  thread_started=false;
348\end{lstlisting}
349This code stops the processing on the thread by setting {\tt thread\_started} to false.
350
351Now locate the {\tt ProcessData} function, and the following code will be listed:
352\begin{lstlisting}[]
353  while(continue_processing()) {
354    // push data to output
355    dataOutPort->pushPacket(I_out, Q_out);
356
357    // wait
358    usleep(packet_delay*1000);
359    }
360\end{lstlisting}
361This code checks the function {\tt continue\_processing} to determine if packets should
362continue to be sent using {\tt pushPacket}. The {\tt usleep} function call is specific
363to TxDemo, and is not necessarily required in other data sources.
364
365The last section of code that must be created is the {\tt continue\_processing} function.
366The code for the function is listed as the following:
367\begin{lstlisting}[]
368  bool TxDemo_i::continue_processing(void)
369  {
370    omni_mutex_lock l(processing_mutex);
371    return thread_started;
372  }
373\end{lstlisting}
374
375All of the code listings provided above are not created by default when a new component is
376generated, since the code is only required for source components. Instead, all of the
377code must be added by hand. The addition of the code will create the appropriate environment
378for the data source, and afterwards only the data creation must be added to the {\tt ProcessData}
379function.
380
381% ------------------- Known Bugs -------------------
382\include{Bugs}
383
384
385% ------------------- Abbreviations -------------------
386\input{Abbreviations}
387
388% ------------------------------------------------------------------
389%
390%             BIBLIOGRAPHY
391%
392% ------------------------------------------------------------------
393\newpage
394\bibliography{UserGuide}
395
396% ------------------- Change Log -------------------
397\newpage
398\section{Change Log}
399\label{appendix:changelog}
400
401\subsection {OSSIE 0.8.1}
402\begin{enumerate}
403\item Components and Devices now accept standard command line parameters.
404\item ALF and WaveDash now use the CF::FileSystem to query for available components and applications.
405\item Distribution of components across multiple nodes is significantly simpler.
406\item Core Framework now supports boolean, char, and octal component property
407types.
408\item OEF 1.1.5 now supports node generation.
409\item WaveDash now supports updating property values immediately or on a
410per-component or per-waveform basis.
411%\item Wavedash backend now can run without X11. (wasn't included in 0.8.1 tarball, need to fix makefile)
412\end{enumerate}
413
414\subsection {OSSIE 0.8.0}
415\begin{enumerate}
416\item CF::FileSystem now encapsulates the Boost file system library
417\item Xerces has been replaced by TinyXML
418\item The install directory structure has changed to separate Domain management from Device management
419\item The nodeBooter and c\_wavLoader utilities support '-debug' level flag and any compatible ORB flags (i.e. -ORBInitRef)
420\end{enumerate}
421
422\subsection {OSSIE 0.7.4}
423\begin{enumerate}
424\item Addition of new waveform: Lab 5 example AM application.
425\item AutomaticGainControl component will output ones when threshold is not met.
426\item ALF ConnectTool has improved support for port connections.
427\item WaveDash can now control single-component waveforms created and launched
428in ALF.
429\item ALF allows user to specify IP address for CORBA naming service.
430\end{enumerate}
431
432\subsection {OSSIE 0.7.3}
433\begin{enumerate}
434\item Introduction of Waveform Dashboard (WaveDash).
435\item Addition of new waveforms: OSSIETalkLoopBack, OSSIETalkUSRP.
436\item Addition of new components: Channel, Conv\_Dec, Conv\_Enc, DigitalModem, FrameAssembler, OSSIETalk, PacketResizer, SymbolSyncPoly.
437\item Decimator has the ability to use either IIR or FIR.
438\item OWD provides generation of custom license headers.
439\item More removal of vestigial project files.
440\end{enumerate}
441
442\subsection {OSSIE 0.7.2}
443\begin{enumerate}
444\item Improved start/stop capability within TxDemo component.
445\item Corrected XML Template files for OWDC component generation.
446\item Removal of incorrect entry point tags in default\_GPP\_node SPD.
447\item Deletion of vestigial project files.
448\item Addition of Interpolator component.
449\end{enumerate}
450
451\subsection {OSSIE 0.7.1}
452\begin{enumerate}
453\item Removal of duplicate profile templates.
454\item Added start, stop capability to TxDemo component.
455\item Fixed USRP\_Commander rx\_freq property typo.
456\item Fixed capability of components being run as waveforms.
457\end{enumerate}
458
459\subsection {OSSIE 0.7.0}
460\begin{enumerate}
461\item Start of change log.
462\item Allows for non /sdr install.
463\item Installation through RPMs.
464\item ALF can start and stop waveforms.
465\item Reduced plot tool's refresh rate.
466\item Removed ``sample waveform'' option in OWD.
467\item Removed duplicate DOCTYPE descriptors in generated XML files.
468\item Fixed path in USRP's SCD file.
469\item Fixed soundCardCapture device name to prevent OWD error.
470\item Added Ubuntu 8.04 as supported platform.
471\item OWD default save directory is now home directory.
472\item ALF's plot tool has normalized frequency axis.
473\item Debug statements use DEBUG macro instead of std::cout.
474\item Tools now installed to site-packages.
475\item ALF, OWD, and OWD Component Editor can be run from any directory.
476\item More than two nodes can be run through a single domain manager.
477\item Added webcam components.
478\item Installation from source broken into two steps.
479\end{enumerate}
480
481\end{document}
Note: See TracBrowser for help on using the browser.