blob: 5739a8589491ab78c9f0f47830a357cdf9960e9a [file] [log] [blame]
Jouni Malinencd4e3c32015-10-29 12:39:56 +02001#!/usr/bin/python
2#
3# Sigma Control API DUT (sniffer_control_field_check)
4# Copyright (c) 2014, Qualcomm Atheros, Inc.
5# All Rights Reserved.
6# Licensed under the Clear BSD license. See README for more details.
7
8import sys
9import subprocess
10import tshark
11
12framename = None
13wsc_state = None
14pvb_bit = None
15moredata_bit = None
16eosp_bit = None
17
18for arg in sys.argv:
19 if arg.startswith("FileName="):
20 infile = arg.split("=", 1)[1]
21 elif arg.startswith("SrcMac="):
22 srcmac = arg.split("=", 1)[1]
23 elif arg.startswith("FrameName="):
24 framename = arg.split("=", 1)[1].lower()
25 elif arg.startswith("WSC_State="):
26 wsc_state = arg.split("=", 1)[1]
27 elif arg.startswith("pvb_bit="):
28 pvb_bit = arg.split("=", 1)[1]
29 elif arg.startswith("MoreData_bit="):
30 moredata_bit = arg.split("=", 1)[1]
31 elif arg.startswith("EOSP_bit="):
32 eosp_bit = arg.split("=", 1)[1]
33
34filter = 'wlan.sa==' + srcmac
35
36if framename:
37 frame_filters = tshark.tshark_framenames()
38 if framename not in frame_filters:
39 print "errorCode,Unsupported FrameName"
40 sys.exit()
41 filter = filter + " and " + frame_filters[framename]
42
43if wsc_state:
44 filter = filter + " and wps.wifi_protected_setup_state == " + wsc_state
45
46if pvb_bit:
47 val = int(pvb_bit)
48 if val == 1:
49 filter = filter + " and wlan_mgt.tim.partial_virtual_bitmap != 0"
50 elif val == 0:
51 filter = filter + " and wlan_mgt.tim.partial_virtual_bitmap == 0"
52 else:
53 filter = filter + " and wlan_mgt.tim.partial_virtual_bitmap == " + pvb_bit
54
55if moredata_bit:
56 filter = filter + " and wlan.fc.moredata == " + moredata_bit
57
58if eosp_bit:
59 filter = filter + " and wlan.qos.eosp == " + eosp_bit
60
61cmd = ['tshark', '-r', infile, '-c', '1', '-R', filter,
62 '-Tfields', '-e', 'frame.number']
63tshark = subprocess.Popen(cmd, stdout=subprocess.PIPE)
64data = tshark.stdout.read()
65frames = data.splitlines()
66if len(frames) == 0:
67 print "CheckResult,FAIL"
68else:
69 print "CheckResult,SUCCESS"