diff --git a/CHANGES.md b/CHANGES.md index 769c60b72..242ffd23c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -34,6 +34,7 @@ Changes from ns-3.37 to ns-3.38 * (lr-wpan) Remove the functions `LrWpanCsmaCa::GetUnitBackoffPeriod()` and `LrWpanCsmaCa::SetUnitBackoffPeriod()`, and move the constant `m_aUnitBackoffPeriod` to `src/lr-wpan/model/lr-wpan-constants.h`. * (lr-wpan) Adds beacon payload handle support (MLME-SET.request) in **LrWpanMac**. * (core) Now test-runner exits if no TestSuite is specified. +* (lr-wpan) Adds the possibility to modify the Rx sensitivity in **LrWpanPhy**. ### Changes to build system diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 880d7246a..0b1ba74b9 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -31,6 +31,7 @@ Release 3-dev - (wifi) Implement 802.11ax dual NAV (basic NAV and intra-BSS NAV) - (wifi) Implement 802.11ax Uplink Multi-User Carrier Sense (UL MU CS) mechanism and have it used by non-AP STAs when determining if they can reply to a received Trigger Frame - (wifi) Add support for 802.11ax MU-RTS/CTS protection +- (lr-wpan) !1006 - Add rx Sensitivity configuration support. ### Bugs fixed diff --git a/src/lr-wpan/doc/802-15-4-per-sens.eps b/src/lr-wpan/doc/802-15-4-per-sens.eps index 544bcc24a..f8f6b69c2 100644 --- a/src/lr-wpan/doc/802-15-4-per-sens.eps +++ b/src/lr-wpan/doc/802-15-4-per-sens.eps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 EPSF-2.0 -%%Title: 802.15.4-per-sens.eps -%%Creator: gnuplot 4.6 patchlevel 4 (Gentoo revision r2) -%%CreationDate: Wed Apr 23 12:42:53 2014 +%%Title: 802.15.4-per-vs-rxSignal.eps +%%Creator: gnuplot 5.2 patchlevel 8 +%%CreationDate: Mon Dec 19 13:38:56 2022 %%DocumentFonts: (atend) %%BoundingBox: 50 50 410 302 %%EndComments @@ -18,6 +18,7 @@ gnudict begin /Dashlength 1 def /Landscape false def /Level1 false def +/Level3 false def /Rounded false def /ClipToBoundingBox false def /SuppressPDFMark false def @@ -29,11 +30,11 @@ gnudict begin % /vshift -46 def /dl1 { - 10.0 Dashlength mul mul + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if } def /dl2 { - 10.0 Dashlength mul mul + 10.0 Dashlength userlinewidth gnulinewidth div mul mul mul Rounded { currentlinewidth 0.75 mul add } if } def /hpt_ 31.5 def @@ -47,7 +48,7 @@ gnudict begin } if } def % -% Gnuplot Prolog Version 4.6 (September 2012) +% Gnuplot Prolog Version 5.2 (Dec 2017) % %/SuppressPDFMark true def % @@ -64,11 +65,11 @@ gnudict begin /vpt2 vpt 2 mul def /hpt2 hpt 2 mul def /Lshow {currentpoint stroke M 0 vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def /Rshow {currentpoint stroke M dup stringwidth pop neg vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def /Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def + Blacktext {gsave 0 setgray textshow grestore} {textshow} ifelse} def /UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def /DL {Color {setrgbcolor Solid {pop []} if 0 setdash} @@ -82,7 +83,7 @@ gnudict begin /PL {stroke userlinewidth setlinewidth Rounded {1 setlinejoin 1 setlinecap} if} def 3.8 setmiterlimit -% Default Line colors +% Classic Line colors (version 5.0) /LCw {1 1 1} def /LCb {0 0 0} def /LCa {0 0 0} def @@ -95,19 +96,21 @@ gnudict begin /LC6 {0 0 0} def /LC7 {1 0.3 0} def /LC8 {0.5 0.5 0.5} def -% Default Line Types +% Default dash patterns (version 5.0) +/LTB {BL [] LCb DL} def /LTw {PL [] 1 setgray} def -/LTb {BL [] LCb DL} def +/LTb {PL [] LCb DL} def /LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def /LT0 {PL [] LC0 DL} def -/LT1 {PL [4 dl1 2 dl2] LC1 DL} def -/LT2 {PL [2 dl1 3 dl2] LC2 DL} def -/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def -/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def -/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def -/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def -/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def -/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/LT1 {PL [2 dl1 3 dl2] LC1 DL} def +/LT2 {PL [1 dl1 1.5 dl2] LC2 DL} def +/LT3 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC3 DL} def +/LT4 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [4 dl1 2 dl2] LC5 DL} def +/LT6 {PL [1.5 dl1 1.5 dl2 1.5 dl1 1.5 dl2 1.5 dl1 6 dl2] LC6 DL} def +/LT7 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC8 DL} def +/SL {[] 0 setdash} def /Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def /Dia {stroke [] 0 setdash 2 copy vpt add M hpt neg vpt neg V hpt vpt neg V @@ -302,7 +305,7 @@ gnudict begin ColR ColG ColB setrgbcolor} def /BoxColFill {gsave Rec PolyFill} def /PolyFill {gsave Density fill grestore grestore} def -/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +/h {rlineto rlineto rlineto closepath gsave fill grestore stroke} bind def % % PostScript Level 1 Pattern Fill routine for rectangles % Usage: x y w h s a XX PatternFill @@ -329,9 +332,14 @@ gnudict begin % /languagelevel where {pop languagelevel} {1} ifelse - 2 lt - {/InterpretLevel1 true def} - {/InterpretLevel1 Level1 def} +dup 2 lt + {/InterpretLevel1 true def + /InterpretLevel3 false def} + {/InterpretLevel1 Level1 def + 2 gt + {/InterpretLevel3 Level3 def} + {/InterpretLevel3 false def} + ifelse } ifelse % % PostScript level 2 pattern fill definitions @@ -420,16 +428,29 @@ Level1 {Level1PatternFill} {Level2PatternFill} ifelse /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall currentdict end definefont pop +% +/Metrics {ExtendTextBox Gswidth} def +/Lwidth {currentpoint stroke M 0 vshift R Metrics} def +/Rwidth {currentpoint stroke M dup stringwidth pop neg vshift R Metrics} def +/Cwidth {currentpoint stroke M dup stringwidth pop -2 div vshift R Metrics} def +/GLwidth {currentpoint stroke M 0 vshift R {ExtendTextBox} forall} def +/GRwidth {currentpoint stroke M dup Gwidth vshift R {ExtendTextBox} forall} def +/GCwidth {currentpoint stroke M dup Gwidth 2 div vshift R {ExtendTextBox} forall} def +/GLwidth2 {0 Gwidth AddGlyphWidth} def +/GRwidth2 {Gwidth -1 mul 0 AddGlyphWidth} def +/GCwidth2 {Gwidth 2 div dup -1 mul AddGlyphWidth} def +/AddGlyphWidth { dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse } def /MFshow { { dup 5 get 3 ge { 5 get 3 eq {gsave} {grestore} ifelse } {dup dup 0 get findfont exch 1 get scalefont setfont [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 - get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + get exch 4 get {textshow} {Metrics pop 0 R} ifelse }if dup 5 get 0 eq {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 - get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div - dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get - show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + get 1 eq {dup 2 get exch dup 3 get exch 6 get Gswidth pop -2 div + dup 0 R} {dup 6 get Gswidth pop -2 div 0 R 6 get + textshow 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop pop aload pop M} ifelse }ifelse }ifelse } ifelse } forall} def @@ -455,16 +476,41 @@ systemdict /pdfmark known not { userdict /pdfmark systemdict /cleartomark get put } if SDict begin [ - /Title (802.15.4-per-sens.eps) + /Title (802.15.4-per-vs-rxSignal.eps) /Subject (gnuplot plot) - /Creator (gnuplot 4.6 patchlevel 4 (Gentoo revision r2)) - /Author (jopen) + /Creator (gnuplot 5.2 patchlevel 8) % /Producer (gnuplot) % /Keywords () - /CreationDate (Wed Apr 23 12:42:53 2014) + /CreationDate (Mon Dec 19 13:38:56 2022) /DOCINFO pdfmark end } ifelse +% +% Support for boxed text - Ethan A Merritt Sep 2016 +% +/InitTextBox { userdict /TBy2 3 -1 roll put userdict /TBx2 3 -1 roll put + userdict /TBy1 3 -1 roll put userdict /TBx1 3 -1 roll put + /Boxing true def } def +/ExtendTextBox { dup type /stringtype eq + { Boxing { gsave dup false charpath pathbbox + dup TBy2 gt {userdict /TBy2 3 -1 roll put} {pop} ifelse + dup TBx2 gt {userdict /TBx2 3 -1 roll put} {pop} ifelse + dup TBy1 lt {userdict /TBy1 3 -1 roll put} {pop} ifelse + dup TBx1 lt {userdict /TBx1 3 -1 roll put} {pop} ifelse + grestore } if } + {} ifelse} def +/PopTextBox { newpath TBx1 TBxmargin sub TBy1 TBymargin sub M + TBx1 TBxmargin sub TBy2 TBymargin add L + TBx2 TBxmargin add TBy2 TBymargin add L + TBx2 TBxmargin add TBy1 TBymargin sub L closepath } def +/DrawTextBox { PopTextBox stroke /Boxing false def} def +/FillTextBox { gsave PopTextBox fill grestore /Boxing false def} def +0 0 0 0 InitTextBox +/TBxmargin 20 def +/TBymargin 20 def +/Boxing false def +/textshow { ExtendTextBox Gshow } def +% end %%EndProlog %%Page: 1 1 @@ -480,12 +526,13 @@ BackgroundColor 0 lt 3 1 roll 0 lt exch 0 lt or or not {BackgroundColor C 1.000 1.000 UL LTb LCb setrgbcolor -1.000 UL +0.500 UL LTa LCa setrgbcolor 938 448 M 6009 0 V stroke +1.000 UL LTb LCb setrgbcolor 938 448 M @@ -494,3275 +541,2145 @@ LCb setrgbcolor -63 0 V stroke 854 448 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-12)] -] -46.7 MRshow +[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1x10)] +[(Times-BoldItalic) 112.0 70.0 true true 0 (-12)] +] -60.7 MRshow +/Times-BoldItalic findfont 140 scalefont setfont +/vshift -46 def 1.000 UL LTb LCb setrgbcolor -938 764 M +938 768 M +31 0 V +5978 0 R +-31 0 V +938 851 M +31 0 V +5978 0 R +-31 0 V +938 902 M +31 0 V +5978 0 R +-31 0 V +938 938 M +31 0 V +5978 0 R +-31 0 V +938 966 M +31 0 V +5978 0 R +-31 0 V +938 989 M +31 0 V +5978 0 R +-31 0 V +938 1009 M +31 0 V +5978 0 R +-31 0 V +938 1026 M 31 0 V 5978 0 R -31 0 V stroke +0.500 UL LTa LCa setrgbcolor -938 1080 M +938 1041 M 6009 0 V stroke +1.000 UL LTb LCb setrgbcolor -938 1080 M +938 1041 M 63 0 V 5946 0 R -63 0 V stroke -854 1080 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-10)] -] -46.7 MRshow +854 1041 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1x10)] +[(Times-BoldItalic) 112.0 70.0 true true 0 (-10)] +] -60.7 MRshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -938 1396 M +938 1360 M +31 0 V +5978 0 R +-31 0 V +938 1444 M +31 0 V +5978 0 R +-31 0 V +938 1494 M +31 0 V +5978 0 R +-31 0 V +938 1530 M +31 0 V +5978 0 R +-31 0 V +938 1558 M +31 0 V +5978 0 R +-31 0 V +938 1581 M +31 0 V +5978 0 R +-31 0 V +938 1601 M +31 0 V +5978 0 R +-31 0 V +938 1618 M 31 0 V 5978 0 R -31 0 V stroke +0.500 UL LTa LCa setrgbcolor -938 1712 M +938 1633 M 6009 0 V stroke +1.000 UL LTb LCb setrgbcolor -938 1712 M +938 1633 M 63 0 V 5946 0 R -63 0 V stroke -854 1712 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-08)] -] -46.7 MRshow +854 1633 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1x10)] +[(Times-BoldItalic) 112.0 70.0 true true 0 (-8)] +] -60.7 MRshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -938 2028 M +938 1953 M +31 0 V +5978 0 R +-31 0 V +938 2036 M +31 0 V +5978 0 R +-31 0 V +938 2087 M +31 0 V +5978 0 R +-31 0 V +938 2123 M +31 0 V +5978 0 R +-31 0 V +938 2151 M +31 0 V +5978 0 R +-31 0 V +938 2174 M +31 0 V +5978 0 R +-31 0 V +938 2194 M +31 0 V +5978 0 R +-31 0 V +938 2211 M 31 0 V 5978 0 R -31 0 V stroke +0.500 UL LTa LCa setrgbcolor -938 2344 M +938 2226 M 6009 0 V stroke +1.000 UL LTb LCb setrgbcolor -938 2344 M +938 2226 M 63 0 V 5946 0 R -63 0 V stroke -854 2344 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1e-06)] -] -46.7 MRshow +854 2226 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1x10)] +[(Times-BoldItalic) 112.0 70.0 true true 0 (-6)] +] -60.7 MRshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -938 2660 M +938 2545 M +31 0 V +5978 0 R +-31 0 V +938 2629 M +31 0 V +5978 0 R +-31 0 V +938 2679 M +31 0 V +5978 0 R +-31 0 V +938 2715 M +31 0 V +5978 0 R +-31 0 V +938 2743 M +31 0 V +5978 0 R +-31 0 V +938 2766 M +31 0 V +5978 0 R +-31 0 V +938 2786 M +31 0 V +5978 0 R +-31 0 V +938 2803 M 31 0 V 5978 0 R -31 0 V stroke +0.500 UL LTa LCa setrgbcolor -938 2975 M +938 2818 M 6009 0 V stroke +1.000 UL LTb LCb setrgbcolor -938 2975 M +938 2818 M 63 0 V 5946 0 R -63 0 V stroke -854 2975 M +854 2818 M [ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.0001)] ] -46.7 MRshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -938 3291 M +938 3138 M +31 0 V +5978 0 R +-31 0 V +938 3221 M +31 0 V +5978 0 R +-31 0 V +938 3272 M +31 0 V +5978 0 R +-31 0 V +938 3308 M +31 0 V +5978 0 R +-31 0 V +938 3336 M +31 0 V +5978 0 R +-31 0 V +938 3359 M +31 0 V +5978 0 R +-31 0 V +938 3379 M +31 0 V +5978 0 R +-31 0 V +938 3396 M 31 0 V 5978 0 R -31 0 V stroke +0.500 UL LTa LCa setrgbcolor -938 3607 M +938 3411 M 6009 0 V stroke +1.000 UL LTb LCb setrgbcolor -938 3607 M +938 3411 M 63 0 V 5946 0 R -63 0 V stroke -854 3607 M +854 3411 M [ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.01)] ] -46.7 MRshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -938 3923 M +938 3730 M +31 0 V +5978 0 R +-31 0 V +938 3814 M +31 0 V +5978 0 R +-31 0 V +938 3864 M +31 0 V +5978 0 R +-31 0 V +938 3900 M +31 0 V +5978 0 R +-31 0 V +938 3928 M +31 0 V +5978 0 R +-31 0 V +938 3952 M +31 0 V +5978 0 R +-31 0 V +938 3971 M +31 0 V +5978 0 R +-31 0 V +938 3988 M 31 0 V 5978 0 R -31 0 V stroke +0.500 UL LTa LCa setrgbcolor -938 4239 M +938 4003 M 6009 0 V stroke +1.000 UL LTb LCb setrgbcolor -938 4239 M +938 4003 M 63 0 V 5946 0 R -63 0 V stroke -854 4239 M +854 4003 M [ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1)] ] -46.7 MRshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -938 4555 M +938 4323 M +31 0 V +5978 0 R +-31 0 V +938 4406 M +31 0 V +5978 0 R +-31 0 V +938 4457 M +31 0 V +5978 0 R +-31 0 V +938 4493 M +31 0 V +5978 0 R +-31 0 V +938 4521 M +31 0 V +5978 0 R +-31 0 V +938 4544 M +31 0 V +5978 0 R +-31 0 V +938 4564 M +31 0 V +5978 0 R +-31 0 V +938 4581 M 31 0 V 5978 0 R -31 0 V stroke +0.500 UL LTa LCa setrgbcolor -938 4871 M +938 4596 M 6009 0 V stroke +1.000 UL LTb LCb setrgbcolor -938 4871 M +938 4596 M 63 0 V 5946 0 R -63 0 V stroke -854 4871 M +854 4596 M [ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 100)] ] -46.7 MRshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -1.000 UL +0.500 UL LTa LCa setrgbcolor 938 448 M -0 4423 V +0 4171 V stroke +1.000 UL LTb LCb setrgbcolor 938 448 M 0 63 V -0 4360 R +0 4108 R 0 -63 V stroke 938 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-130)] +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-110)] ] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -1.000 UL +0.500 UL LTa LCa setrgbcolor -1940 448 M -0 4423 V +1367 448 M +0 4171 V stroke +1.000 UL LTb LCb setrgbcolor -1940 448 M +1367 448 M 0 63 V -0 4360 R +0 4108 R 0 -63 V stroke -1940 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-125)] +1367 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-108)] ] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -1.000 UL +0.500 UL LTa LCa setrgbcolor -2941 448 M -0 4423 V +1796 448 M +0 4171 V stroke +1.000 UL LTb LCb setrgbcolor -2941 448 M +1796 448 M 0 63 V -0 4360 R +0 4108 R 0 -63 V stroke -2941 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-120)] +1796 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-106)] ] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +2226 448 M +0 4171 V +stroke 1.000 UL +LTb +LCb setrgbcolor +2226 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2226 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-104)] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +1.000 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +2655 448 M +0 4171 V +stroke +1.000 UL +LTb +LCb setrgbcolor +2655 448 M +0 63 V +0 4108 R +0 -63 V +stroke +2655 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-102)] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +1.000 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +3084 448 M +0 4171 V +stroke +1.000 UL +LTb +LCb setrgbcolor +3084 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3084 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-100)] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +1.000 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +3513 448 M +0 4171 V +stroke +1.000 UL +LTb +LCb setrgbcolor +3513 448 M +0 63 V +0 4108 R +0 -63 V +stroke +3513 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-98)] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +1.000 UL +LTb +LCb setrgbcolor +0.500 UL LTa LCa setrgbcolor 3943 448 M -0 4423 V +0 4171 V stroke +1.000 UL LTb LCb setrgbcolor 3943 448 M 0 63 V -0 4360 R +0 4108 R 0 -63 V stroke 3943 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-115)] +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-96)] ] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -1.000 UL +0.500 UL LTa LCa setrgbcolor -4944 448 M -0 4423 V +4372 448 M +0 4171 V stroke +1.000 UL LTb LCb setrgbcolor -4944 448 M +4372 448 M 0 63 V -0 4360 R +0 4108 R 0 -63 V stroke -4944 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-110)] +4372 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-94)] ] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor -1.000 UL +0.500 UL LTa LCa setrgbcolor -5946 448 M -0 4220 V -0 140 R -0 63 V +4801 448 M +0 4171 V stroke +1.000 UL LTb LCb setrgbcolor -5946 448 M +4801 448 M 0 63 V -0 4360 R +0 4108 R 0 -63 V stroke -5946 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-105)] +4801 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-92)] ] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +5230 448 M +0 4171 V +stroke 1.000 UL +LTb +LCb setrgbcolor +5230 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5230 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-90)] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +1.000 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +5659 448 M +0 3828 V +0 280 R +0 63 V +stroke +1.000 UL +LTb +LCb setrgbcolor +5659 448 M +0 63 V +0 4108 R +0 -63 V +stroke +5659 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-88)] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +1.000 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +6089 448 M +0 3828 V +0 280 R +0 63 V +stroke +1.000 UL +LTb +LCb setrgbcolor +6089 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6089 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-86)] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +1.000 UL +LTb +LCb setrgbcolor +0.500 UL +LTa +LCa setrgbcolor +6518 448 M +0 3828 V +0 280 R +0 63 V +stroke +1.000 UL +LTb +LCb setrgbcolor +6518 448 M +0 63 V +0 4108 R +0 -63 V +stroke +6518 308 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-84)] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +1.000 UL +LTb +LCb setrgbcolor +0.500 UL LTa LCa setrgbcolor 6947 448 M -0 4423 V +0 4171 V stroke +1.000 UL LTb LCb setrgbcolor 6947 448 M 0 63 V -0 4360 R +0 4108 R 0 -63 V stroke 6947 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-100)] +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (-82)] ] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont 1.000 UL LTb LCb setrgbcolor 1.000 UL -LTb +LTB LCb setrgbcolor -938 4871 N +938 4619 N 938 448 L 6009 0 V -0 4423 V +0 4171 V -6009 0 V Z stroke -LCb setrgbcolor -112 2659 M -currentpoint gsave translate -270 rotate 0 0 moveto -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Packet Error Rate \(PER\))] -] -46.7 MCshow -grestore -LTb -LCb setrgbcolor -3942 98 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (RxPower \(dBm\))] -] -46.7 MCshow -LTb 1.000 UP 1.000 UL LTb LCb setrgbcolor +LCb setrgbcolor +133 2533 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Packet Error Rate \(%\))] +] -46.7 MCshow +grestore +/Times-BoldItalic findfont 140 scalefont setfont +LTb +LCb setrgbcolor +3942 98 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Rx signal \(dBm\))] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +LTb +LCb setrgbcolor +3942 4829 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Pkt Payload \(MSDU\) size = 7 bytes | Tx power = 0 dBm | Rx Sensitivity \(Theo\) = -106.58 dBm)] +] -46.7 MCshow +/Times-BoldItalic findfont 140 scalefont setfont +LTb % Begin plot #1 5.000 UL -LT0 +LTb LC0 setrgbcolor LCb setrgbcolor -6296 4738 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (802.15.4)] +6296 4486 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Experimental)] ] -46.7 MRshow -LT0 -6380 4738 M +/Times-BoldItalic findfont 140 scalefont setfont +5.000 UL +LTb +LC0 setrgbcolor +6380 4486 M 399 0 V -938 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 1142 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -3 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 1351 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 1559 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 1767 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -3 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 1976 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 2184 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 2392 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 2600 4871 M -2 0 V -2 0 V -2 0 V -3 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 2809 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 3017 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 3225 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -3 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 3434 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 3642 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 3850 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -3 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 4059 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 4267 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 4475 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -3 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 4684 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 4892 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -stroke 5100 4871 M -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V +938 4591 M +2 -2 V +2 1 V +2 -1 V +3 1 V +2 -1 V 2 -1 V 2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 -1 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 -1 V -2 0 V -2 0 V -2 0 V -2 0 V -2 0 V -2 -1 V -2 0 V -2 0 V -2 0 V -2 0 V -2 -1 V -2 0 V -2 0 V -2 0 V -2 -1 V -2 0 V -2 0 V -2 0 V -2 -1 V -2 0 V -2 0 V -2 -1 V -2 0 V -2 0 V -2 -1 V -2 0 V -2 0 V -2 -1 V -2 0 V -2 -1 V -2 0 V -2 -1 V -2 0 V -2 -1 V -2 0 V -2 -1 V -2 0 V -2 -1 V -2 0 V -2 -1 V +2 1 V +2 1 V +2 -2 V +3 1 V +2 1 V +2 -2 V 2 0 V 2 -1 V 2 -1 V 2 0 V 3 -1 V +2 1 V 2 0 V 2 -1 V +2 0 V +2 -1 V +3 -1 V +2 0 V +2 2 V +2 -1 V +2 -1 V +2 0 V +2 0 V +3 -1 V +2 1 V +2 -2 V +2 1 V +2 -1 V +2 0 V +2 0 V +3 1 V +2 -2 V +2 -2 V +2 3 V +2 -1 V +2 -1 V +2 -4 V +3 1 V +2 3 V +2 -4 V +2 1 V +2 -3 V +2 3 V +2 -2 V +3 -1 V +2 2 V +2 0 V +2 -3 V +2 -1 V +2 0 V +2 -1 V +3 0 V +2 -2 V +2 0 V +2 -1 V +2 -1 V +2 3 V +2 -7 V +3 2 V +2 2 V +2 -1 V +2 -1 V +2 -2 V +2 3 V +3 -3 V +2 1 V +2 1 V +2 -6 V +2 0 V +2 -2 V +2 -3 V +3 2 V +2 0 V +2 2 V +2 -2 V +2 -2 V +2 0 V +2 -3 V +3 -2 V +2 -1 V +2 1 V +2 2 V +2 -2 V +2 -2 V +2 0 V +3 -3 V +2 3 V +2 -9 V +2 6 V +2 -1 V +2 -6 V +2 8 V +3 0 V +2 -10 V +2 5 V +2 -4 V +2 -4 V +2 4 V +2 -5 V +3 10 V +2 -10 V +2 -5 V +2 2 V +2 2 V +2 -8 V +3 6 V +2 -2 V +2 -3 V +2 3 V +2 -7 V +2 2 V +2 0 V +3 1 V +2 -6 V +2 -1 V +2 1 V +2 -4 V +2 3 V +2 -3 V +3 -6 V +2 6 V +2 -12 V +2 4 V +2 -4 V +2 -2 V +2 6 V +3 -5 V +2 -1 V +2 2 V +2 -1 V +2 -2 V +2 -5 V +2 2 V +3 -4 V +2 -4 V +2 -7 V +2 7 V +2 1 V +2 -1 V +2 -6 V +3 -5 V +2 -5 V +2 7 V +2 -9 V +2 2 V +2 -8 V +2 9 V +3 4 V +2 -15 V +2 8 V +2 0 V +2 -1 V +2 -7 V +3 3 V +2 2 V +2 -10 V +2 1 V +2 2 V +2 -5 V +2 -3 V +3 -1 V +2 0 V +2 -2 V +2 -1 V +2 0 V +2 4 V +2 -6 V +3 -14 V +2 15 V +2 -10 V +2 -28 V +2 22 V +2 0 V +2 -11 V +3 8 V +2 -9 V +2 -4 V +2 8 V +2 6 V +2 -7 V +2 -6 V +3 -9 V +2 21 V +2 -22 V +2 -14 V +2 22 V +2 -11 V +2 0 V +3 3 V +2 -8 V +2 -5 V +2 7 V +2 -14 V +2 3 V +3 -11 V +2 8 V +2 12 V +2 -21 V +2 -10 V +2 14 V +2 0 V +3 -8 V +2 6 V +2 -7 V +2 -5 V +2 9 V +2 -10 V +2 -18 V +3 3 V +2 -5 V +2 7 V +2 8 V +2 9 V +2 -15 V +2 -13 V +3 3 V +2 9 V +2 -17 V +2 -5 V +2 9 V +2 0 V +2 4 V +3 -5 V +2 3 V +2 -10 V +2 -24 V +2 19 V +2 -9 V +2 -19 V +3 17 V +2 -5 V +2 -8 V +2 13 V +2 -28 V +2 -2 V +2 -1 V +3 12 V +2 -26 V +2 15 V +2 9 V +stroke 1468 4293 M +2 0 V +2 2 V +3 -9 V +2 -15 V +2 10 V +2 3 V +2 -36 V +2 18 V +2 6 V +3 -5 V +2 -3 V +2 -24 V +2 32 V +2 -32 V +2 6 V +2 7 V +3 -28 V +2 13 V +2 -18 V +2 22 V +2 6 V +2 -12 V +2 6 V +3 10 V +2 -25 V +2 -17 V +2 -2 V +2 -11 V +2 28 V +2 -7 V +3 20 V +2 -13 V +2 -37 V +2 6 V +2 11 V +2 -37 V +2 42 V +3 -19 V +2 17 V +2 -33 V +2 19 V +2 -37 V +2 14 V +3 28 V +2 -31 V +2 -15 V +2 4 V +2 42 V +2 -39 V +2 21 V +3 -28 V +2 7 V +2 15 V +2 -39 V +2 58 V +2 -96 V +2 70 V +3 -42 V +2 -28 V +2 80 V +2 -47 V +2 -27 V +2 -12 V +2 18 V +3 -73 V +2 99 V +2 4 V +2 -36 V +2 53 V +2 -71 V +2 -7 V +3 0 V +2 -8 V +2 33 V +2 6 V +2 0 V +2 -46 V +2 0 V +3 22 V +2 -7 V +2 13 V +2 -13 V +2 7 V +2 -22 V +2 -18 V +3 64 V +2 -95 V +2 40 V +2 -81 V +2 105 V +2 -53 V +3 -23 V +2 43 V +2 -31 V +2 -26 V +2 -15 V +2 81 V +2 -9 V +3 -72 V +2 63 V +2 -22 V +2 11 V +2 45 V +2 -68 V +2 -29 V +3 0 V +2 29 V +2 -29 V +2 41 V +2 -26 V +2 0 V +2 -75 V +3 23 V +2 89 V +2 -89 V +2 -89 V +2 109 V +2 -43 V +2 0 V +3 -29 V +2 89 V +4 -89 R +2 72 V +2 -109 V +2 126 V +3 0 V +2 -126 V +2 -141 V +2 250 V +2 -109 V +2 89 V +3 -230 V +2 89 V +2 0 V +2 89 V +2 0 V +2 52 V +2 -141 V +3 52 V +2 -52 V +2 0 V +2 89 V +2 0 V +2 0 V +2 -178 V +3 141 V +2 -52 V +2 0 V +2 52 V +2 -141 V +2 89 V +2 -89 V +3 89 V +2 89 V +2 -89 V +2 0 V +4 52 R +2 37 V +5 -89 R +2 -89 V +2 89 V +2 0 V +2 0 V +2 -89 V +3 89 V +2 -89 V +2 0 V +2 141 V +2 -141 V +2 89 V +2 -89 V +5 89 R +2 52 V +2 -52 V +2 -89 V +2 141 V +3 -141 V +4 0 R +2 141 V +4 -52 R +11 0 R +6 0 R +3 -89 V +2 89 V +2 -89 V +2 0 V +2 0 V +2 0 V +2 0 V +3 89 V +4 -89 R +4 0 R +4 0 R +11 0 R +30 0 R +2 89 V +5 -89 R +81 0 R +5 0 R +4 0 R +21 0 R +65 0 R +% End plot #1 +% Begin plot #2 +stroke +3.000 UL +LTb +LC1 setrgbcolor +LCb setrgbcolor +6296 4346 M +[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Theoretical)] +] -46.7 MRshow +/Times-BoldItalic findfont 140 scalefont setfont +3.000 UL +LTb +LC1 setrgbcolor +6380 4346 M +399 0 V +938 4586 M +2 0 V +2 0 V +2 0 V +3 -1 V +2 0 V +2 0 V +2 0 V +2 -1 V +2 0 V +2 0 V +3 -1 V +2 0 V +2 0 V +2 -1 V +2 0 V +2 0 V +2 -1 V +3 0 V +2 0 V +2 -1 V +2 0 V +2 -1 V +2 0 V +3 0 V +2 -1 V +2 0 V +2 -1 V +2 0 V +2 0 V +2 -1 V +3 0 V +2 -1 V +2 0 V +2 -1 V +2 0 V +2 -1 V +2 0 V +3 -1 V +2 0 V +2 -1 V +2 0 V +2 -1 V +2 0 V +2 -1 V +3 -1 V +2 0 V +2 -1 V +2 0 V +2 -1 V +2 0 V +2 -1 V +3 -1 V +2 0 V +2 -1 V +2 -1 V +2 0 V +2 -1 V +2 -1 V +3 0 V 2 -1 V 2 -1 V 2 0 V 2 -1 V 2 -1 V 2 -1 V -2 0 V -2 -1 V -2 -1 V +3 0 V 2 -1 V 2 -1 V 2 -1 V 2 0 V -stroke 5309 4841 M +2 -1 V +3 -1 V +2 -1 V +2 -1 V +2 -1 V +2 0 V +2 -1 V +2 -1 V +3 -1 V +2 -1 V +2 -1 V +2 -1 V +2 0 V +2 -1 V +2 -1 V +3 -1 V 2 -1 V 2 -1 V 2 -1 V 2 -1 V 2 -1 V 2 -1 V +3 -1 V 2 -1 V 2 -1 V 2 -1 V 2 -1 V 2 -1 V 2 -1 V +3 -1 V +2 -1 V +2 -2 V +2 -1 V +2 -1 V +2 -1 V +2 -1 V +3 -1 V +2 -1 V +2 -1 V +2 -2 V +2 -1 V +2 -1 V +3 -1 V +2 -1 V 2 -2 V 2 -1 V 2 -1 V 2 -1 V 2 -1 V -2 -1 V -2 -2 V -2 -1 V +3 -2 V 2 -1 V 2 -1 V 2 -2 V 2 -1 V 2 -1 V 2 -2 V +3 -1 V 2 -1 V 2 -2 V 2 -1 V 2 -1 V 2 -2 V 2 -1 V +3 -1 V 2 -2 V 2 -1 V 2 -2 V 2 -1 V 2 -2 V 2 -1 V +3 -2 V +2 -1 V +2 -1 V +2 -2 V +2 -1 V 2 -2 V 2 -2 V +3 -1 V +2 -2 V +2 -1 V +2 -2 V +2 -1 V +2 -2 V +2 -1 V +3 -2 V +2 -2 V +2 -1 V +2 -2 V +2 -1 V +2 -2 V +3 -2 V 2 -1 V 2 -2 V 2 -2 V 2 -1 V 2 -2 V 2 -2 V +3 -2 V 2 -1 V 2 -2 V 2 -2 V 2 -2 V 2 -1 V 2 -2 V -2 -2 V -2 -2 V -2 -2 V -2 -2 V -2 -2 V +3 -2 V 2 -2 V 2 -1 V 2 -2 V 2 -2 V 2 -2 V 2 -2 V +3 -2 V +2 -1 V +2 -2 V +2 -2 V +2 -2 V +2 -2 V +2 -2 V +3 -2 V +2 -2 V +2 -2 V +2 -2 V +2 -1 V +2 -2 V +2 -2 V +3 -2 V +2 -2 V +2 -2 V +2 -2 V +2 -2 V +2 -2 V +3 -2 V +2 -2 V +2 -2 V 2 -2 V 2 -2 V 2 -2 V 2 -3 V +3 -2 V 2 -2 V 2 -2 V 2 -2 V 2 -2 V 2 -2 V 2 -2 V -2 -2 V +3 -2 V 2 -3 V 2 -2 V 2 -2 V 2 -2 V +2 -2 V +2 -2 V +3 -3 V +2 -2 V +2 -2 V +2 -2 V +2 -2 V 2 -3 V 2 -2 V -2 -2 V +3 -2 V 2 -2 V 2 -3 V 2 -2 V 2 -2 V 2 -3 V 2 -2 V +3 -2 V +2 -2 V +2 -3 V +2 -2 V +2 -2 V +2 -3 V +2 -2 V +3 -3 V +2 -2 V +2 -2 V +2 -3 V +stroke 1468 4265 M +2 -2 V +2 -2 V +3 -3 V 2 -2 V 2 -3 V 2 -2 V 2 -3 V 2 -2 V 2 -3 V +3 -2 V 2 -2 V 2 -3 V 2 -2 V 2 -3 V 2 -2 V 2 -3 V +3 -3 V 2 -2 V 2 -3 V 2 -2 V 2 -3 V 2 -2 V -stroke 5517 4654 M +2 -3 V +3 -2 V 2 -3 V 2 -3 V 2 -2 V 2 -3 V +2 -2 V +2 -3 V +3 -3 V +2 -2 V +2 -3 V 2 -3 V 2 -2 V 2 -3 V 2 -3 V +3 -2 V +2 -3 V +2 -3 V 2 -2 V 2 -3 V 2 -3 V +3 -3 V +2 -2 V +2 -3 V +2 -3 V +2 -3 V +2 -2 V +2 -3 V +3 -3 V 2 -3 V 2 -3 V 2 -2 V 2 -3 V 2 -3 V 2 -3 V +3 -3 V +2 -3 V 2 -3 V 2 -2 V 2 -3 V 2 -3 V 2 -3 V +3 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V +3 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V +3 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V +3 -3 V +2 -3 V +2 -3 V +2 -3 V +2 -3 V +2 -3 V +3 -4 V +2 -3 V +2 -3 V +2 -3 V +2 -3 V +2 -3 V +2 -3 V +3 -4 V 2 -3 V 2 -3 V 2 -3 V 2 -3 V 2 -4 V 2 -3 V -2 -3 V -2 -3 V -2 -3 V +3 -3 V 2 -3 V 2 -4 V 2 -3 V 2 -3 V 2 -3 V 2 -4 V -2 -3 V -2 -3 V +3 -3 V 2 -3 V 2 -4 V 2 -3 V 2 -3 V 2 -4 V 2 -3 V -2 -3 V +3 -3 V 2 -4 V 2 -3 V 2 -4 V 2 -3 V 2 -3 V 2 -4 V +3 -3 V +2 -4 V +2 -3 V +2 -3 V +2 -4 V +2 -3 V +3 -4 V 2 -3 V 2 -4 V 2 -3 V 2 -4 V 2 -3 V 2 -4 V -2 -3 V -2 -3 V -2 -4 V -2 -4 V -2 -3 V -2 -4 V -2 -3 V -2 -4 V -2 -3 V -2 -4 V -2 -3 V -2 -4 V +3 -3 V 2 -4 V 2 -3 V 2 -4 V 2 -4 V 2 -3 V 2 -4 V +3 -3 V 2 -4 V +2 -4 V +2 -3 V +2 -4 V +2 -3 V +2 -4 V +3 -4 V 2 -3 V 2 -4 V 2 -4 V 2 -3 V 2 -4 V 2 -4 V +3 -4 V +2 -3 V +2 -4 V +2 -4 V 2 -4 V 2 -3 V 2 -4 V -stroke 5725 4319 M +3 -4 V 2 -4 V 2 -4 V 2 -3 V 2 -4 V 2 -4 V 2 -4 V -2 -4 V +3 -4 V 2 -4 V 2 -3 V 2 -4 V 2 -4 V 2 -4 V +3 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V +3 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V +3 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V -2 -4 V -2 -4 V -2 -4 V -2 -4 V -2 -4 V +3 -4 V 2 -4 V 2 -5 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V +3 -4 V 2 -5 V 2 -4 V 2 -4 V 2 -4 V 2 -4 V 2 -5 V -2 -4 V +3 -4 V 2 -4 V 2 -4 V 2 -5 V 2 -4 V 2 -4 V +3 -5 V +2 -4 V +2 -4 V 2 -5 V 2 -4 V 2 -4 V 2 -5 V -2 -4 V -2 -5 V -2 -4 V -2 -4 V -2 -5 V -2 -4 V -2 -5 V -2 -4 V +3 -4 V 2 -4 V 2 -5 V 2 -4 V 2 -5 V 2 -4 V 2 -5 V +3 -4 V +2 -5 V +2 -4 V +2 -5 V +2 -4 V +2 -5 V +2 -4 V +3 -5 V 2 -4 V 2 -5 V 2 -4 V 2 -5 V -2 -5 V 2 -4 V 2 -5 V +stroke 2002 3410 M +3 -5 V 2 -4 V 2 -5 V 2 -5 V 2 -4 V 2 -5 V 2 -5 V -2 -4 V +3 -4 V 2 -5 V 2 -5 V 2 -4 V 2 -5 V 2 -5 V -2 -4 V -2 -5 V -2 -5 V -2 -5 V -2 -4 V 2 -5 V +3 -4 V 2 -5 V 2 -5 V 2 -5 V 2 -5 V 2 -4 V +3 -5 V 2 -5 V 2 -5 V 2 -5 V -stroke 5933 3870 M +2 -5 V +2 -5 V +2 -5 V +3 -4 V +2 -5 V 2 -5 V 2 -5 V 2 -5 V 2 -5 V 2 -5 V 3 -5 V -2 -4 V -2 -5 V -2 -5 V -2 -5 V -2 -5 V -2 -5 V -2 -6 V 2 -5 V 2 -5 V 2 -5 V 2 -5 V 2 -5 V 2 -5 V +3 -6 V 2 -5 V 2 -5 V 2 -5 V +2 -5 V +2 -5 V +2 -5 V +3 -5 V 2 -6 V 2 -5 V 2 -5 V 2 -5 V 2 -5 V 2 -6 V -2 -5 V -2 -5 V -2 -5 V -2 -6 V -2 -5 V -2 -5 V -2 -5 V -2 -6 V +3 -5 V 2 -5 V 2 -5 V 2 -6 V 2 -5 V 2 -5 V +3 -6 V +2 -5 V +2 -5 V 2 -6 V 2 -5 V 2 -6 V 2 -5 V -2 -6 V -2 -5 V -2 -6 V -2 -5 V -2 -5 V -2 -6 V +3 -5 V 2 -6 V 2 -5 V 2 -6 V 2 -5 V 2 -6 V 2 -5 V -2 -6 V +3 -6 V +2 -5 V 2 -6 V 2 -5 V 2 -6 V 2 -5 V 2 -6 V +3 -5 V 2 -6 V 2 -6 V 2 -5 V 2 -6 V 2 -6 V 2 -5 V +3 -6 V 2 -6 V +2 -5 V +2 -6 V +2 -6 V +2 -6 V +2 -5 V +3 -6 V 2 -6 V 2 -6 V 2 -6 V 2 -5 V 2 -6 V 2 -6 V +3 -6 V 2 -6 V 2 -6 V 2 -6 V 2 -6 V -2 -5 V +2 -6 V +3 -6 V 2 -6 V 2 -6 V 2 -6 V 2 -6 V 2 -6 V 2 -6 V +3 -6 V 2 -6 V 2 -6 V 2 -6 V 2 -6 V 2 -6 V 2 -6 V +3 -6 V 2 -7 V 2 -6 V 2 -6 V 2 -6 V 2 -6 V -2 -6 V +2 -7 V +3 -6 V 2 -6 V 2 -7 V 2 -6 V 2 -6 V 2 -6 V -stroke 6142 3294 M 2 -7 V -2 -6 V -2 -6 V -2 -6 V -2 -7 V -2 -6 V -2 -6 V +3 -6 V 2 -7 V 2 -6 V 2 -6 V 2 -7 V 2 -6 V 2 -7 V -2 -6 V +3 -6 V 2 -7 V 2 -6 V 2 -7 V 2 -6 V 2 -7 V -2 -6 V -2 -7 V -2 -6 V +3 -6 V 2 -7 V 2 -6 V 2 -7 V 2 -7 V 2 -6 V 2 -7 V -2 -7 V -2 -6 V -2 -7 V -2 -7 V -2 -6 V -2 -7 V -2 -7 V -2 -7 V -2 -7 V -2 -6 V -2 -7 V -2 -7 V -2 -7 V +3 -6 V 2 -7 V 2 -7 V 2 -7 V 2 -6 V 2 -7 V 2 -7 V +3 -7 V +2 -6 V +2 -7 V +2 -7 V +2 -7 V +2 -7 V +2 -6 V +3 -7 V 2 -7 V 2 -7 V 2 -7 V 2 -7 V 2 -7 V 2 -7 V +3 -7 V +2 -7 V +2 -7 V +2 -7 V +2 -7 V +2 -7 V +2 -7 V +3 -7 V 2 -7 V 2 -8 V 2 -7 V 2 -7 V 2 -7 V 2 -7 V -2 -7 V -2 -7 V -2 -8 V +3 -8 V 2 -7 V 2 -7 V 2 -7 V 2 -8 V 2 -7 V -2 -7 V +3 -7 V 2 -8 V 2 -7 V 2 -7 V 2 -8 V 2 -7 V +2 -8 V +3 -7 V 2 -7 V 2 -8 V 2 -7 V 2 -8 V 2 -7 V 2 -8 V -2 -7 V -2 -8 V +3 -8 V 2 -7 V 2 -8 V 2 -7 V 2 -8 V 2 -8 V 2 -7 V -2 -8 V -2 -8 V -2 -7 V -2 -8 V +3 -8 V 2 -8 V 2 -7 V 2 -8 V 2 -8 V 2 -8 V 2 -7 V +3 -8 V 2 -8 V 2 -8 V 2 -8 V 2 -8 V 2 -8 V 2 -8 V -2 -8 V -stroke 6350 2559 M -2 -8 V -2 -8 V -2 -8 V -2 -8 V -2 -8 V -2 -8 V -2 -8 V +3 -7 V 2 -8 V 2 -8 V 2 -8 V 2 -8 V 2 -8 V +3 -8 V 2 -9 V 2 -8 V 2 -8 V 2 -8 V 2 -8 V +2 -8 V +3 -8 V 2 -9 V 2 -8 V +stroke 2537 1853 M +2 -8 V 2 -8 V 2 -9 V 2 -8 V +3 -8 V 2 -8 V 2 -9 V 2 -8 V 2 -9 V 2 -8 V 2 -8 V +3 -9 V +2 -8 V 2 -9 V 2 -8 V 2 -9 V +2 -8 V 2 -9 V +3 -9 V 2 -8 V 2 -9 V 2 -8 V 2 -9 V 2 -9 V 2 -8 V -2 -9 V -2 -9 V -2 -8 V +3 -9 V 2 -9 V 2 -9 V 2 -9 V 2 -8 V 2 -9 V 2 -9 V +3 -9 V 2 -9 V 2 -9 V 2 -9 V 2 -9 V 2 -9 V +3 -8 V +2 -9 V +2 -10 V 2 -9 V 2 -9 V 2 -9 V 2 -9 V -2 -9 V -2 -9 V -2 -9 V -2 -9 V -2 -9 V +3 -9 V 2 -9 V 2 -9 V 2 -10 V 2 -9 V 2 -9 V 2 -9 V -2 -10 V +3 -10 V 2 -9 V 2 -9 V 2 -10 V 2 -9 V 2 -9 V 2 -10 V -2 -9 V +3 -9 V 2 -10 V 2 -9 V 2 -10 V 2 -9 V 2 -10 V 2 -9 V +3 -10 V +2 -10 V +2 -9 V 2 -10 V 2 -9 V 2 -10 V 2 -10 V -2 -9 V -2 -10 V -2 -10 V -2 -10 V +3 -10 V 2 -9 V 2 -10 V 2 -10 V 2 -10 V 2 -10 V -2 -10 V +3 -10 V 2 -9 V 2 -10 V 2 -10 V -2 -10 V -2 -10 V -2 -10 V -2 -10 V -2 -10 V -2 -10 V -stroke 6558 1626 M -2 -11 V -2 -10 V -2 -10 V -2 -10 V -2 -10 V 2 -11 V -2 -10 V -2 -10 V -2 -10 V -2 -10 V +2 -9 V 2 -11 V +3 -9 V 2 -10 V 2 -11 V 2 -10 V 2 -10 V 2 -11 V -2 -11 V -2 -10 V -2 -11 V -2 -10 V -2 -11 V -2 -10 V -2 -11 V -2 -11 V -2 -11 V -2 -10 V -2 -11 V -3 -11 V -2 -10 V -2 -11 V -2 -12 V -2 -10 V -2 -10 V -2 -12 V -2 -12 V 2 -9 V +3 -10 V +2 -11 V +2 -11 V +2 -8 V 2 -9 V -2 -16 V +2 -15 V 2 -11 V -2 -6 V -2 -14 V -2 -14 V -2 -8 V -2 -8 V -2 -18 V -2 -11 V -2 -11 V -2 -12 V +3 -5 V 2 -13 V +2 -13 V +2 -8 V +2 -7 V +2 -18 V +2 -9 V +3 -10 V +2 -12 V +2 -12 V 2 0 V -2 -14 V +2 -13 V 2 -16 V -2 -19 V +2 -17 V +3 0 V +2 -20 V 2 0 V -2 -21 V -2 0 V -2 -25 V +2 -23 V 2 0 V 2 0 V -2 -30 V +2 -29 V +3 0 V +2 0 V +2 -37 V 2 0 V 2 0 V -2 -40 V -2 0 V -2 0 V -2 -55 V +2 -52 V +3 0 V 2 0 V 2 0 V 2 0 V 2 0 V +2 -89 V 2 0 V -2 -96 V +3 0 V 2 0 V 2 0 V 2 0 V 2 0 V 2 0 V 2 0 V +3 0 V 2 0 V 2 0 V 2 0 V -2 0 V -2 0 V -2 0 V -0 -332 V -% End plot #1 +% End plot #2 stroke -1.000 UL +2.000 UL LTb LCb setrgbcolor -938 4871 N +1.000 UL +LTB +LCb setrgbcolor +938 4619 N 938 448 L 6009 0 V -0 4423 V +0 4171 V -6009 0 V Z stroke 1.000 UP 1.000 UL +[] 0 setdash +0.00 0.50 1.00 C +938 4003 M +6009 0 V +stroke LTb LCb setrgbcolor stroke diff --git a/src/lr-wpan/doc/802-15-4-psr-distance.eps b/src/lr-wpan/doc/802-15-4-psr-distance.eps deleted file mode 100644 index 6228a021e..000000000 --- a/src/lr-wpan/doc/802-15-4-psr-distance.eps +++ /dev/null @@ -1,908 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: 802.15.4-psr-distance.eps -%%Creator: gnuplot 4.4 patchlevel 2 -%%CreationDate: Tue Oct 4 13:04:05 2011 -%%DocumentFonts: (atend) -%%BoundingBox: 50 50 410 302 -%%EndComments -%%BeginProlog -/gnudict 256 dict def -gnudict begin -% -% The following true/false flags may be edited by hand if desired. -% The unit line width and grayscale image gamma correction may also be changed. -% -/Color true def -/Blacktext false def -/Solid false def -/Dashlength 1 def -/Landscape false def -/Level1 false def -/Rounded false def -/ClipToBoundingBox false def -/TransparentPatterns false def -/gnulinewidth 5.000 def -/userlinewidth gnulinewidth def -/Gamma 1.0 def -% -/vshift -46 def -/dl1 { - 10.0 Dashlength mul mul - Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if -} def -/dl2 { - 10.0 Dashlength mul mul - Rounded { currentlinewidth 0.75 mul add } if -} def -/hpt_ 31.5 def -/vpt_ 31.5 def -/hpt hpt_ def -/vpt vpt_ def -Level1 {} { -/SDict 10 dict def -systemdict /pdfmark known not { - userdict /pdfmark systemdict /cleartomark get put -} if -SDict begin [ - /Title (802.15.4-psr-distance.eps) - /Subject (gnuplot plot) - /Creator (gnuplot 4.4 patchlevel 2) - /Author (tomh) -% /Producer (gnuplot) -% /Keywords () - /CreationDate (Tue Oct 4 13:04:05 2011) - /DOCINFO pdfmark -end -} ifelse -/doclip { - ClipToBoundingBox { - newpath 50 50 moveto 410 50 lineto 410 302 lineto 50 302 lineto closepath - clip - } if -} def -% -% Gnuplot Prolog Version 4.4 (August 2010) -% -%/SuppressPDFMark true def -% -/M {moveto} bind def -/L {lineto} bind def -/R {rmoveto} bind def -/V {rlineto} bind def -/N {newpath moveto} bind def -/Z {closepath} bind def -/C {setrgbcolor} bind def -/f {rlineto fill} bind def -/g {setgray} bind def -/Gshow {show} def % May be redefined later in the file to support UTF-8 -/vpt2 vpt 2 mul def -/hpt2 hpt 2 mul def -/Lshow {currentpoint stroke M 0 vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def -/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def -/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R - Blacktext {gsave 0 setgray show grestore} {show} ifelse} def -/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def - /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def -/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} - {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def -/BL {stroke userlinewidth 2 mul setlinewidth - Rounded {1 setlinejoin 1 setlinecap} if} def -/AL {stroke userlinewidth 2 div setlinewidth - Rounded {1 setlinejoin 1 setlinecap} if} def -/UL {dup gnulinewidth mul /userlinewidth exch def - dup 1 lt {pop 1} if 10 mul /udl exch def} def -/PL {stroke userlinewidth setlinewidth - Rounded {1 setlinejoin 1 setlinecap} if} def -3.8 setmiterlimit -% Default Line colors -/LCw {1 1 1} def -/LCb {0 0 0} def -/LCa {0 0 0} def -/LC0 {1 0 0} def -/LC1 {0 1 0} def -/LC2 {0 0 1} def -/LC3 {1 0 1} def -/LC4 {0 1 1} def -/LC5 {1 1 0} def -/LC6 {0 0 0} def -/LC7 {1 0.3 0} def -/LC8 {0.5 0.5 0.5} def -% Default Line Types -/LTw {PL [] 1 setgray} def -/LTb {BL [] LCb DL} def -/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def -/LT0 {PL [] LC0 DL} def -/LT1 {PL [4 dl1 2 dl2] LC1 DL} def -/LT2 {PL [2 dl1 3 dl2] LC2 DL} def -/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def -/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def -/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def -/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def -/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def -/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def -/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def -/Dia {stroke [] 0 setdash 2 copy vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke - Pnt} def -/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V - currentpoint stroke M - hpt neg vpt neg R hpt2 0 V stroke - } def -/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke - Pnt} def -/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M - hpt2 vpt2 neg V currentpoint stroke M - hpt2 neg 0 R hpt2 vpt2 V stroke} def -/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke - Pnt} def -/Star {2 copy Pls Crs} def -/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath fill} def -/TriUF {stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath fill} def -/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke - Pnt} def -/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath fill} def -/DiaF {stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath fill} def -/Pent {stroke [] 0 setdash 2 copy gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore Pnt} def -/PentF {stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath fill grestore} def -/Circle {stroke [] 0 setdash 2 copy - hpt 0 360 arc stroke Pnt} def -/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def -/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def -/C1 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - vpt 0 360 arc closepath} bind def -/C2 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath} bind def -/C3 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - vpt 0 360 arc closepath} bind def -/C4 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc closepath} bind def -/C5 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc - 2 copy moveto - 2 copy vpt 180 270 arc closepath fill - vpt 0 360 arc} bind def -/C6 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 270 arc closepath fill - vpt 0 360 arc closepath} bind def -/C7 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 270 arc closepath fill - vpt 0 360 arc closepath} bind def -/C8 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath} bind def -/C9 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 270 450 arc closepath fill - vpt 0 360 arc closepath} bind def -/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill - 2 copy moveto - 2 copy vpt 90 180 arc closepath fill - vpt 0 360 arc closepath} bind def -/C11 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 180 arc closepath fill - 2 copy moveto - 2 copy vpt 270 360 arc closepath fill - vpt 0 360 arc closepath} bind def -/C12 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath} bind def -/C13 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 0 90 arc closepath fill - 2 copy moveto - 2 copy vpt 180 360 arc closepath fill - vpt 0 360 arc closepath} bind def -/C14 {BL [] 0 setdash 2 copy moveto - 2 copy vpt 90 360 arc closepath fill - vpt 0 360 arc} bind def -/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill - vpt 0 360 arc closepath} bind def -/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto - neg 0 rlineto closepath} bind def -/Square {dup Rec} bind def -/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def -/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def -/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def -/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def -/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def -/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def -/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill - exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def -/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def -/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill - 2 copy vpt Square fill Bsquare} bind def -/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def -/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def -/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill - Bsquare} bind def -/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill - Bsquare} bind def -/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def -/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy vpt Square fill Bsquare} bind def -/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill - 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def -/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def -/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def -/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def -/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def -/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def -/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def -/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def -/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def -/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def -/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def -/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def -/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def -/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def -/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def -/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def -/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def -/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def -/DiaE {stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V closepath stroke} def -/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V closepath stroke} def -/TriUE {stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V closepath stroke} def -/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V closepath stroke} def -/PentE {stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - closepath stroke grestore} def -/CircE {stroke [] 0 setdash - hpt 0 360 arc stroke} def -/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def -/DiaW {stroke [] 0 setdash vpt add M - hpt neg vpt neg V hpt vpt neg V - hpt vpt V hpt neg vpt V Opaque stroke} def -/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M - 0 vpt2 neg V hpt2 0 V 0 vpt2 V - hpt2 neg 0 V Opaque stroke} def -/TriUW {stroke [] 0 setdash vpt 1.12 mul add M - hpt neg vpt -1.62 mul V - hpt 2 mul 0 V - hpt neg vpt 1.62 mul V Opaque stroke} def -/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M - hpt neg vpt 1.62 mul V - hpt 2 mul 0 V - hpt neg vpt -1.62 mul V Opaque stroke} def -/PentW {stroke [] 0 setdash gsave - translate 0 hpt M 4 {72 rotate 0 hpt L} repeat - Opaque stroke grestore} def -/CircW {stroke [] 0 setdash - hpt 0 360 arc Opaque stroke} def -/BoxFill {gsave Rec 1 setgray fill grestore} def -/Density { - /Fillden exch def - currentrgbcolor - /ColB exch def /ColG exch def /ColR exch def - /ColR ColR Fillden mul Fillden sub 1 add def - /ColG ColG Fillden mul Fillden sub 1 add def - /ColB ColB Fillden mul Fillden sub 1 add def - ColR ColG ColB setrgbcolor} def -/BoxColFill {gsave Rec PolyFill} def -/PolyFill {gsave Density fill grestore grestore} def -/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def -% -% PostScript Level 1 Pattern Fill routine for rectangles -% Usage: x y w h s a XX PatternFill -% x,y = lower left corner of box to be filled -% w,h = width and height of box -% a = angle in degrees between lines and x-axis -% XX = 0/1 for no/yes cross-hatch -% -/PatternFill {gsave /PFa [ 9 2 roll ] def - PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate - PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec - gsave 1 setgray fill grestore clip - currentlinewidth 0.5 mul setlinewidth - /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def - 0 0 M PFa 5 get rotate PFs -2 div dup translate - 0 1 PFs PFa 4 get div 1 add floor cvi - {PFa 4 get mul 0 M 0 PFs V} for - 0 PFa 6 get ne { - 0 1 PFs PFa 4 get div 1 add floor cvi - {PFa 4 get mul 0 2 1 roll M PFs 0 V} for - } if - stroke grestore} def -% -/languagelevel where - {pop languagelevel} {1} ifelse - 2 lt - {/InterpretLevel1 true def} - {/InterpretLevel1 Level1 def} - ifelse -% -% PostScript level 2 pattern fill definitions -% -/Level2PatternFill { -/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} - bind def -/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def -<< Tile8x8 - /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} ->> matrix makepattern -/Pat1 exch def -<< Tile8x8 - /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke - 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} ->> matrix makepattern -/Pat2 exch def -<< Tile8x8 - /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L - 8 8 L 8 0 L 0 0 L fill} ->> matrix makepattern -/Pat3 exch def -<< Tile8x8 - /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L - 0 12 M 12 0 L stroke} ->> matrix makepattern -/Pat4 exch def -<< Tile8x8 - /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L - 0 -4 M 12 8 L stroke} ->> matrix makepattern -/Pat5 exch def -<< Tile8x8 - /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L - 0 12 M 8 -4 L 4 12 M 10 0 L stroke} ->> matrix makepattern -/Pat6 exch def -<< Tile8x8 - /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L - 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} ->> matrix makepattern -/Pat7 exch def -<< Tile8x8 - /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L - 12 0 M -4 8 L 12 4 M 0 10 L stroke} ->> matrix makepattern -/Pat8 exch def -<< Tile8x8 - /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L - -4 0 M 12 8 L -4 4 M 8 10 L stroke} ->> matrix makepattern -/Pat9 exch def -/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def -/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def -/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def -/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def -/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def -/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def -/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def -} def -% -% -%End of PostScript Level 2 code -% -/PatternBgnd { - TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse -} def -% -% Substitute for Level 2 pattern fill codes with -% grayscale if Level 2 support is not selected. -% -/Level1PatternFill { -/Pattern1 {0.250 Density} bind def -/Pattern2 {0.500 Density} bind def -/Pattern3 {0.750 Density} bind def -/Pattern4 {0.125 Density} bind def -/Pattern5 {0.375 Density} bind def -/Pattern6 {0.625 Density} bind def -/Pattern7 {0.875 Density} bind def -} def -% -% Now test for support of Level 2 code -% -Level1 {Level1PatternFill} {Level2PatternFill} ifelse -% -/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont -dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall -currentdict end definefont pop -/MFshow { - { dup 5 get 3 ge - { 5 get 3 eq {gsave} {grestore} ifelse } - {dup dup 0 get findfont exch 1 get scalefont setfont - [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 - get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq - {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 - get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div - dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get - show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop - pop aload pop M} ifelse }ifelse }ifelse } - ifelse } - forall} def -/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def -/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } - {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont - 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def -/MLshow { currentpoint stroke M - 0 exch R - Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def -/MRshow { currentpoint stroke M - exch dup MFwidth neg 3 -1 roll R - Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def -/MCshow { currentpoint stroke M - exch dup MFwidth -2 div 3 -1 roll R - Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def -/XYsave { [( ) 1 2 true false 3 ()] } bind def -/XYrestore { [( ) 1 2 true false 4 ()] } bind def -end -%%EndProlog -gnudict begin -gsave -doclip -50 50 translate -0.050 0.050 scale -0 setgray -newpath -(Times-BoldItalic) findfont 140 scalefont setfont -1.000 UL -LTb -1.000 UL -LTa -686 448 M -6261 0 V -stroke -LTb -686 448 M -63 0 V -6198 0 R --63 0 V -stroke -602 448 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0)] -] -46.7 MRshow -1.000 UL -LTb -1.000 UL -LTa -686 1282 M -6261 0 V -stroke -LTb -686 1282 M -63 0 V -6198 0 R --63 0 V -stroke -602 1282 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.2)] -] -46.7 MRshow -1.000 UL -LTb -1.000 UL -LTa -686 2116 M -6261 0 V -stroke -LTb -686 2116 M -63 0 V -6198 0 R --63 0 V -stroke -602 2116 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.4)] -] -46.7 MRshow -1.000 UL -LTb -1.000 UL -LTa -686 2951 M -6261 0 V -stroke -LTb -686 2951 M -63 0 V -6198 0 R --63 0 V -stroke -602 2951 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.6)] -] -46.7 MRshow -1.000 UL -LTb -1.000 UL -LTa -686 3785 M -6261 0 V -stroke -LTb -686 3785 M -63 0 V -6198 0 R --63 0 V -stroke -602 3785 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0.8)] -] -46.7 MRshow -1.000 UL -LTb -1.000 UL -LTa -686 4619 M -6261 0 V -stroke -LTb -686 4619 M -63 0 V -6198 0 R --63 0 V -stroke -602 4619 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 1)] -] -46.7 MRshow -1.000 UL -LTb -1.000 UL -LTa -686 448 M -0 4171 V -stroke -LTb -686 448 M -0 63 V -0 4108 R -0 -63 V -stroke -686 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 0)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTa -2251 448 M -0 4171 V -stroke -LTb -2251 448 M -0 63 V -0 4108 R -0 -63 V -stroke -2251 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 50)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTa -3816 448 M -0 4171 V -stroke -LTb -3816 448 M -0 63 V -0 4108 R -0 -63 V -stroke -3816 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 100)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTa -5382 448 M -0 3968 V -0 140 R -0 63 V -stroke -LTb -5382 448 M -0 63 V -0 4108 R -0 -63 V -stroke -5382 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 150)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTa -6947 448 M -0 4171 V -stroke -LTb -6947 448 M -0 63 V -0 4108 R -0 -63 V -stroke -6947 308 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 ( 200)] -] -46.7 MCshow -1.000 UL -LTb -1.000 UL -LTb -686 4619 N -686 448 L -6261 0 V -0 4171 V --6261 0 V -Z stroke -LCb setrgbcolor -112 2533 M -currentpoint gsave translate -270 rotate 0 0 moveto -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Packet Success Rate \(PSR\))] -] -46.7 MCshow -grestore -LTb -LCb setrgbcolor -3816 98 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (distance \(m\))] -] -46.7 MCshow -LTb -3816 4829 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (Packet \(MSDU\) size = 20 bytes; tx power = 0 dBm; channel = 11)] -] -46.7 MCshow -1.000 UP -1.000 UL -LTb -% Begin plot #1 -5.000 UL -LT0 -LCb setrgbcolor -6296 4486 M -[ [(Times-BoldItalic) 140.0 0.0 true true 0 (802.15.4-psr-vs-distance)] -] -46.7 MRshow -LT0 -6380 4486 M -399 0 V -717 4619 M -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 -4 V -31 -4 V -31 8 V -31 0 V -32 -13 V -31 -4 V -31 -16 V -32 -30 V -31 -41 V -31 4 V -32 -88 V -31 -62 V -31 -100 V -32 -113 V -31 -83 V -31 -176 V -31 -141 V -32 -263 V -31 -367 V -31 -175 V -32 -284 V -31 -359 V -31 -308 V -32 -217 V -31 -234 V -31 -296 V -31 -192 V -32 -96 V -31 -162 V -31 -163 V -stroke 3910 640 M -32 -34 V -31 -41 V -31 -42 V -32 -46 V -31 -12 V -31 -13 V -32 17 V -31 -13 V -31 -8 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -31 0 V -32 0 V -31 0 V -31 0 V -32 0 V -% End plot #1 -stroke -1.000 UL -LTb -686 4619 N -686 448 L -6261 0 V -0 4171 V --6261 0 V -Z stroke -1.000 UP -1.000 UL -LTb -stroke -grestore -end -showpage -%%Trailer -%%DocumentFonts: Times-BoldItalic diff --git a/src/lr-wpan/doc/802.15.4-psr-distance.eps b/src/lr-wpan/doc/802.15.4-psr-distance.eps new file mode 100644 index 000000000..fa8274832 --- /dev/null +++ b/src/lr-wpan/doc/802.15.4-psr-distance.eps @@ -0,0 +1,590 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.16.0 (https://cairographics.org) +%%CreationDate: Tue Feb 7 16:42:56 2023 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 4 1 354 245 +%%EndComments +%%BeginProlog +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +/cairo_data_source { + CairoDataIndex CairoData length lt + { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } + { () } ifelse +} def +/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def +/cairo_image { image cairo_flush_ascii85_file } def +/cairo_imagemask { imagemask cairo_flush_ascii85_file } def +%%EndProlog +%%BeginSetup +%%BeginResource: font f-0-0 +%!FontType1-1.1 f-0-0 1.0 +11 dict begin +/FontName /f-0-0 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/FontBBox {-120 -205 917 699 } readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 32 /space put +dup 40 /parenleft put +dup 41 /parenright put +dup 45 /hyphen put +dup 46 /period put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 52 /four put +dup 53 /five put +dup 54 /six put +dup 55 /seven put +dup 56 /eight put +dup 57 /nine put +dup 59 /semicolon put +dup 61 /equal put +dup 66 /B put +dup 68 /D put +dup 77 /M put +dup 80 /P put +dup 82 /R put +dup 83 /S put +dup 85 /U put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 104 /h put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +readonly def +currentdict end +currentfile eexec +f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467 +b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de +800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f +2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b +9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799 +69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5 +8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251ca91d1147e394b8 +770feb7fd46a77e2961ec91bb9263dc0e43eb9a3b990c9761127f2236d69136be42a8ece293f20 +5e8c6985d36b970354af6976b59de1a9aee59b1b7c4d57d3e7115622fce48a99cd7903af13d778 +b61bdf26278782d0626afcd805edf6882452f3ba0b8a06550e5e742680a1db9e9c38aff42a0b05 +0a9f5f0b9355ad3cd836918714c3f69d1b8ce860e052d6ee0bf9c73c967566711ee88068b4f1e1 +8e9f1de06e22b50a1802b961bf321e086c078478c600fa019a221bda4d0691a1bb176b02a3095e +c2a8437df5f02ae027612189ff9fa60c7236e5bf6cafe3cf2387597370a08fa1249ace038b4c9a +ecc6e711908d08521015920bfc534c4cf64bf8005abe859dc2969a27784051abe57be19aba6937 +c8d9cd449d007816c1381fc06b1f9d0f750dc5eda5f766e4245b5797d2d8e322f2a38ed3880ae7 +13f2edc17311c12c168e50150fe0e343da65e3f2bd139450022b55e23392a2de02f289617dd4cd +f3c47d52ea553d5a2feaf00f8aa0c17f95745f872dce13d2e1a26248be73aef3e76cf72414b24a +a796fcf2778035fbd97ad4fc2b916c3a324e4d36cee9fcb580e5d1d9073ae58a01be98418b9425 +0619218c1fcba7037a689ec83fc42d6dea7d609e3cc45d07e289084a878c33a77c492427e6408f +895707f95831bf9c8b230d9aa553f2e62ed301bf822df01c64e122b25bb3e929552940d69d9bea +0db22cc1f90a5cf9eb63dd3fd52f41d5c1c8a9ac478b48459e5882b062bc78675aa1e2d6e70326 +69af62ed53d03ed4c7e7b4c3d5c63878fc98a0f891b0b3f4112f9203b201b4df315d423d009273 +6dd784bf0eebd9bc9407c803adaa20de750884ade854491b14660b23ce1830344c320cb26e2bd2 +41b916c30c94de287fd3b8ab8116011e8c5e43c528d22dbc4f1bf6400e422b7f0e02eb53adf5a0 +8f5a1d4fb192188430efa7dd558329569b4cdf8f07ca29b0f906bdb164ecd6762e55c4113af599 +e4b4abcdd41d05de6bd6add6fb8f684b0d9583a56602d13c5b64e2e837ec5c238704efe8039f95 +b5edc8221765f744db766f5224c324cab2ecc72cb20b58b5f19426e5d29f3a5b429cee7b45a71d +781ea61d2ce93533201e8706f71d3a9c29b4b2db6398a8a9ecbcf3588ca6da6fca2a72fbe479ad +0af932e399f3932445b10b4740fb1d437ccabc5b42701242666828fdc8b131c8ea8eca9e0b822c +7f88e9fc49256dc6f6e52fc0a00c38428324478492d15b18959fb09cf28004562bf53b6eca151a +7994261c2c3e6fb99fa87fe90500277c32f4d902dc6405f5cf752555994d05bd98c9902a518cc6 +1b3ac3ffd041ed82d8279a2a1c3c5729aa6dfd811b08ac5715c20fb012eb3ddb611d5aa0386a5d +cd8d878e1b90baa9073032eb31ed3f35385621284e8fd6d31b0bdd56f214c324928eb57bbe7b4d +24cd67ee34b6a22c77a6d80ff843102c723511c3c261dec9462b6a191384d99d52545a9bbae451 +89c114aacd395f5d2ed9b9c2b5eab9f109c36c915f36678ee984a1b8a65b38ed6d48ef11648b9a +4e21d51bae9df39b17e0cc40a0cd3c453f85bcadcef2210d39d1b3259c3cd7bce8f8da5cc94cdd +32201bc55a2f74431d84f5573b59e6e1ac3d7b3b80725961993759f63077b206d987d8f61ab3b2 +1173653792b1e586728bbfbbd5687d6acac39c5c984ccf92242196b4ab5d5408b6949f35803fc5 +f4840b0b561802400007802c4467b55610152573415ba53f207b104de7d912c5bf47751d85385d +f45b5728f0c7222dd4800d300e92a631f5523738c581300c61c41099563b1cc5d5d75fdfa6a249 +6e883227020870adfff63688a6d6e32d649e3e802919138035d53be2663efcbafa6f3f01c12dd5 +e73272506a4e1e0a0ba4ee185c8f2631f1c47991bcd441a3fb971a920a995d56e51abb9273c056 +ab190ba8b3eab9924dcf25e9eaf74fd2a2adeb0fe586522738c94df776270068587b9e2951285d +f961df30828870115939160f7baca86e9b7eeee4778159d4b82acb2b4934970ca8af657637ce28 +1fc7195fff0c26a35b5763d1c84b75f45df695b55f565e83e72dca59c528fc9c2f9fb8bb1d3836 +0b3f87cbcd36f96e6680960b5f78d1660180ea3ba73c0df17e9d1b3c4939c8dd8eb4a95277934c +a417af85e4f3ceee61bd0d6a18687471d8dec2cfb65d8a1ee30adcd50f6354045e61aa3f1d35d1 +a5f39c1228be448f4e15fee8a8309d3144e8e494b5483680599ce430e1e7b219b8e156f6dd0049 +e34e53d0463376b77b365bebaf08f9c1514f7b66520544953582916823f17d70ba3646a8d420e0 +07cca059a45276212c40599e79d8cd2b1768f964d3a364e65baafd767f43b2ab562de3050724c3 +0e8e11fd2f429ff7590b97f861f1ee9d19a3cfa66a8c755960b45cb8dfaffd80e3426e5c57e65c +f5ea49f3504806bc96527c9b20987e99de44c09e93de6c7dab1bd4a2ba5476fc3209c1b421dfdb +a91a8568087d8f7b706b522af6f181829a9ae7266789ff18cbbeaedaaef7f7df4c4ae7873dac2e +0f8b1d43cebb6087bc2398837c6b8e6b2aec3e55c66cf3db3293fc371e7d93b32853fed1723b5e +ca9932759d854db4dd5069aaa31f51a515bb9ae6342a583080ddfd2173a7b0e9143fca950495d3 +a90a7ec9bbbfaa2ba03661b05c8e85b6f3edfd82444b1d335b21d502b430f1dbfa2fd93e0f4b3b +dc096f564e3d4ab470152b785dd2c05a9d69973665c5b67fc0d81151141a5eb78880086ad276b4 +ef039c78a77ed5e80044d87a0767a416d5f4739a1735917d99c5b207f9c94fa903d7063c3ff62d +c2a2079ed2707d88a77c5c5009dab9d223e0efb33bdc736af0f85564ef88d1853f13343fdeb271 +fce4d42038c0e0fe544309f063b6f1f3dc9018a0e2893da5f1fb30cf003fb23deb46d13e7b51fb +ab4610af7efb3827e5f0a27ed173c385e7a4f03b167971b69d6e57059e5380d6b521090540c8fd +706dc8ddfd3397a05db5d030b5cae26330de17394c40234329bec6cba36f5ee51ac0cef01d5c9a +186d73e1242855e94eda47507a65de5c8a568ac2ea69c0446ff2faa0615532eae5ef142fe8ce7a +c08c058d68db0bf5a1ea72a74c763f76d475ca73eec18bb3de194e564628f7986dabf118d08b49 +08a26376d508991051ade1dbb85c7188a1c5140b9b874a56d8aa08ea8243404a5c626ad5d989b0 +0df27dd5fde4d705a87b97f0cf165a4903c32b40d7db2cc9ea2a709992a1804f621468f1f1f25a +7301cc4d96574ef8b4fe7113397b378d0650bafec63eca65cda58a490bcc6a7840141503652dd0 +69e3860d1254aa78438f6d06e702040289f25d6c333df3e938dad48118b155d4a0bd893be04744 +bc41a02adda4f451785b5f29651a70b520add99694fe534e985df16edbcabfb29fc9f80570c599 +6bc0311534500bcd860f5e5dd8c3a5595fd0c16c0b4a71e6b19d8c65ec009d85728416e98865b6 +f732c97849a322d5d15933023627c4c3b493cd25fe787bd8a602c185c58ffed03d9b64b84f68b3 +7c041eec4d32420af95c174da76b1822d66d98873d7050d124387f9454d11b6b43f978a7dc5893 +341815d40bf7489a4443acf4e6249d8ed0ac31b2fb85d9a06a9061c180106238213253423d3e16 +e62c1c035ffa6be588b5e105ccbde9537ddb9e86eb9eee887e01ca91420e20dae0b338c928423d +5dcd021828050e57213768c79faa75ba1958d7b43eea506e5fc0683955d0d93903e6510af75c47 +97d05c1c001252743623028d78a293054bed8847112656cf36567ba99eaff4a09d2e12a7664645 +38884477d00ebdaf62fc1f110a2b59efd877c9e570c127cd89801d5d2eab8de294085771fa38b6 +1584efb3877e4edb76957de903b0bc880a703adf57b73628cf6481491360bf081f999a347a3b8c +ed28d04a74857774ac390d7b18d0719cd4b7c14a9fea42e80026d96486b29266ad8a2a31557023 +a581a882c8f8b294bd02bcca17e0cc3b47bee6d9f378323de02482101664a0189c7b69dd1bd91d +36d45e95050ba0a29225a9ea038f03c6635840d3c794fbf42c4e2d61d8c25c152d3ebbd52dc5c5 +8e2d8b6f36136dcfa92b409c80ce96398f9292e48894a435494d72e399b82f87fc6e2a1025371a +f68aa5572d8eb827b649e37e6b108c8643bccd73c90aa42bef97e51ca27ff45051056b679a459e +c938e3ad5494ef9389a4213589d526bd5cdbe0795bf78b83097b893dfa661faec6214ff7c15896 +98485ab72a3a314546fd4440dca92cc0c126aed9bc5851aca6ac87b8948cc54023da7d1ebddb67 +021b357ecad8b8f54aa91b8ffb3ecfe8addce021a7c8454186b56c1c27e720bac49021546acd47 +6a8ad779af8973e641a47f5c79a86e61a6174aa7b529dbc8c9c1042270c20aff1608ec8fcd53fc +bbabcc21985096706d9d313adbf1adf29926fd1dde0d5c688e4b1d7d0d6802824c6c7b7fd0ea98 +d1d06622520286704add2b5f2370aaeb0533694f9883478a75344fdd3505c7b6c4ad5a37abe943 +0ae1c3d2550309668dac31d748eb4e956c8894a18d11f387d16934356ec7379494d77d0393b94d +5245f1f71d77de7b4d89f5529f6b5b9bd2744df09173be9a5e4c573c4ef5a1096ee82a2a53e883 +04f379afc6868b0eefd62a5cb2d1d21aba066937639b9fe5b10208da697f40a39e6ee11d621502 +366c546aac60fc79c6d05cea9d9e8d8ffa67ff442e75f4f28ac62a2660346e329b56fac248f3a4 +7665157eeba01b807b65c7bc9eba5d059faf5987212330ac3f7a04278de1cfc8e01ebe136443df +edc5df38f539f573bed294de93639ffb430dd3f982f4ba760784841dc87ce0df076c1760609276 +b67f976e226e56fd9a24f5bc442a7a9cc3872f16a3a4647bdef24151c51ea7c2554be9841f5243 +99a21a28d33dd7cb294976da44ee73e52744c8bfac0581982d7ef27be12cba1d89078051ae1c5b +5f2ab4752035faa6bc6de10370a935d9110f47400e08f3235bbeb4ca7cffbb7dac1e6e22ee5a58 +c7b33e7acf65586470c087594454484186d92f60d3603af307e5169b10e812e344a98555d6bcd9 +b6befeefbf526274a0f8fab7eedf23f1c5523323b2c0f0e4a9141bfdd3772d02deedd69b3937bf +8533a6f205702e6a703446a4c13828f115bd547e59971e050d6b55c176c8e32d3f09338ee665b4 +a2f6f8692e1613f8168f3dff482fc3462aca3227a0f464aa065a8b97409aecd9b2b86831f190cd +d988af54d7e2e6ce2600d74b78473ac42534cb1a4712afae659ecbf12cb11a958609e5a5701cff +32acaae52f3423032687119953a0fb7b4c412086e460224d7451ec10effbb707fef8de4e43d9c3 +b0c2519b1df462943db7b4d1e5cc638021e6a3c1a1a72f3a28cb372b1f639dc74270734f43ba20 +2a5bcc805421f806e068ba068bdb0ea2b3f481a5dc6d99707caef1dff7ea9359da1b8b82cfd9b7 +b3a382a2d9eb740c9fed9948bbec3878eaa4ee5f6bbc39af5e39db0af35359e8ad124646b3e786 +737e06d8d7044d2ef7dbf7fbfd6e7a19d9b236ae7262aafa4c026bdf999aca8ca153e306fafde0 +5d8ae9d74f13913aed7c6dc3386f348b84e5442cc9fb6049eec5706a79398802772c40b383657b +bd5c4b445777e0236710339fa7c57068737504b28d36ee8115d704b5efdd0062f9007f176c85d1 +3a35a6807d4a4cab3d2a57fa2aa7b4f83f44d734cbcc59ef84e42d8e62df197853570308bff37d +f02a7730b82559893bdad5620bd6252f7d6e7a7877968c5736b1d328a2e6e2ddac3f75914ebba7 +6ed377bdeea8a4dcfce30c81859bc0f192593683311995037b169ee87fb0a2ea898679ee597106 +3e38185ff9a53be81919b04760a07ca721589b67975e893e12f61e5637c15afddfa1bb5c8a94bd +1610e97903f46d34830f3dcd6bc8b925812af6cd30c1889c4429d67ccae457844775e1f4638326 +f4b4dbd66575fc71b986017406ecc04e89ea26f3a1b457af7aa5c2391899a51f53620549dd9aa5 +5af140070bcc439d4ec60a749cbd2339cd2405c5223a5e9a517f62e2b50cb00c514e79614e7f9b +40c6af1f1a842080c15022b49dd86872db7841166b777df67caf278d22a829f269047b3fe1143c +c16f137cb6edf3d9dbb8574e5411a8e69c1fce97fafafe3bce921d280cad1c0d2c3fd3cfd39c2c +66f92c5ba458c5bc2baca4d9c4e67d9838827a0b3bb33d1e0bfd981a8b88fb8fa542e4d07956e5 +5c773b2bcd1fa5f6d0b84bc9f35436cf21004e59c7c4ded8aa8f61fc31b61e9e5cfed76043f697 +90069da95284172fd4a769f3ac5ead35882eca37bccba6cfe3fd00a1a5320c1e583cea4d338069 +168b633c2bb960add60699076f9553d65ec1cfcbe15f4696e470bba0d2d20b810bbb94de0e066a +53cedc32f5a667d044df997a23d38ab60630bf1ecb4a63ae6e85ddbe826f6c208e8fa013536d67 +7a57a10237989400d0fb5c5680f40fe842a6d7827eb6dfbefb66d2ffec4a21f3184d9a7b8892dc +f1842e755bfe07c3415d50b31650cb2fe423024399e3f1d48e833c6bd1a5882b3d897a48476774 +7447a56fd2f9f785928dc623b45e04c0534414e458c8084db9c0fb7b869303f03a7db0d24e106f +c4569f9ad4f42ef096c1e73197358bc5b79a0140eec788fd815a595d138623d724e9f46bd75c74 +0c66781572cdd5d8c4b61a71c1de857c6f7e52a0a65413cb461dcfdaec8a7f6d5a527b5da11fbb +f0779c15a11f3f2f81f38a02238917e270ff6bb47a21b36a20348a34108f5471f5eca0d2f684f0 +18ad7ac5f52b67d145963537534e3d5d487b65d38ce310cd1f5464b8d39b904e396b343097761d +12ee73ff8fad544bb8ae894a77a71cbb6e0bc0262360f5f2eacdb52640f3fc5071e71ded3eb0f7 +3150a3afaac2882a0f4a78eb4de7ac732b7c201afcf70a1ff3e49bb4a7e786e1c48860023768ad +8c40390bdba129bc40a3accc154a3a55a32b16e8dec5ba2f7a51f3c22821f00e913614955c3c74 +165f4b84d6e1f43137ed572e4a387bc7dafdcf0c015fc2b7ebaf1cc69c191bae34f569f29d93ec +df6d8ce8647b68f96ac1444530b4abd76ace164eee01f6cb07c1457761846cfceb3c7ed3e8dce5 +b173f356312ed03851a1941dad7ce47f352efd3ebdc8b1a10984fc39408fc765d3ea63e5eee4ac +c48969e9d770d53ae1f2afb7a7690063466ef9dfdee47448671dccff63d5139be1b3cf1c33537d +5f191a73d3a8a4956a7b8c84828fc1445ff041a84474eaf7b45bf67dc9e621b44119005512e9d8 +0a89fb10ca9227cce67c6cbfc6f45bde1433a9e389888003a31591f77f7b65727bdefb150a2298 +66eba692c0a080dc7a926cb27caf77fa352404ece37bc5f69b88a8878f735c0066554b294ac76c +e90583a5f0dbbb0c33fd9f52b75ffa450d7aa2e3cd0f7c01874c927eb0d818f4fabddb6c50df24 +855bf3f9984a0ef65a93e2e3d782794f2ed0262ac86a8ab343fdeda76c787cb5e68dff2b3e6cda +3ab1f8b646fe1c9b63176ce5d9721d9e217883a5809f44377c2f61291eb3a8b8d5e4f406343451 +da9c11ca53ef9eb934f8b1a44f1bb8cd202cb1742d8213735777fdbacf7f0933a0b0bc8fd13084 +db3410a6736c1acdf9682cd633bfa27714697c08b2b3ae0812bd96b2b14c7d0df99e26dc08598f +70d24ee32b43619119bbecb71a1738e95103d9ff1513216077a2cc1c786660f544c31155eca5ff +20deb39075b09e281a06df04dea50179e88a2bb1b98d05560b1f1bbf6df981594b47a9035b554d +c79b44e9cd91381d2ed71c6bb7eadc4422ee3c27ab678a22a785786904b1bca4919b40cc05ab1c +c2faa2f1f2c1da946484660942f5288e5bdb044790c15edc3c979beab118101083e94631b8b9a2 +ed92c51c056294b7863e76d01cabe5bec973ba40ee485d88196c908d032051bb55144de8966328 +66de750fb8dc983487507a7b5ec1babf6cf080c6c0dd002b6e305cfdd97c426725fd648ad995e7 +4bd8d67e4e03d68fc7c789d243a25cff3f52c7bf4ee758bcb62d1c951102c0a81eebb224fceea6 +522ae93dc8c9af630a13e2382f24bea74c6279859901aca5e1479dd17ca58e635e5768203b7314 +f7f92e74bde2a7baf3b8acea39f800ebca4b2b2a40fe5cb0a671f836607e86c42d06e51ccba1e2 +4e14918d443bd792e836edae89639f36825e698eec03b7f649858a10886a900c371c890564d199 +1a8dc48644381aced59f4e8c8fc388da4911a9d25bde9e47566e54216044a7b08d1cefe9861e6f +651357f25b526e9b54ae62c904094616a2285491292de7fb4f95235a3902170601c15d52b9bc85 +c153bb27d4ab8cd01c80863c6f34b784dc5f28f196c822a0ae59551b92148b7ee92a428a1ac9ed +fb51cab977ae915e0c1c80033f22da741fce179cc91b5ebb7a3dd3bf579d7ced93f14f23e09a44 +954ad9d4cd2fca916a9e444f1ebee056779087ee33dc155a16484e938d38d09a97d551f1e12c62 +c1f90ac16a297e5f73add55f9606180d34e8e37b28006da4dcfb0e842647a46f6c44df4ef27d96 +aa8b26441324a228ca896ce8a5cf37b93a6b50f95776835fa5c041069c9d8e9a9edfe302aebb01 +97756c6fd3d6d3c2d6dae32c8a1148dbde0953a20d4d75489cac0447c3100bd2d15beee4043861 +c077c7b6ff2742daf44c2562a03d85a3d91d7deddce813f8cbdff39127c94d500900a31f68bee4 +903187e2defe546dd1d7a4106049c7a902b3abeaae9297d50eecfe2df733004ed34cfb26d7e93d +99dff2bf37759d9f75a8b0ba0b85df6fe2e208d1947f5dd2c3c44bfa0348b3484eb3f29c053a1e +9aba025c012e85b2b1c153e67ac2dbfe7d5c0d384edf06bb9063b5541956df3990517c7ab6eaaa +18d771fac8f1ec9f99c6c3a34a422255498d6254c1601ef1fed76719306b6cc3debf99445c53cc +c189d3b4ce6a3b036c58414e6be5df2602a6f7b6df3dc95cbec600c62972f6be5d48ebc2104043 +b7d7659cfa004c9647f0c1d7429281cec88a51161779c2f9f872aa9a12163acf2f276e3355c102 +ca4d472167913e2ed8b8d442ac2981d730bee5afcb4f9f06871d24f79f433dea17a6d827b21c7a +f81b5d1d58d74cec4e6903c9a5f22ec3280000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 4 1 354 245 +%%EndPageSetup +q 4 1 350 244 rectclip +1 0 0 -1 0 252 cm q +0 g +0.25 w +0 J +0 j +[] 0.0 d +3.8 M q 1 0 0 -1 0 0 cm +34.301 -229.602 m 37.449 -229.602 l 347.352 -229.602 m 344.199 -229.602 + l S Q +BT +7 0 0 -7 26.599999 231.935201 Tm +/f-0-0 1 Tf +(0)Tj +ET +q 1 0 0 -1 0 0 cm +34.301 -187.898 m 37.449 -187.898 l 347.352 -187.898 m 344.199 -187.898 + l S Q +BT +7 0 0 -7 21.349999 190.235202 Tm +/f-0-0 1 Tf +(0.2)Tj +ET +q 1 0 0 -1 0 0 cm +34.301 -146.199 m 37.449 -146.199 l 347.352 -146.199 m 344.199 -146.199 + l S Q +BT +7 0 0 -7 21.349999 148.535003 Tm +/f-0-0 1 Tf +(0.4)Tj +ET +q 1 0 0 -1 0 0 cm +34.301 -104.449 m 37.449 -104.449 l 347.352 -104.449 m 344.199 -104.449 + l S Q +BT +7 0 0 -7 21.349999 106.785004 Tm +/f-0-0 1 Tf +(0.6)Tj +ET +q 1 0 0 -1 0 0 cm +34.301 -62.75 m 37.449 -62.75 l 347.352 -62.75 m 344.199 -62.75 l S Q +BT +7 0 0 -7 21.349999 65.085005 Tm +/f-0-0 1 Tf +(0.8)Tj +ET +q 1 0 0 -1 0 0 cm +34.301 -21.051 m 37.449 -21.051 l 347.352 -21.051 m 344.199 -21.051 l S Q +BT +7 0 0 -7 26.599999 23.385006 Tm +/f-0-0 1 Tf +(1)Tj +ET +q 1 0 0 -1 0 0 cm +34.301 -229.602 m 34.301 -226.449 l 34.301 -21.051 m 34.301 -24.199 l S Q +BT +7 0 0 -7 33.424999 238.9352 Tm +/f-0-0 1 Tf +(0)Tj +ET +q 1 0 0 -1 0 0 cm +65.602 -229.602 m 65.602 -226.449 l 65.602 -21.051 m 65.602 -24.199 l S Q +BT +7 0 0 -7 62.974998 238.9352 Tm +/f-0-0 1 Tf +(20)Tj +ET +q 1 0 0 -1 0 0 cm +96.898 -229.602 m 96.898 -226.449 l 96.898 -21.051 m 96.898 -24.199 l S Q +BT +7 0 0 -7 94.274998 238.9352 Tm +/f-0-0 1 Tf +(40)Tj +ET +q 1 0 0 -1 0 0 cm +128.199 -229.602 m 128.199 -226.449 l 128.199 -21.051 m 128.199 -24.199 + l S Q +BT +7 0 0 -7 125.574997 238.9352 Tm +/f-0-0 1 Tf +(60)Tj +ET +q 1 0 0 -1 0 0 cm +159.5 -229.602 m 159.5 -226.449 l 159.5 -21.051 m 159.5 -24.199 l S Q +BT +7 0 0 -7 156.874996 238.9352 Tm +/f-0-0 1 Tf +(80)Tj +ET +q 1 0 0 -1 0 0 cm +190.852 -229.602 m 190.852 -226.449 l 190.852 -21.051 m 190.852 -24.199 + l S Q +BT +7 0 0 -7 186.474995 238.9352 Tm +/f-0-0 1 Tf +(100)Tj +ET +q 1 0 0 -1 0 0 cm +222.148 -229.602 m 222.148 -226.449 l 222.148 -21.051 m 222.148 -24.199 + l S Q +BT +7 0 0 -7 217.774995 238.9352 Tm +/f-0-0 1 Tf +(120)Tj +ET +q 1 0 0 -1 0 0 cm +253.449 -229.602 m 253.449 -226.449 l 253.449 -21.051 m 253.449 -24.199 + l S Q +BT +7 0 0 -7 249.074994 238.9352 Tm +/f-0-0 1 Tf +(140)Tj +ET +q 1 0 0 -1 0 0 cm +284.75 -229.602 m 284.75 -226.449 l 284.75 -21.051 m 284.75 -24.199 l S Q +BT +7 0 0 -7 280.374993 238.9352 Tm +/f-0-0 1 Tf +(160)Tj +ET +q 1 0 0 -1 0 0 cm +316.051 -229.602 m 316.051 -226.449 l 316.051 -21.051 m 316.051 -24.199 + l S Q +BT +7 0 0 -7 311.674992 238.9352 Tm +/f-0-0 1 Tf +(180)Tj +ET +q 1 0 0 -1 0 0 cm +347.352 -229.602 m 347.352 -226.449 l 347.352 -21.051 m 347.352 -24.199 + l S Q +BT +7 0 0 -7 342.974991 238.9352 Tm +/f-0-0 1 Tf +(200)Tj +ET +0.5 w +q 1 0 0 -1 0 0 cm +34.301 -21.051 313.051 -208.551 re S Q +BT +0 -7 -7 0 8.98516 164.330902 Tm +/f-0-0 1 Tf +(Packet Success Rate \(PSR\))Tj +7 0 0 -7 173.010996 249.43516 Tm +(distance \(m\))Tj +18.922714 31.342856 Td +(-85)Tj +ET +0.580392 0 0.831373 rg +0.75 w +q 1 0 0 -1 0 0 cm +319 -27.699 m 338.949 -27.699 l 35.852 -21.051 m 60.898 -21.051 l 62.449 + -21.449 l 64.051 -21.449 l 65.602 -23.75 l 67.148 -36.699 l 68.75 -55.449 + l 70.301 -110.102 l 71.852 -156.199 l 73.449 -206.051 l 75 -224.602 l 76.551 + -229.398 l 78.148 -229.602 l 345.801 -229.602 l S Q +0 g +BT +7 0 0 -7 305.468992 37.035005 Tm +/f-0-0 1 Tf +(-90)Tj +ET +0 0.619608 0.45098 rg +q 1 0 0 -1 0 0 cm +319 -34.699 m 338.949 -34.699 l 35.852 -21.051 m 76.551 -21.051 l 78.148 + -22.699 l 79.699 -23.551 l 81.25 -32.5 l 82.801 -39.801 l 84.398 -62.949 + l 85.949 -95.699 l 87.5 -134.5 l 89.102 -176.398 l 90.648 -204.551 l 92.199 + -220 l 93.801 -227.5 l 95.352 -229.398 l 96.898 -229.199 l 98.5 -229.602 + l 345.801 -229.602 l S Q +0 g +BT +7 0 0 -7 305.468992 44.035005 Tm +/f-0-0 1 Tf +(-95)Tj +ET +0.341176 0.709804 0.909804 rg +q 1 0 0 -1 0 0 cm +319 -41.699 m 338.949 -41.699 l 35.852 -21.051 m 93.801 -21.051 l 95.352 + -21.449 l 96.898 -21.25 l 98.5 -22.102 l 100.051 -24.199 l 101.602 -27.699 + l 103.148 -34.602 l 104.75 -38.352 l 106.301 -53.148 l 107.852 -71.301 +l 109.449 -94.25 l 111 -124.5 l 112.551 -149.5 l 114.148 -173.301 l 115.699 + -200.199 l 117.25 -210.199 l 118.801 -221.699 l 120.398 -224.801 l 121.949 + -228.949 l 123.5 -228.352 l 125.102 -229.602 l 345.801 -229.602 l S Q +0 g +BT +7 0 0 -7 301.968992 51.035005 Tm +/f-0-0 1 Tf +(-100)Tj +ET +0.901961 0.619608 0 rg +q 1 0 0 -1 0 0 cm +319 -48.699 m 338.949 -48.699 l 35.852 -21.051 m 118.801 -21.051 l 120.398 + -21.25 l 121.949 -21.449 l 123.5 -21.25 l 125.102 -21.449 l 126.648 -22.699 + l 128.199 -22.301 l 129.801 -24.199 l 131.352 -25.449 l 132.898 -30 l 134.5 + -29.801 l 136.051 -35.648 l 137.602 -44.602 l 139.148 -55.648 l 140.75 +-62.949 l 142.301 -80.301 l 143.852 -94.648 l 145.449 -119.5 l 147 -133.051 + l 148.551 -151.801 l 150.148 -168.301 l 151.699 -189.148 l 153.25 -197.25 + l 154.801 -206.25 l 156.398 -215.398 l 157.949 -223.352 l 159.5 -222.699 + l 161.102 -226.449 l 162.648 -229.199 l 164.199 -229.602 l 165.801 -229.602 + l 167.352 -229.398 l 168.898 -229.602 l 345.801 -229.602 l S Q +0 g +BT +7 0 0 -7 301.968992 58.035005 Tm +/f-0-0 1 Tf +(-105)Tj +ET +0.941176 0.890196 0.258824 rg +q 1 0 0 -1 0 0 cm +319 -55.699 m 338.949 -55.699 l 35.852 -21.051 m 157.949 -21.051 l 159.5 + -21.25 l 161.102 -21.051 l 164.199 -21.051 l 165.801 -21.25 l 167.352 -22.102 + l 168.898 -21.25 l 170.5 -22.102 l 172.051 -23.551 l 173.602 -22.949 l +175.148 -25.199 l 176.75 -25.199 l 178.301 -27.5 l 179.852 -29.398 l 181.449 + -34.602 l 183 -39.602 l 184.551 -40.449 l 186.148 -43.551 l 187.699 -54.648 + l 189.25 -59.852 l 190.852 -74.449 l 192.398 -80.051 l 193.949 -89.25 l + 195.5 -95.898 l 197.102 -119.5 l 198.648 -132.398 l 200.199 -142.648 l +201.801 -155.75 l 203.352 -161.398 l 204.898 -174.75 l 206.5 -192.5 l 208.051 + -199.551 l 209.602 -206.051 l 211.148 -215.398 l 212.75 -216.648 l 214.301 + -221.25 l 215.852 -223.551 l 217.449 -224.398 l 219 -227.301 l 220.551 +-227.949 l 222.148 -227.301 l 223.699 -228.949 l 225.25 -228.75 l 226.852 + -229.398 l 228.398 -229.398 l 229.949 -229.602 l 345.801 -229.602 l S Q +0 g +BT +7 0 0 -7 293.218993 65.035005 Tm +/f-0-0 1 Tf +(-106.58)Tj +ET +0 0.45098 0.698039 rg +q 1 0 0 -1 0 0 cm +319 -62.699 m 338.949 -62.699 l 35.852 -21.051 m 170.5 -21.051 l 172.051 + -21.25 l 173.602 -21.051 l 178.301 -21.051 l 179.852 -21.449 l 181.449 +-21.25 l 183 -21.25 l 184.551 -21.051 l 186.148 -22.102 l 187.699 -21.898 + l 189.25 -23.551 l 190.852 -24.801 l 192.398 -24.602 l 193.949 -25 l 195.5 + -27.301 l 197.102 -29.602 l 198.648 -31.25 l 200.199 -32.75 l 201.801 -37.551 + l 203.352 -38.801 l 204.898 -46.301 l 206.5 -48.801 l 208.051 -60.648 l + 209.602 -65.449 l 211.148 -66.5 l 212.75 -86.352 l 214.301 -92.148 l 215.852 + -101.949 l 217.449 -117.801 l 219 -123.25 l 220.551 -133.898 l 222.148 +-147.648 l 223.699 -164.551 l 225.25 -167.25 l 226.852 -180.602 l 228.398 + -184.949 l 229.949 -193.75 l 231.5 -200.199 l 233.102 -210.852 l 234.648 + -213.949 l 236.199 -217.102 l 237.801 -220.199 l 239.352 -224.398 l 240.898 + -225.449 l 242.5 -226.051 l 244.051 -228.148 l 245.602 -228.75 l 247.148 + -229.199 l 248.75 -229.398 l 250.301 -228.949 l 251.852 -229.602 l 345.801 + -229.602 l S Q +0 g +BT +7 0 0 -7 301.968992 72.035004 Tm +/f-0-0 1 Tf +(-110)Tj +ET +0.901961 0.121569 0.0588235 rg +q 1 0 0 -1 0 0 cm +319 -69.699 m 338.949 -69.699 l 35.852 -21.051 m 220.551 -21.051 l 222.148 + -21.25 l 225.25 -21.25 l 226.852 -21.449 l 228.398 -21.449 l 229.949 -21.898 + l 231.5 -22.102 l 233.102 -22.699 l 234.648 -21.898 l 236.199 -22.5 l 237.801 + -22.949 l 239.352 -23.75 l 240.898 -26.051 l 242.5 -25.648 l 244.051 -27.5 + l 245.602 -28.75 l 247.148 -29.801 l 248.75 -35 l 250.301 -35.648 l 251.852 + -36.898 l 253.449 -38.352 l 255 -44 l 256.551 -47.551 l 258.148 -54 l 259.699 + -58.602 l 261.25 -68.602 l 262.852 -65.25 l 264.398 -79.648 l 265.949 -85.051 + l 267.5 -89.648 l 269.102 -94.648 l 270.648 -108.449 l 272.199 -111.551 + l 273.801 -124.051 l 275.352 -135.148 l 276.898 -140.352 l 278.5 -152.25 + l 280.051 -155.551 l 281.602 -167.648 l 283.148 -174.352 l 284.75 -182.25 + l 286.301 -188.949 l 287.852 -195.398 l 289.449 -200.602 l 291 -203.949 + l 292.551 -211.852 l 294.148 -212.898 l 295.699 -215.852 l 297.25 -219.602 + l 298.852 -220 l 300.398 -222.102 l 301.949 -225.199 l 303.5 -227.102 l + 305.102 -228.148 l 306.648 -227.301 l 308.199 -228.148 l 309.801 -227.949 + l 311.352 -228.949 l 312.898 -229.602 l 314.5 -229.602 l 316.051 -229.199 + l 317.602 -229.398 l 319.199 -229.602 l 320.75 -229.398 l 322.301 -229.602 + l 345.801 -229.602 l S Q +0 g +0.5 w +q 1 0 0 -1 0 0 cm +34.301 -21.051 313.051 -208.551 re S Q +BT +7 0 0 -7 99.558998 12.885006 Tm +/f-0-0 1 Tf +(Packet \(MSDU\) size = 7 bytes; tx power = 0 dBm; channel = 11)Tj +ET +Q Q +showpage +%%Trailer +end +%%EOF diff --git a/src/lr-wpan/doc/lr-wpan.rst b/src/lr-wpan/doc/lr-wpan.rst index c398859e2..a94300d2f 100644 --- a/src/lr-wpan/doc/lr-wpan.rst +++ b/src/lr-wpan/doc/lr-wpan.rst @@ -14,7 +14,6 @@ IEEE standard 802.15.4 (2003,2006,2011). Model Description ***************** -The source code for the lr-wpan module lives in the directory ``src/lr-wpan``. Design ====== @@ -214,16 +213,33 @@ Std 802.15.4-2006, appendix E, Figure E.2. Reception of the packet will finish after the packet was completely transmitted. Other packets arriving during reception will add up to the interference/noise. -Currently the receiver sensitivity is set to a fixed value of -106.58 dBm. This -corresponds to a packet error rate of 1% for 20 byte PSDU reference packets for this -signal power, according to IEEE Std 802.15.4-2006, section 6.1.7. In the future -we will provide support for changing the sensitivity to different values. +Rx sensitivity is defined as the weakest possible signal point at which a receiver can receive and decode a packet with a high success rate. +According to the standard (IEEE Std 802.15.4-2006, section 6.1.7), this +corresponds to the point where the packet error rate is under 1% for 20 bytes PSDU +reference packets (11 bytes MAC header + 7 bytes payload (MSDU) + FCS 2 bytes). Setting low Rx sensitivity values (increasing the radio hearing capabilities) +have the effect to receive more packets (and at a greater distance) but it raises the probability to have dropped packets at the +MAC layer or the probability of corrupted packets. By default, the receiver sensitivity is set to the maximum theoretical possible value of -106.58 dBm for the supported IEEE 802.15.4 O-QPSK 250kps. +This rx sensitivity is set for the "perfect radio" which only considers the floor noise, in essence, this do not include the noise factor (noise introduced by imperfections in the demodulator chip or external factors). +The receiver sensitivity can be changed to different values using ``SetRxSensitivity`` function in the PHY to simulate the hearing capabilities of different compliant radio transceivers (the standard minimum compliant Rx sensitivity is -85 dBm).::: + (defined by the standard) + NoiseFloor Max Sensitivity Min Sensitivity + -106.987dBm -106.58dBm -85dBm + |-------------------------|------------------------------------------| + Noise Factor = 1 + | <--------------------------------------->| + Acceptable sensitivity range + +The example ``lr-wpan-per-plot.cc` shows that at given Rx sensitiviy, packets are dropped regardless of their theoretical error probability. +This program outputs a file named ``802.15.4-per-vs-rxSignal.plt``. +Loading this file into gnuplot yields a file ``802.15.4-per-vs-rsSignal.eps``, which can +be converted to pdf or other formats. Packet payload size, Tx power and Rx sensitivity can be configurated. +The point where the blue line crosses with the PER indicates the Rx sensitivity. The default output is shown below. .. _fig-802-15-4-per-sens: .. figure:: figures/802-15-4-per-sens.* - Packet error rate vs. signal power + Default output of the program ``lr-wpan-per-plot.cc`` NetDevice @@ -298,7 +314,7 @@ running on both, slotted and unslotted mode (CSMA/CA) of 802.15.4 operation for - Devices are capable of associating with a single PAN coordinator. Interference is modeled as AWGN but this is currently not thoroughly tested. - The standard describes the support of multiple PHY band-modulations but currently, only 250kbps O-QPSK (channel page 0) is supported. - Active and passive MAC scans are able to obtain a LQI value from a beacon frame, however, the scan primitives assumes LQI is correctly implemented and does not check the validity of its value. -- Configuration of Rx Sensitivity and ED thresholds are currently not supported. +- Configuration of the ED thresholds are currently not supported. - Orphan scans are not supported. - Disassociation primitives are not supported. - Security is not supported. @@ -338,6 +354,7 @@ The following examples have been written, which can be found in ``src/lr-wpan/ex * ``lr-wpan-data.cc``: A simple example showing end-to-end data transfer. * ``lr-wpan-error-distance-plot.cc``: An example to plot variations of the packet success ratio as a function of distance. +* ``lr-wpan-per-plot.cc``: An example to plot the theoretical and experimental packet error rate (PER) as a function of receive signal. * ``lr-wpan-error-model-plot.cc``: An example to test the phy. * ``lr-wpan-packet-print.cc``: An example to print out the MAC header fields. * ``lr-wpan-phy-test.cc``: An example to test the phy. @@ -364,11 +381,14 @@ in a DataIndication on the peer node. The example ``lr-wpan-error-distance-plot.cc`` plots the packet success ratio (PSR) as a function of distance, using the default LogDistance propagation loss model and the 802.15.4 error model. The channel (default 11), -packet size (default 20 bytes) and transmit power (default 0 dBm) can be -varied by command line arguments. The program outputs a file named -``802.15.4-psr-distance.plt``. Loading this file into gnuplot yields -a file ``802.15.4-psr-distance.eps``, which can be converted to pdf or -other formats. The default output is shown below. +packet size (default PSDU 20 bytes = 11 bytes MAC header + data payload), transmit power (default 0 dBm) +and Rx sensitivity (default -106.58 dBm) can be varied by command line arguments. +The program outputs a file named ``802.15.4-psr-distance.plt``. +Loading this file into gnuplot yields a file ``802.15.4-psr-distance.eps``, which can +be converted to pdf or other formats. The following image shows the output +of multiple runs using different Rx sensitivity values. A higher Rx sensitivity (lower dBm) results +in a increased communication distance but also makes the radio suceptible to more interference from +surronding devices. .. _fig-802-15-4-psr-distance: diff --git a/src/lr-wpan/examples/CMakeLists.txt b/src/lr-wpan/examples/CMakeLists.txt index c7fb3ce9d..c23e715e9 100644 --- a/src/lr-wpan/examples/CMakeLists.txt +++ b/src/lr-wpan/examples/CMakeLists.txt @@ -38,3 +38,10 @@ build_lib_example( LIBRARIES_TO_LINK ${liblr-wpan} ${libnetanim} ) + +build_lib_example( + NAME lr-wpan-per-plot + SOURCE_FILES lr-wpan-per-plot.cc + LIBRARIES_TO_LINK ${liblr-wpan} + ${libstats} +) diff --git a/src/lr-wpan/examples/lr-wpan-error-distance-plot.cc b/src/lr-wpan/examples/lr-wpan-error-distance-plot.cc index dcc1b7374..3f574570e 100644 --- a/src/lr-wpan/examples/lr-wpan-error-distance-plot.cc +++ b/src/lr-wpan/examples/lr-wpan-error-distance-plot.cc @@ -17,11 +17,25 @@ * Author: Tom Henderson */ -// This program produces a gnuplot file that plots the packet success rate -// as a function of distance for the 802.15.4 models, assuming a default -// LogDistance propagation loss model, the 2.4 GHz OQPSK error model, a -// default transmit power of 0 dBm, and a default packet size of 20 bytes of -// 802.15.4 payload. +/* + This program produces a gnuplot file that plots the packet success rate + as a function of distance for the 802.15.4 models, assuming a default + LogDistance propagation loss model, the 2.4 GHz OQPSK error model, a + default transmit power of 0 dBm, and a default packet size of 20 bytes of + 802.15.4 payload and a default rx sensitivity of -106.58 dBm. + + Tx power of the transmitter node and the Rx sensitivity of the receiving node + as well as the transmitted packet size can be adjusted to obtain a different + distance plot. + + Node1 Node2 + (dev0) --------------------->(dev1) + + Usage: + + ./ns3 run "lr-wpan-error-distance-plot --txPower= 0 --rxSensitivity=-92" + +*/ #include #include #include @@ -52,7 +66,7 @@ using namespace ns3; -static uint32_t g_received = 0; //!< number of packets received +uint32_t g_packetsReceived = 0; //!< number of packets received NS_LOG_COMPONENT_DEFINE("LrWpanErrorDistancePlot"); @@ -61,10 +75,10 @@ NS_LOG_COMPONENT_DEFINE("LrWpanErrorDistancePlot"); * \param params MCPS data indication parameters * \param p packet */ -static void +void LrWpanErrorDistanceCallback(McpsDataIndicationParams params, Ptr p) { - g_received++; + g_packetsReceived++; } int @@ -77,20 +91,22 @@ main(int argc, char* argv[]) int maxDistance = 200; // meters int increment = 1; int maxPackets = 1000; - int packetSize = 20; + int packetSize = 7; // PSDU = 20 bytes (11 bytes MAC header + 7 bytes MSDU ) double txPower = 0; uint32_t channelNumber = 11; + double rxSensitivity = -106.58; // dBm CommandLine cmd(__FILE__); cmd.AddValue("txPower", "transmit power (dBm)", txPower); cmd.AddValue("packetSize", "packet (MSDU) size (bytes)", packetSize); cmd.AddValue("channelNumber", "channel number", channelNumber); + cmd.AddValue("rxSensitivity", "the rx sensitivity (dBm)", rxSensitivity); cmd.Parse(argc, argv); os << "Packet (MSDU) size = " << packetSize << " bytes; tx power = " << txPower - << " dBm; channel = " << channelNumber; + << " dBm; channel = " << channelNumber << "; Rx sensitivity = " << rxSensitivity << " dBm"; Gnuplot psrplot = Gnuplot("802.15.4-psr-distance.eps"); Gnuplot2dDataset psrdataset("802.15.4-psr-vs-distance"); @@ -117,6 +133,9 @@ main(int argc, char* argv[]) Ptr psd = svh.CreateTxPowerSpectralDensity(txPower, channelNumber); dev0->GetPhy()->SetTxPowerSpectralDensity(psd); + // Set Rx sensitivity of the receiving device + dev1->GetPhy()->SetRxSensitivity(rxSensitivity); + McpsDataIndicationCallback cb0; cb0 = MakeCallback(&LrWpanErrorDistanceCallback); dev1->GetMac()->SetMcpsDataIndicationCallback(cb0); @@ -132,7 +151,7 @@ main(int argc, char* argv[]) Ptr p; mob0->SetPosition(Vector(0, 0, 0)); mob1->SetPosition(Vector(minDistance, 0, 0)); - for (int j = minDistance; j < maxDistance;) + for (int j = minDistance; j < maxDistance; j += increment) { for (int i = 0; i < maxPackets; i++) { @@ -140,10 +159,10 @@ main(int argc, char* argv[]) Simulator::Schedule(Seconds(i), &LrWpanMac::McpsDataRequest, dev0->GetMac(), params, p); } Simulator::Run(); - NS_LOG_DEBUG("Received " << g_received << " packets for distance " << j); - psrdataset.Add(j, g_received / 1000.0); - g_received = 0; - j += increment; + NS_LOG_DEBUG("Received " << g_packetsReceived << " packets for distance " << j); + psrdataset.Add(j, g_packetsReceived / 1000.0); + g_packetsReceived = 0; + mob1->SetPosition(Vector(j, 0, 0)); } @@ -153,10 +172,10 @@ main(int argc, char* argv[]) psrplot.SetTerminal("postscript eps color enh \"Times-BoldItalic\""); psrplot.SetLegend("distance (m)", "Packet Success Rate (PSR)"); psrplot.SetExtra("set xrange [0:200]\n\ -set yrange [0:1]\n\ -set grid\n\ -set style line 1 linewidth 5\n\ -set style increment user"); + set yrange [0:1]\n\ + set grid\n\ + set style line 1 linewidth 5\n\ + set style increment user"); psrplot.GenerateOutput(berfile); berfile.close(); diff --git a/src/lr-wpan/examples/lr-wpan-per-plot.cc b/src/lr-wpan/examples/lr-wpan-per-plot.cc new file mode 100644 index 000000000..a770816f3 --- /dev/null +++ b/src/lr-wpan/examples/lr-wpan-per-plot.cc @@ -0,0 +1,251 @@ +/* + * Copyright (c) 2022 Tokushima University, Japan + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation; + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Authors: Alberto Gallegos Ramonet + * Tommaso Pecorella + */ + +/* + This program produces a gnuplot file that plots the theoretical and experimental packet error + rate (PER) as a function of receive signal for the 802.15.4 model. As described by the standard, + the PER is calculated with the transmission of frames with a PSDU of 20 bytes. This is equivalent + to an MPDU = MAC header (11 bytes) + FCS (2 bytes) + payload (MSDU 7 bytes). In the experimental + test, 1000 frames are transmitted for each Rx signal ranging from -130 dBm to -100 dBm with + increments of 0.01 dBm. The point before PER is < 1 % is the device receive sensitivity. + Theoretical and experimental Rx sensitivity is printed at the end of the end and a plot is + generated. + + Example usage: + + ./ns3 run "lr-wpan-per-plot --rxSensitivity=-92" + +*/ + +#include +#include +#include +#include +#include +#include +#include + +using namespace ns3; + +uint32_t g_packetsReceived = 0; //!< number of packets received + +NS_LOG_COMPONENT_DEFINE("LrWpanErrorDistancePlot"); + +/** + * Function called when a Data indication is invoked + * \param params MCPS data indication parameters + * \param p packet + */ +void +PacketReceivedCallback(McpsDataIndicationParams params, Ptr p) +{ + g_packetsReceived++; +} + +int +main(int argc, char* argv[]) +{ + LogComponentEnableAll(LogLevel(LOG_PREFIX_FUNC | LOG_PREFIX_NODE | LOG_PREFIX_TIME)); + + std::ostringstream os; + std::ofstream perfile("802.15.4-per-vs-rxSignal.plt"); + + double minRxSignal = -111; // dBm + double maxRxSignal = -82; // dBm + double increment = 0.01; + int maxPackets = 1000; + int packetSize = 7; // bytes (MPDU payload) + double txPower = 0; // dBm + uint32_t channelNumber = 11; + double rxSensitivity = -106.58; // dBm + + CommandLine cmd(__FILE__); + + cmd.AddValue("txPower", "transmit power (dBm)", txPower); + cmd.AddValue("packetSize", "packet (MSDU) size (bytes)", packetSize); + cmd.AddValue("channelNumber", "channel number", channelNumber); + cmd.AddValue("rxSensitivity", "the rx sensitivity (dBm)", rxSensitivity); + cmd.Parse(argc, argv); + + Gnuplot perplot = Gnuplot("802.15.4-per-vs-rxSignal.eps"); + Gnuplot2dDataset perdatasetExperimental("Experimental"); + Gnuplot2dDataset perdatasetTheorical("Theoretical"); + + Ptr n0 = CreateObject(); + Ptr n1 = CreateObject(); + Ptr dev0 = CreateObject(); + Ptr dev1 = CreateObject(); + + dev0->SetAddress(Mac16Address("00:01")); + dev1->SetAddress(Mac16Address("00:02")); + Ptr channel = CreateObject(); + Ptr propModel = CreateObject(); + + channel->AddPropagationLossModel(propModel); + dev0->SetChannel(channel); + dev1->SetChannel(channel); + n0->AddDevice(dev0); + n1->AddDevice(dev1); + Ptr mob0 = CreateObject(); + dev0->GetPhy()->SetMobility(mob0); + Ptr mob1 = CreateObject(); + dev1->GetPhy()->SetMobility(mob1); + mob0->SetPosition(Vector(0, 0, 0)); + mob1->SetPosition(Vector(0, 0, 0)); + + LrWpanSpectrumValueHelper svh; + Ptr psd = svh.CreateTxPowerSpectralDensity(txPower, channelNumber); + dev0->GetPhy()->SetTxPowerSpectralDensity(psd); + + // Set Rx sensitivity of the receiving device + dev1->GetPhy()->SetRxSensitivity(rxSensitivity); + + McpsDataIndicationCallback cb0; + cb0 = MakeCallback(&PacketReceivedCallback); + dev1->GetMac()->SetMcpsDataIndicationCallback(cb0); + + ////////////////////////////////// + // Experimental PER v.s Signal // + ////////////////////////////////// + + double per = 1; + double sensitivityExp = 0; + bool sensThreshold = true; + + for (double j = minRxSignal; j < maxRxSignal; j += increment) + { + propModel->SetRss(j); + if (sensThreshold) + { + sensitivityExp = j; + } + + for (int i = 0; i < maxPackets; i++) + { + McpsDataRequestParams params; + params.m_srcAddrMode = SHORT_ADDR; + params.m_dstAddrMode = SHORT_ADDR; + params.m_dstPanId = 0; + params.m_dstAddr = Mac16Address("00:02"); + params.m_msduHandle = 0; + params.m_txOptions = 0; + Ptr p; + p = Create(packetSize); + Simulator::Schedule(Seconds(i), &LrWpanMac::McpsDataRequest, dev0->GetMac(), params, p); + } + + Simulator::Run(); + + per = (static_cast(maxPackets - g_packetsReceived) / maxPackets) * 100; + + std::cout << "Experimental Test || Signal: " << j << " dBm | Received " << g_packetsReceived + << " pkts" + << "/" << maxPackets << " | PER " << per << " %\n"; + + if (per <= 1 && sensThreshold) + { + sensThreshold = false; + } + + perdatasetExperimental.Add(j, per); + g_packetsReceived = 0; + } + + ///////////////////////////////// + // Theoretical PER v.s. Signal // + ///////////////////////////////// + + Ptr lrWpanError = CreateObject(); + LrWpanSpectrumValueHelper psdHelper; + + // Calculate the noise that accounts for both thermal noise (floor noise) and + // imperfections on the chip or lost before reaching the demodulator. + // In O-QPSK 250kbps, the point where PER is <= 1% without + // additional noise is -106.58 dBm (Noise Factor = 1) + double maxRxSensitivityW = (pow(10.0, -106.58 / 10.0) / 1000.0); + long double noiseFactor = (pow(10.0, rxSensitivity / 10.0) / 1000.0) / maxRxSensitivityW; + + psdHelper.SetNoiseFactor(noiseFactor); + Ptr noisePsd = psdHelper.CreateNoisePowerSpectralDensity(11); + double noise = LrWpanSpectrumValueHelper::TotalAvgPower(noisePsd, 11); + + double signal = 0; + double sensitivityTheo = 0; + double perTheoretical = 0; + double snr = 0; + sensThreshold = true; + + for (double j = minRxSignal; j < maxRxSignal; j += increment) + { + if (sensThreshold) + { + sensitivityTheo = j; + } + + signal = pow(10.0, j / 10.0) / 1000.0; // signal in Watts + snr = signal / noise; + + // According to the standard, Packet error rate should be obtained + // using a PSDU of 20 bytes using + // the equation PER = 1 - (1 - BER)^nbits + perTheoretical = (1.0 - lrWpanError->GetChunkSuccessRate(snr, (packetSize + 13) * 8)) * 100; + std::cout << "Theoretical Test || Signal: " << j << " dBm | SNR: " << snr << "| PER " + << perTheoretical << " % \n"; + + if (perTheoretical <= 1 && sensThreshold) + { + sensThreshold = false; + } + + perdatasetTheorical.Add(j, perTheoretical); + } + + std::cout << "_____________________________________________________________________________\n"; + std::cout << "Experimental Test || Receiving with a current sensitivity of " << sensitivityExp + << " dBm\n"; + std::cout << "Theoretical Test || Receiving with a current sensitivity of " << sensitivityTheo + << " dBm\n"; + std::cout << "Gnu plot generated."; + + os << "Pkt Payload (MSDU) size = " << packetSize << " bytes | " + << "Tx power = " << txPower << " dBm | " + << "Rx Sensitivity (Theo) = " << sensitivityTheo << " dBm"; + + perplot.AddDataset(perdatasetExperimental); + perplot.AddDataset(perdatasetTheorical); + + perplot.SetTitle(os.str()); + perplot.SetTerminal("postscript eps color enh \"Times-BoldItalic\""); + perplot.SetLegend("Rx signal (dBm)", "Packet Error Rate (%)"); + perplot.SetExtra("set xrange [-110:-82]\n\ + set logscale y\n\ + set yrange [0.000000000001:120]\n\ + set xtics 2\n\ + set grid\n\ + set style line 1 linewidth 5\n\ + set style line 2 linewidth 3\n\ + set style increment user\n\ + set arrow from -110,1 to -82,1 nohead lc 'web-blue' front"); + perplot.GenerateOutput(perfile); + perfile.close(); + + Simulator::Destroy(); + return 0; +} diff --git a/src/lr-wpan/model/lr-wpan-phy.cc b/src/lr-wpan/model/lr-wpan-phy.cc index 3f62cbcd1..5a6d81674 100644 --- a/src/lr-wpan/model/lr-wpan-phy.cc +++ b/src/lr-wpan/model/lr-wpan-phy.cc @@ -1166,14 +1166,10 @@ LrWpanPhy::PlmeSetAttributeRequest(LrWpanPibAttributeIdentifier id, m_phyPIBAttributes.phyCurrentPage = attribute->phyCurrentPage; - LrWpanSpectrumValueHelper psdHelper; - m_txPsd = psdHelper.CreateTxPowerSpectralDensity( - GetNominalTxPowerFromPib(m_phyPIBAttributes.phyTransmitPower), - m_phyPIBAttributes.phyCurrentChannel); - // if the page is changed we need to also update the Noise Power Spectral Density - m_noise = - psdHelper.CreateNoisePowerSpectralDensity(m_phyPIBAttributes.phyCurrentChannel); - m_signal = Create(m_noise->GetSpectrumModel()); + // TODO: Set the maximum possible sensitivity by default. + // This maximum sensitivity depends on the modulation used. + // Currently Only O-QPSK 250kbps is supported so we use its max sensitivity. + SetRxSensitivity(-106.58); } break; } @@ -1216,14 +1212,8 @@ LrWpanPhy::PlmeSetAttributeRequest(LrWpanPibAttributeIdentifier id, m_phyPIBAttributes.phyCurrentChannel = attribute->phyCurrentChannel; - LrWpanSpectrumValueHelper psdHelper; - m_txPsd = psdHelper.CreateTxPowerSpectralDensity( - GetNominalTxPowerFromPib(m_phyPIBAttributes.phyTransmitPower), - m_phyPIBAttributes.phyCurrentChannel); - // if the channel is changed we need to also update the Noise Power Spectral Density - m_noise = - psdHelper.CreateNoisePowerSpectralDensity(m_phyPIBAttributes.phyCurrentChannel); - m_signal = Create(m_noise->GetSpectrumModel()); + // use the prev configured sensitivity before changing the channel + SetRxSensitivity(WToDbm(m_rxSensitivity)); } break; } @@ -1695,15 +1685,11 @@ LrWpanPhy::SetPhyOption(LrWpanPhyOption phyOption) m_edPower.lastUpdate = Seconds(0.0); m_edPower.measurementLength = Seconds(0.0); - // TODO: What is the RX sensibility that should be set for other frequencies? - // default -110 dBm in W for 2.4 GHz - m_rxSensitivity = pow(10.0, -106.58 / 10.0) / 1000.0; - LrWpanSpectrumValueHelper psdHelper; - m_txPsd = psdHelper.CreateTxPowerSpectralDensity( - GetNominalTxPowerFromPib(m_phyPIBAttributes.phyTransmitPower), - m_phyPIBAttributes.phyCurrentChannel); - m_noise = psdHelper.CreateNoisePowerSpectralDensity(m_phyPIBAttributes.phyCurrentChannel); - m_signal = Create(m_noise->GetSpectrumModel()); + // TODO: Change the limits Rx sensitivity when other modulations are supported + // Currently, only O-QPSK 250kbps is supported and its maximum possible sensitivity is + // equal to -106.58 dBm and its minimum sensitivity is defined as -85 dBm + SetRxSensitivity(-106.58); + m_rxLastUpdate = Seconds(0); Ptr none_packet = nullptr; Ptr none_params = nullptr; @@ -1712,6 +1698,61 @@ LrWpanPhy::SetPhyOption(LrWpanPhyOption phyOption) m_errorModel = nullptr; } +void +LrWpanPhy::SetRxSensitivity(double dbmSensitivity) +{ + NS_LOG_FUNCTION(this << dbmSensitivity << "dBm"); + + // See IEEE 802.15.4-2011 Sections 10.3.4, 11.3.4, 13.3.4, 13.3.4, 14.3.4, 15.3.4 + if (m_phyOption == IEEE_802_15_4_915MHZ_BPSK || m_phyOption == IEEE_802_15_4_950MHZ_BPSK) + { + if (dbmSensitivity > -92) + { + NS_ABORT_MSG("The minimum Rx sensitivity for this band should be at least -92 dBm"); + } + } + else + { + if (dbmSensitivity > -85) + { + NS_ABORT_MSG("The minimum Rx sensitivity for this band should be at least -85 dBm"); + } + } + + // Calculate the noise factor required to reduce the Rx sensitivity. + // The maximum possible sensitivity in the current modulation is used as a reference + // to calculate the noise factor (F). The noise factor is a dimensionless ratio. + // Currently only one PHY modulation is supported: + // O-QPSK 250kpps which has a Max Rx sensitivity: -106.58 dBm (Noise factor = 1). + // After Rx sensitivity is set, this becomes the new point where PER < 1 % for a + // PSDU of 20 bytes as described by the standard. + + // TODO: recalculate maxRxSensitivity (Noise factor = 1) when additional modulations are + // supported. + double maxRxSensitivityW = DbmToW(-106.58); + + LrWpanSpectrumValueHelper psdHelper; + m_txPsd = psdHelper.CreateTxPowerSpectralDensity( + GetNominalTxPowerFromPib(m_phyPIBAttributes.phyTransmitPower), + m_phyPIBAttributes.phyCurrentChannel); + // Update thermal noise + noise factor added. + long double noiseFactor = DbmToW(dbmSensitivity) / maxRxSensitivityW; + psdHelper.SetNoiseFactor(noiseFactor); + m_noise = psdHelper.CreateNoisePowerSpectralDensity(m_phyPIBAttributes.phyCurrentChannel); + + m_signal = Create(m_noise->GetSpectrumModel()); + // Change receiver sensitivity from dBm to Watts + m_rxSensitivity = DbmToW(dbmSensitivity); +} + +double +LrWpanPhy::GetRxSensitivity() +{ + NS_LOG_FUNCTION(this); + // Change receiver sensitivity from Watt to dBm + return WToDbm(m_rxSensitivity); +} + LrWpanPhyOption LrWpanPhy::GetMyPhyOption() { diff --git a/src/lr-wpan/model/lr-wpan-phy.h b/src/lr-wpan/model/lr-wpan-phy.h index ab6db3668..9e53cc392 100644 --- a/src/lr-wpan/model/lr-wpan-phy.h +++ b/src/lr-wpan/model/lr-wpan-phy.h @@ -316,6 +316,26 @@ class LrWpanPhy : public SpectrumPhy */ void SetPhyOption(LrWpanPhyOption phyOption); + /** + * Set the receiver power sensitivity used by this device in dBm. + * + * In ns-3 , rx sensitivity is only checked to be at least what is specified by + * the standard (-85dBm or -92dBm for BPSK bands). Most vendors provide better sensitivity + * options and exceed the minimum values proposed by the standard. Default sensitivity + * is -106.58 dBm (This does not include any noise figure). + * A sensitivity of -95dBm or less is considered by many vendors a high sensitivity. + * + * \param dbmSensitivity The receiver power sensitivity to set in dBm. + */ + void SetRxSensitivity(double dbmSensitivity); + + /** + * Get the receiver power sensitivity used by this device in dBm. + * + * \return The receiver power sensitivity used by this device in dBm. + */ + double GetRxSensitivity(); + /** * Notify the SpectrumPhy instance of an incoming waveform. * @@ -723,10 +743,10 @@ class LrWpanPhy : public SpectrumPhy int8_t GetNominalTxPowerFromPib(uint8_t phyTransmitPower); /** - * Transform watts (W) to decibels milliwatts (DBm). + * Transform watts (W) to decibels milliwatts (dBm). * - * \param watt The Watts that will be converted to DBm. - * \return The value of Watts in DBm. + * \param watt The Watts that will be converted to dBm. + * \return The value of Watts in dBm. */ double WToDbm(double watt); diff --git a/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc b/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc index dae81c9fe..5e20683fe 100644 --- a/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc +++ b/src/lr-wpan/model/lr-wpan-spectrum-value-helper.cc @@ -126,6 +126,12 @@ LrWpanSpectrumValueHelper::CreateNoisePowerSpectralDensity(uint32_t channel) return noisePsd; } +void +LrWpanSpectrumValueHelper::SetNoiseFactor(double f) +{ + m_noiseFactor = f; +} + double LrWpanSpectrumValueHelper::TotalAvgPower(Ptr psd, uint32_t channel) { diff --git a/src/lr-wpan/model/lr-wpan-spectrum-value-helper.h b/src/lr-wpan/model/lr-wpan-spectrum-value-helper.h index 9137e735b..4aadaa9b3 100644 --- a/src/lr-wpan/model/lr-wpan-spectrum-value-helper.h +++ b/src/lr-wpan/model/lr-wpan-spectrum-value-helper.h @@ -52,6 +52,12 @@ class LrWpanSpectrumValueHelper */ Ptr CreateNoisePowerSpectralDensity(uint32_t channel); + /** + * Set the noise factor added to the thermal noise. + * \param f A dimensionless ratio (i.e. Not in dB) + */ + void SetNoiseFactor(double f); + /** * \brief total average power of the signal is the integral of the PSD using * the limits of the given channel @@ -64,6 +70,8 @@ class LrWpanSpectrumValueHelper private: /** * A scaling factor for the noise power. + * It specifies how much additional noise the device + * contribute to the thermal noise (floor noise). */ double m_noiseFactor; };