#!/usr/bin/python # # Sigma Control API DUT (sniffer_control_field_check) # Copyright (c) 2014, Qualcomm Atheros, Inc. # All Rights Reserved. # Licensed under the Clear BSD license. See README for more details. import sys import subprocess import tshark framename = None wsc_state = None pvb_bit = None moredata_bit = None eosp_bit = None for arg in sys.argv: if arg.startswith("FileName="): infile = arg.split("=", 1)[1] elif arg.startswith("SrcMac="): srcmac = arg.split("=", 1)[1] elif arg.startswith("FrameName="): framename = arg.split("=", 1)[1].lower() elif arg.startswith("WSC_State="): wsc_state = arg.split("=", 1)[1] elif arg.startswith("pvb_bit="): pvb_bit = arg.split("=", 1)[1] elif arg.startswith("MoreData_bit="): moredata_bit = arg.split("=", 1)[1] elif arg.startswith("EOSP_bit="): eosp_bit = arg.split("=", 1)[1] filter = 'wlan.sa==' + srcmac if framename: frame_filters = tshark.tshark_framenames() if framename not in frame_filters: print "errorCode,Unsupported FrameName" sys.exit() filter = filter + " and " + frame_filters[framename] if wsc_state: filter = filter + " and wps.wifi_protected_setup_state == " + wsc_state if pvb_bit: val = int(pvb_bit) if val == 1: filter = filter + " and wlan_mgt.tim.partial_virtual_bitmap != 0" elif val == 0: filter = filter + " and wlan_mgt.tim.partial_virtual_bitmap == 0" else: filter = filter + " and wlan_mgt.tim.partial_virtual_bitmap == " + pvb_bit if moredata_bit: filter = filter + " and wlan.fc.moredata == " + moredata_bit if eosp_bit: filter = filter + " and wlan.qos.eosp == " + eosp_bit cmd = ['tshark', '-r', infile, '-c', '1', '-R', filter, '-Tfields', '-e', 'frame.number'] tshark = subprocess.Popen(cmd, stdout=subprocess.PIPE) data = tshark.stdout.read() frames = data.splitlines() if len(frames) == 0: print "CheckResult,FAIL" else: print "CheckResult,SUCCESS"