4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 // Competence Center NETwork research (NET), St. Augustin, GERMANY
6 // Christian Niephaus <cni@berlios.de>
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 // Definition of non-inline non-template functions
26 #include "../../Packets/Packets.hh"
27 #include "../../Utils/auto_unit_test.hh"
28 #include <boost/test/test_tools.hpp>
29 #include "RadiotapPacket.hh"
32 BOOST_AUTO_UNIT_TEST(RadiotapPacket_packet)
34 /* used madwifi 0.9.4 */
35 unsigned char data[] = {
36 0x00 ,0x00 ,0x1a ,0x00, 0x6f, 0x18, 0x00, 0x00,
37 0x02, 0xe6, 0x8a, 0xdf, 0x12, 0x00, 0x00, 0x00,
38 0x12, 0x0c, 0xc8, 0x14, 0x40, 0x01, 0xc3, 0xa0,
41 senf::RadiotapPacket p (senf::RadiotapPacket::create(data));
44 BOOST_CHECK_EQUAL( p->version(), 0u);
45 BOOST_CHECK_EQUAL( p->length(), 26u);
48 BOOST_CHECK_EQUAL( p->tsftPresent(), true);
49 BOOST_CHECK_EQUAL( p->flagsPresent(), true);
50 BOOST_CHECK_EQUAL( p->extendedBitmaskPresent(), false);
51 BOOST_CHECK_EQUAL( p->ratePresent(), true);
52 BOOST_CHECK_EQUAL( p->channelOptionsPresent(), true);
53 BOOST_CHECK_EQUAL( p->fhssPresent(), false);
54 BOOST_CHECK_EQUAL( p->dbmAntennaSignalPresent(), true);
55 BOOST_CHECK_EQUAL( p->dbmAntennaNoisePresent(), true);
56 BOOST_CHECK_EQUAL( p->lockQualityPresent(), false);
57 BOOST_CHECK_EQUAL( p->txAttenuationPresent(), false);
58 BOOST_CHECK_EQUAL( p->dbmTxAttenuationPresent(), false);
59 BOOST_CHECK_EQUAL( p->dbTxAttenuationPresent(), false);
60 BOOST_CHECK_EQUAL( p->antennaPresent(), true);
61 BOOST_CHECK_EQUAL( p->dbAntennaSignalPresent(), true);
62 BOOST_CHECK_EQUAL( p->dbAntennaNoisePresent(), false);
65 BOOST_CHECK_EQUAL( p->tsft(), 81059833346uLL);
66 BOOST_CHECK_EQUAL( p->rate(), 12u);
67 BOOST_CHECK_EQUAL( p->channelOptions().freq(), 5320u);
68 BOOST_CHECK_EQUAL( p->dbmAntennaSignal(), -61);
69 BOOST_CHECK_EQUAL( p->dbmAntennaNoise(), -96);
70 BOOST_CHECK_EQUAL( p->antenna(), 2u);
71 BOOST_CHECK_EQUAL( p->dbAntennaSignal(), 35u);
74 BOOST_CHECK_EQUAL( p->flags().cfp(), false);
75 BOOST_CHECK_EQUAL( p->flags().shortPreamble(), true);
76 BOOST_CHECK_EQUAL( p->flags().wep(), false);
77 BOOST_CHECK_EQUAL( p->flags().fragmentation(), false);
78 BOOST_CHECK_EQUAL( p->flags().fcsPresent(), true);
79 BOOST_CHECK_EQUAL( p->flags().padding(), false);
80 BOOST_CHECK_EQUAL( p->flags().badFCS(), false);
81 BOOST_CHECK_EQUAL( p->flags().shortGI(), false);
84 BOOST_CHECK_EQUAL( p->channelOptions().ofdm(), true);
85 BOOST_CHECK_EQUAL( p->channelOptions().turbo(), false);
86 BOOST_CHECK_EQUAL( p->channelOptions().cck(), false);
87 BOOST_CHECK_EQUAL( p->channelOptions().flag5ghz(), true);
88 BOOST_CHECK_EQUAL( p->channelOptions().passive(), false);
89 BOOST_CHECK_EQUAL( p->channelOptions().cckOfdm(), false);
90 BOOST_CHECK_EQUAL( p->channelOptions().gfsk(), false);
91 BOOST_CHECK_EQUAL( p->channelOptions().gsm(), false);
92 BOOST_CHECK_EQUAL( p->channelOptions().staticTurbo(), false);
93 BOOST_CHECK_EQUAL( p->channelOptions().halfRateChannel(), false);
94 BOOST_CHECK_EQUAL( p->channelOptions().quarterRateChannel(), false);
97 BOOST_AUTO_UNIT_TEST(RadiotapPacket_create)
99 unsigned char data[] = {
100 0x00 ,0x00 ,0x1a ,0x00, 0x6f, 0x18, 0x00, 0x00,
101 0x02, 0xe6, 0x8a, 0xdf, 0x12, 0x00, 0x00, 0x00,
102 0x12, 0x0c, 0xc8, 0x14, 0x40, 0x01, 0xc3, 0xa0,
106 senf::RadiotapPacket p (senf::RadiotapPacket::create());
108 SENF_CHECK_NO_THROW( p->init_tsft());
109 SENF_CHECK_NO_THROW( p->tsft()=81059833346uLL);
111 SENF_CHECK_NO_THROW( p->init_rate());
112 SENF_CHECK_NO_THROW( p->rate() = 12u);
113 SENF_CHECK_NO_THROW( p->init_dbmAntennaSignal());
114 SENF_CHECK_NO_THROW( p->dbmAntennaSignal() = -61);
115 SENF_CHECK_NO_THROW( p->init_dbmAntennaNoise());
116 SENF_CHECK_NO_THROW( p->dbmAntennaNoise() = -96);
117 SENF_CHECK_NO_THROW( p->init_antenna());
118 SENF_CHECK_NO_THROW( p->antenna() = 2u);
119 SENF_CHECK_NO_THROW( p->init_dbAntennaSignal());
120 SENF_CHECK_NO_THROW( p->dbAntennaSignal() = 35);
122 SENF_CHECK_NO_THROW( p->init_flags());
123 SENF_CHECK_NO_THROW( p->flags().cfp() = false);
124 SENF_CHECK_NO_THROW( p->flags().shortPreamble() = true);
125 SENF_CHECK_NO_THROW( p->flags().wep() = false);
126 SENF_CHECK_NO_THROW( p->flags().fragmentation() = false);
127 SENF_CHECK_NO_THROW( p->flags().fcsPresent() = true);
128 SENF_CHECK_NO_THROW( p->flags().padding() = false);
129 SENF_CHECK_NO_THROW( p->flags().badFCS() = false);
130 SENF_CHECK_NO_THROW( p->flags().shortGI() = false);
132 SENF_CHECK_NO_THROW( p->init_channelOptions());
133 SENF_CHECK_NO_THROW( p->channelOptions().freq() = 5320u)
134 SENF_CHECK_NO_THROW( p->channelOptions().ofdm() = true);
135 SENF_CHECK_NO_THROW( p->channelOptions().turbo() = false);
136 SENF_CHECK_NO_THROW( p->channelOptions().cck() = false);
137 SENF_CHECK_NO_THROW( p->channelOptions().flag5ghz() = true);
138 SENF_CHECK_NO_THROW( p->channelOptions().passive() = false);
139 SENF_CHECK_NO_THROW( p->channelOptions().cckOfdm() = false);
140 SENF_CHECK_NO_THROW( p->channelOptions().gfsk() = false);
141 SENF_CHECK_NO_THROW( p->channelOptions().gsm() = false);
142 SENF_CHECK_NO_THROW( p->channelOptions().staticTurbo() = false);
143 SENF_CHECK_NO_THROW( p->channelOptions().halfRateChannel() = false);
144 SENF_CHECK_NO_THROW( p->channelOptions().quarterRateChannel() = false);
148 BOOST_CHECK_EQUAL( p->length(), 26u );
149 BOOST_CHECK( equal( p.data().begin(), p.data().end(), data ));
152 BOOST_AUTO_UNIT_TEST(RadiotapPacket_packet_ath9k)
154 /* radiotap packet from ath9k with atheros card*/
155 unsigned char data[] = {
156 0x00, 0x00, 0x20, 0x00, 0x6f, 0x48, 0x00, 0x00, 0x87, 0xbb, 0x91, 0x7c, 0x3b, 0x00, 0x00, 0x00,
157 0x00, 0x04, 0x85, 0x09, 0x80, 0x04, 0xb2, 0xa1, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x1a, 0xf7, 0x94
159 senf::RadiotapPacket p (senf::RadiotapPacket::create(data));
161 /* mandatory fields*/
162 BOOST_CHECK_EQUAL( p->version(), 0u);
163 BOOST_CHECK_EQUAL( p->length(), 32u);
165 BOOST_CHECK_EQUAL( p->dbmAntennaSignal(), -78);
166 BOOST_CHECK_EQUAL( p->dbmAntennaNoise(), -95);
167 BOOST_CHECK_EQUAL( p->fcs(), 0xd51af794);
168 BOOST_CHECK_EQUAL( p->antenna(), 0u);