root/documentation/ossie/user-guide-0.7.3/UserGuide.tex @ 8727

Revision 8727, 14.5 KB (checked in by mcarrick, 4 years ago)

updating version numbers for 0.7.3

  • Property svn:eol-style set to native
Line 
1% ------------------------------------------------------------------
2%
3%   TITLE: OSSIE Installation and User Guide 0.7.3
4% AUTHORS: 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.7.3}
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\hypersetup{colorlinks,
59           citecolor=blue,
60           filecolor=blue,
61           linkcolor=blue,
62           urlcolor=blue,
63           pdftex}
64%@end{comment}
65
66% ------------------- MAIN DOCUMENT -------------------
67\begin{document}
68\thispagestyle{empty}
69\pagenumbering{roman}
70
71%@begin{comment}
72\definecolor{MyCommentColor}{rgb}{0.1,0.4,0.1}
73\definecolor{MyCodeBackgroundColor}{rgb}{0.95,0.95,0.95}
74%\definecolor{MyCodeFrameRuleColor}{rgb}{0.9,0.9,0.9}
75\definecolor{MyStringColor}{rgb}{0.6,0.1,0.1}
76\definecolor{MyKeywordColor}{rgb}{0.6,0.1,0.1}
77
78% define lstlistings style
79% (see http://tug.ctan.org/tex-archive/macros/latex/contrib/listings/)
80\lstloadlanguages{[GNU]C++,Python,[CORBA]IDL,sh}
81
82\lstset{% general command to set parameter(s)
83    basicstyle=\small\ttfamily,          % print whole listing small
84    keywordstyle=\color{MyKeywordColor}\bfseries,
85    identifierstyle=\color{black},
86    commentstyle=\color{MyCommentColor}, % define color and sytle of comments
87    stringstyle=\ttfamily\color{MyStringColor},      % typewriter type for strings
88    %showstringspaces=false,     % no special string spaces
89    backgroundcolor=\color{MyCodeBackgroundColor},
90    frame=none,
91    %framerule=0.5pt,
92    %framexleftmargin=2pt,
93    %framexrightmargin=2pt,
94    %framexbottommargin=2pt,
95    %framextopmargin=2pt,
96    %rulecolor=\color{MyCodeFrameRuleColor},
97    nolol=true,     % suppress listoflistings entry
98    tabsize=4,
99    linewidth=\linewidth,
100    breaklines=false,
101    xleftmargin=6pt,
102    xrightmargin=6pt
103}
104%@end{comment}
105
106{\huge OSSIE \ossieversion\ Installation and User Guide\\}
107
108%\vfill
109
110{\sf Matt Carrick, Drew Cormier, Christopher Covington, Carl B. Dietrich, \\
111Joseph Gaeddert, Benjamin Hilburn, C. Ian Phelps, Shereef Sayed, \\
112Jason Snyder, Haris Volos}
113
114\vfill
115
116March, 2009
117
118
119\vfill
120
121\begin{figure*}[!ht]
122\centering
123\includegraphics[width=6in]{figures/alf_screenshot_00.png}
124\end{figure*}
125
126\vfill
127
128OSSIE is an open source Software Defined Radio (SDR) development effort based
129at Virginia Tech. OSSIE is primarily intended to enable research and education
130in SDR and wireless communications. The software package includes an SDR core
131framework based on the JTRS Software Communications Architecture, tools
132for rapid development of SDR components and waveforms (applications), and an
133evolving library of pre-built components and waveforms. In addition, free
134laboratory exercises for SDR education and training are being developed in
135cooperation with the Naval Postgraduate School.\\
136
137\begin{center}
138{\sf\small OSSIE is the Open Source SCA Implementation::Embedded}
139\end{center}
140
141\pagebreak
142\tableofcontents
143%@begin{comment}
144\lstlistoflistings
145%@end{comment}
146
147\pagebreak
148\pagenumbering{arabic}
149
150% ------------------- Quick Start Guide -------------------
151\newpage
152\input{QuickStartGuide}
153
154% ------------------- Introduction -------------------
155\newpage
156\input{Introduction}
157
158% ------------------- Installation Guide -------------------
159\newpage
160\input{Installation}
161
162% ------------------- Running Waveforms -------------------
163\newpage
164\input{RunningWaveforms}
165
166
167% ------------------- OEF Guide -------------------
168\newpage
169\include{OEFGuide}
170
171% ------------------- OWD Guide -------------------
172\newpage
173\include{OWDGuide}
174
175% ------------------- ALF Guide -------------------
176\newpage
177\include{ALFGuide}
178
179% ------------------- Helping With Development -------------------
180\newpage
181\input{HelpingWithDevelopment}
182
183% ------------------- Troubleshooting -------------------
184\newpage
185\input{Troubleshooting}
186
187% ------------------- NoCites -------------------
188\nocite{vmware:web}
189\nocite{irctutorial:web}
190\nocite{writingbugreports:web}
191\nocite{Bard:2007}
192\nocite{Buracchini:2000}
193\nocite{Reed:2002}
194\nocite{jtrssca:web}
195
196% ------------------------------------------------------------------
197%
198%             APPENDICES
199%
200% ------------------------------------------------------------------
201\pagebreak
202\appendix
203\appendixpage
204\addappheadtotoc
205
206% -------------------- managing services --------------------------
207\section{Managing Services on Fedora Core 9}
208\label{appendix:services}
209Controlling which services are currently running on your computer and which
210start up with your computer is very easy with Fedora Core's Service
211Configuration interface. From the GNOME taskbar, click
212System$\to$Administration$\to$Services. You will need to enter your root (system
213administrator) password to use the dialog.  The window that pops up shows you
214all of the available services on your computer.  Services that have a check in
215the box next to them are currently running.  To turn a service on or off,
216simply click the box, or select it and press the `Start' or `Stop' button at
217the top of the list.
218
219In order to edit which services start with your computer when it boots, you need
220to know a little about runlevels.  You computer has several different
221runlevels. The one you are most concerned with is runlevel 5.  Runlevel 5 means
222multiuser X-server mode.  Generally speaking, if you are using a graphical
223interface then you are in runlevel 5.
224
225To have omniNames start with your computer, select it in the services list,
226click `Edit Runlevel' on the top menubar, and select runlevel 5.  Click
227the save button to save your configuration.
228
229That's it!  The next time you start your computer, omniNames will start running
230automatically.
231
232% ------------------- omniNames.sh -------------------
233\section{Creating {\tt omniNames.sh}}
234\label{appendix:omninamessh}
235Installing omniORB from RPM automatically starts the naming service when the
236system boots.
237If omniORB was {\it not} installed using RPM, the naming service will
238probably need to be started manually.
239To do so, create a file called {\tt omniNames.sh} containing the following
240\begin{lstlisting}[caption={{\tt omniNames.sh} file}, nolol=false]
241 #!/bin/sh
242 
243 killall omniNames
244 rm /sdr/logs/omninames*
245 
246 omniNames -start -logdir /sdr/logs &
247\end{lstlisting}
248
249Once this file is created, the file must be given executable permissions:
250\begin{lstlisting}[]
251 $ chmod 755 omniNames.sh
252 # cp omniNames.sh /usr/local/bin
253\end{lstlisting}
254
255Create a directory for the logs:
256\begin{lstlisting}[]
257 $ mkdir /sdr/logs
258\end{lstlisting}
259
260The script can now be run by executing {\tt omniNames.sh} in any terminal.
261You can check to see if {\tt omniNames} is running by executing:
262\begin{lstlisting}[]
263 $ nameclt list
264\end{lstlisting}
265If the naming service is {\it not} running you will see an error like:
266\begin{lstlisting}[]
267  Unexpected error when trying to narrow the NamingContext.
268\end{lstlisting}
269
270% ------------------- ossie.pth -------------------
271\newpage
272\section{Configuring {\tt ossie.pth}}
273\label{appendix:ossiepth}
274In order for the Python tools to link properly, a Python path file must be
275created to point to the shared modules.
276The default {\tt ossie.pth} file is located under \\
277{\tt ossie-\ossieversion/src/system/ossie/idl/python/} and is installed by default in \\
278{\tt /usr/lib/pythonX.X/site-packages} when you install the ossie core
279framework libraries.
280
281If you did {\it not} install omniORBpy using an RPM, you might need to add \\
282{\tt /usr/local/lib/pythonX.X/site-packages} to {\tt ossie.pth}, where
283{\it X.X} corresponds to the specific version of Python installed on your
284system.
285Now reinstall by running {\tt python setup.py install} as root within the \\
286{\tt ossie-\ossieversion/src/system/ossie/idl/python/} directory:
287\begin{lstlisting}[]
288 # cd ossie-0.7.3/src/system/ossie/idl/python/
289 # python setup.py install
290\end{lstlisting}
291
292% ----------- source component creation ----------
293\newpage
294\section{Data Source Component Creation}
295\label{appendix:datasourcecreation}
296The component TxDemo will be used as an example on how to create a data source.
297When creating a component which is not a data source, typically only the function
298{\tt ProcessData} needs to be modified to include the desired operation. This is
299not the case for a source component, however. The code that needs to be updated in
300this example resides in the {\tt start}, {\tt stop}, and {\tt ProcessData} functions.
301Locate the directory {\tt components/TxDemo} and open the files TxDemo.h and TxDemo.cpp.
302
303In TxDemo.h, near the end of the file the following code will be listed:
304\begin{lstlisting}[]
305  bool continue_processing(void);
306  volatile bool thread_started;
307\end{lstlisting}
308The flag {\tt thread\_started} holds the state of the component; whether or not the
309component should continue sending data. A function {\tt continue\_processing} is also
310declared which will be used to check {\tt thread\_started} and determine if the component
311should continue sending packets.
312
313In TxDemo.cpp, locate the {\tt start} function and the following code will be listed:
314\begin{lstlisting}[]
315  omni_mutex_lock l(processing_mutex);
316  if (false == thread_started){
317    thread_started = true;    //initialize
318    //Create the thread for the writer's processing function
319    processing_thread = new omni_thread(Run, (void *) this);
320
321    //Start the thread containing the writer's processing function
322    processing_thread->start();
323    }
324\end{lstlisting}
325This code creates a new thread and starts processing when the {\tt thread\_started}
326variable is set to true.
327
328Now locate the {\tt stop} function, and the following code will be listed:
329\begin{lstlisting}[]
330  omni_mutex_lock l(processing_mutex);
331  thread_started=false;
332\end{lstlisting}
333This code stops the processing on the thread by setting {\tt thread\_started} to false.
334
335Now locate the {\tt ProcessData} function, and the following code will be listed:
336\begin{lstlisting}[]
337  while(continue_processing()) {
338    // push data to output
339    dataOutPort->pushPacket(I_out, Q_out);
340
341    // wait
342    usleep(packet_delay*1000);
343    }
344\end{lstlisting}
345This code checks the function {\tt continue\_processing} to determine if packets should
346continue to be sent using {\tt pushPacket}. The {\tt usleep} function call is specific
347to TxDemo, and is not necessarily required in other data sources.
348
349The last section of code that must be created is the {\tt continue\_processing} function.
350The code for the function is listed as the following:
351\begin{lstlisting}[]
352  bool TxDemo_i::continue_processing(void)
353  {
354    omni_mutex_lock l(processing_mutex);
355    return thread_started;
356  }
357\end{lstlisting}
358
359All of the code listings provided above are not created by default when a new component is
360generated, since the code is only required for source components. Instead, all of the
361code must be added by hand. The addition of the code will create the appropriate environment
362for the data source, and afterwards only the data creation must be added to the {\tt ProcessData}
363function.
364
365% ------------------- Known Bugs -------------------
366\include{Bugs}
367
368
369% ------------------- Abbreviations -------------------
370\input{Abbreviations}
371
372% ------------------------------------------------------------------
373%
374%             BIBLIOGRAPHY
375%
376% ------------------------------------------------------------------
377\newpage
378\bibliography{UserGuide}
379
380% ------------------- Change Log -------------------
381\newpage
382\section{Change Log}
383\label{appendix:changelog}
384
385\subsection {OSSIE 0.7.3}
386\begin{enumerate}
387\item
388\end{enumerate}
389
390\subsection {OSSIE 0.7.2}
391\begin{enumerate}
392\item Improved start/stop capability within TxDemo component.
393\item Corrected XML Template files for OWDC component generation.
394\item Removal of incorrect entry point tags in default\_GPP\_node SPD.
395\item Deletion of vestigial project files.
396\item Addition of Interpolator component.
397\end{enumerate}
398
399\subsection {OSSIE 0.7.1}
400\begin{enumerate}
401\item Removal of duplicate profile templates.
402\item Added start, stop capability to TxDemo component.
403\item Fixed USRP\_Commander rx\_freq property typo.
404\item Fixed capability of components being run as waveforms.
405\end{enumerate}
406
407\subsection {OSSIE 0.7.0}
408\begin{enumerate}
409\item Start of change log.
410\item Allows for non /sdr install.
411\item Installation through RPMs.
412\item ALF can start and stop waveforms.
413\item Reduced plot tool's refresh rate.
414\item Removed ``sample waveform'' option in OWD.
415\item Removed duplicate DOCTYPE descriptors in generated XML files.
416\item Fixed path in USRP's SCD file.
417\item Fixed soundCardCapture device name to prevent OWD error.
418\item Added Ubuntu 8.04 as supported platform.
419\item OWD default save directory is now home directory.
420\item ALF's plot tool has normalized frequency axis.
421\item Debug statements use DEBUG macro instead of std::cout.
422\item Tools now installed to site-packages.
423\item ALF, OWD, and OWD Component Editor can be run from any directory.
424\item More than two nodes can be run through a single domain manager.
425\item Added webcam components.
426\item Installation from source broken into two steps.
427\end{enumerate}
428
429\end{document}
Note: See TracBrowser for help on using the browser.