def _iesubelfmsreq_(s,sid):
""" :returns: parsed fms request subelement """
ret = s
if sid == std.EID_FMS_REQ_SUBELEMENT_FMS: # Std Fig. 8-327
# Note: the 4-byte rate identification is defined in 8.4.1.32
# as 1|1|2
di,mi,m,i,r = struct.unpack_from('=4BH',s)
rem = s[6:]
ret = {'delv-intv':di,
'max-delv-intv':mi,
'rate-ident':{'mask':_rateidmask_(m),
'mcs-index':i,
'rate':r}}
# there are one or more tclas elements folled by an option tclas
# processing element
while rem:
eid,tlen = struct.unpack_from('=2B',rem)
if eid == std.EID_TCLAS:
if not 'tclas' in ret: ret['tclas'] = []
ret['tclas'].append(_parseie_(std.EID_TCLAS,rem[:tlen]))
ret = ret[2+tlen:]
elif eid == std.EID_TCLAS_PRO:
ret['tclas-pro'] = _parseie_(std.EID_TCLAS_PRO,ret)
# could use a break here but want to make sure
# there are not hanging elements
ret = ret[3:]
elif sid == std.EID_FMS_REQ_SUBELEMENT_VEND:
ret = _parseie_(std.EID_VEND_SPEC,s)
return ret
# FMS Response subelements Std Table 8-159 & figures commented below
评论列表
文章目录