root/documentation/ossie/user-guide-0.8.2/UserGuide.tex @ 10692

Revision 10692, 18.7 KB (checked in by c2dietric, 2 years ago)

updates to date and change log for 0.8.2

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