1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-27 04:11:35 +01:00

Fixed some parsing bugs in RadioTap.

This commit is contained in:
Matias Fontanini
2012-10-17 23:33:05 -03:00
parent cd9d29f354
commit f4d37f5a51
4 changed files with 211 additions and 114 deletions

View File

@@ -16,7 +16,24 @@ public:
};
const uint8_t RadioTapTest::expected_packet[] = {
'\x1f', '\x00', ' ', '\x00', 'g', '\x08', '\x04', '\x00', '\x80', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', 'd', '\x00', '\x00', '\x00'
'\x00', '\x00', ' ', '\x00', 'g', '\x08', '\x04', '\x00', 'T', '\xc6',
'\xb8', '$', '\x00', '\x00', '\x00', '\x00', '"', '\x0c', '\xda',
'\xa0', '\x02', '\x00', '\x00', '\x00', '@', '\x01', '\x00', '\x00',
'<', '\x14', '$', '\x11', '\x80', '\x00', '\x00', '\x00', '\xff',
'\xff', '\xff', '\xff', '\xff', '\xff', '\x06', '\x03', '\x7f',
'\x07', '\xa0', '\x16', '\x06', '\x03', '\x7f', '\x07', '\xa0',
'\x16', '\xb0', 'w', ':', '@', '\xcb', '&', '\x00', '\x00', '\x00',
'\x00', 'd', '\x00', '\x01', '\x05', '\x00', '\n', 'f', 'r', 'e',
'e', 'b', 's', 'd', '-', 'a', 'p', '\x01', '\x08', '\x8c', '\x12',
'\x98', '$', '\xb0', 'H', '`', 'l', '\x03', '\x01', '$', '\x05',
'\x04', '\x00', '\x01', '\x00', '\x00', '\x07', '*', 'U', 'S', ' ',
'$', '\x01', '\x11', '(', '\x01', '\x11', ',', '\x01', '\x11', '0',
'\x01', '\x11', '4', '\x01', '\x17', '8', '\x01', '\x17', '<', '\x01',
'\x17', '@', '\x01', '\x17', '\x95', '\x01', '\x1e', '\x99', '\x01',
'\x1e', '\x9d', '\x01', '\x1e', '\xa1', '\x01', '\x1e', '\xa5', '\x01',
'\x1e', ' ', '\x01', '\x00', '\xdd', '\x18', '\x00', 'P', '\xf2',
'\x02', '\x01', '\x01', '\x00', '\x00', '\x03', '\xa4', '\x00', '\x00',
'\'', '\xa4', '\x00', '\x00', 'B', 'C', '^', '\x00', 'b', '2', '/', '\x00'
};
TEST_F(RadioTapTest, DefaultConstructor) {
@@ -30,16 +47,23 @@ TEST_F(RadioTapTest, DefaultConstructor) {
EXPECT_EQ(radio.rx_flags(), 0);
}
//version=0x1f, pad=0x3a, present="TSFT+Antenna"
TEST_F(RadioTapTest, ConstructorFromBuffer) {
RadioTap radio(expected_packet, sizeof(expected_packet));
EXPECT_EQ(radio.version(), 0x1f);
EXPECT_EQ(radio.padding(), 0);
EXPECT_EQ(radio.antenna(), 2);
EXPECT_EQ(radio.rate(), 6);
EXPECT_EQ(radio.rx_flags(), 0);
EXPECT_EQ(radio.channel_freq(), 5180);
EXPECT_EQ(radio.version(), 0);
EXPECT_EQ(radio.channel_type(), 0x140);
EXPECT_EQ(radio.tsft(), 616089172);
EXPECT_EQ(radio.dbm_signal(), 0xda);
EXPECT_EQ(radio.dbm_noise(), 0xa0);
EXPECT_EQ(radio.antenna(), 2);
EXPECT_EQ(radio.rx_flags(), 0);
}
TEST_F(RadioTapTest, Serialize) {
RadioTap radio(expected_packet, sizeof(expected_packet));
RadioTap::serialization_type buffer = radio.serialize();
ASSERT_EQ(buffer.size(), sizeof(expected_packet));
EXPECT_TRUE(std::equal(buffer.begin(), buffer.end(), expected_packet));
}
TEST_F(RadioTapTest, Channel) {
@@ -79,6 +103,12 @@ TEST_F(RadioTapTest, DBMSignal) {
EXPECT_EQ(radio.dbm_signal(), 0x7a);
}
TEST_F(RadioTapTest, DBMNoise) {
RadioTap radio;
radio.dbm_noise(0x7a);
EXPECT_EQ(radio.dbm_noise(), 0x7a);
}
TEST_F(RadioTapTest, RXFlags) {
RadioTap radio;
radio.rx_flags(0x7afb);