xref: /wlan-dirver/utils/sigma-dut/sniffer-control-field-check.py (revision cd4e3c3e0365aac6e078aab03f11d01d8f1020d5)
1#!/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"
70