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