summaryrefslogtreecommitdiff
path: root/maximus/python/lib
diff options
context:
space:
mode:
authorronciere2007-11-07 16:30:24 +0000
committerronciere2007-11-07 16:30:24 +0000
commitbf69aadf87ad733aec44ffb78cecc847f6c0e503 (patch)
treecbefae97d5707c666b8c9c66e20146a548acdddb /maximus/python/lib
parent22db6c78fd9497e10f79cd75750877069a08bf40 (diff)
mmentryMethod update
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@965 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'maximus/python/lib')
-rw-r--r--maximus/python/lib/Constants.py8
-rw-r--r--maximus/python/lib/fidMethod.py8
-rw-r--r--maximus/python/lib/mmeScript.py56
-rw-r--r--maximus/python/lib/mmentryFields.py608
-rw-r--r--maximus/python/lib/mmentryMethod.py627
5 files changed, 835 insertions, 472 deletions
diff --git a/maximus/python/lib/Constants.py b/maximus/python/lib/Constants.py
index 9ba8c7b566..56617e4f44 100644
--- a/maximus/python/lib/Constants.py
+++ b/maximus/python/lib/Constants.py
@@ -23,10 +23,10 @@ timeOutRx = 5000 #timeOutRx default's value = 5s
#MAC Frame Type = MFT
#= First field of the MAC Frame Header
#= 2-bits field that identifies the "MAC Frame Type"
-mfs = 0 #MAC Frame Stream
-msduWOats = 1 #MSDU WithOut ATS
-msduWats = 2 #MSDU With ATS
-mme = 3 #Management Message
+mfsMft = 0 #MAC Frame Stream
+msduWOatsMft = 1 #MSDU WithOut ATS
+msduWatsMft = 2 #MSDU With ATS
+mmeMft = 3 #Management Message
#MME Interpretation
#--- Station - Central Coordination ---
diff --git a/maximus/python/lib/fidMethod.py b/maximus/python/lib/fidMethod.py
index f9bb12c077..235cd44844 100644
--- a/maximus/python/lib/fidMethod.py
+++ b/maximus/python/lib/fidMethod.py
@@ -160,7 +160,7 @@ class FidMethod():
sourceIpAddressField = pack('I',sourceIpAddress)
else:
#if IPv6 : IP Address = "8 MSBytes" + "8 LSBytes"
- sourceIpAddressField = pack('Q',sourceIpAddress/pow(2,64)) + pack('Q',sourceIpAddress%pow(2,64))
+ sourceIpAddressField = pack('Q',sourceIpAddress/18446744073709551616) + pack('Q',sourceIpAddress%18446744073709551616) #18446744073709551616=2^64
def createSourceIpAddress(self, mySourceIpAddress=None):
if mySourceIpAddress!=None:
self.sourceIpAddress=mySourceIpAddress
@@ -168,7 +168,7 @@ class FidMethod():
self.sourceIpAddressField = pack('I',self.sourceIpAddress)
else:
#if IPv6 : IP Address = "8 MSBytes" + "8 LSBytes"
- self.sourceIpAddressField = pack('Q',self.sourceIpAddress/pow(2,64)) + pack('Q',self.sourceIpAddress%pow(2,64))
+ self.sourceIpAddressField = pack('Q',self.sourceIpAddress/18446744073709551616) + pack('Q',self.sourceIpAddress%18446744073709551616)
# IP Port Number of Source HLE
sourceIpPort = 0x6162
@@ -186,7 +186,7 @@ class FidMethod():
destinationIpAddressField = pack('I',destinationIpAddress)
else:
#if IPv6 : IP Address = "8 MSBytes" + "8 LSBytes"
- destinationIpAddressField = pack('Q',destinationIpAddress/pow(2,64)) + pack('Q',destinationIpAddress%pow(2,64))
+ destinationIpAddressField = pack('Q',destinationIpAddress/18446744073709551616) + pack('Q',destinationIpAddress%18446744073709551616)
def createDestinationIpAddress(self, myDestinationIpAddress=None):
if myDestinationIpAddress!=None:
self.destinationIpAddress=myDestinationIpAddress
@@ -194,7 +194,7 @@ class FidMethod():
self.destinationIpAddressField = pack('I',self.destinationIpAddress)
else:
#if IPv6 : IP Address = "8 MSBytes" + "8 LSBytes"
- self.destinationIpAddressField = pack('Q',self.destinationIpAddress/pow(2,64)) + pack('Q',self.destinationIpAddress%pow(2,64))
+ self.destinationIpAddressField = pack('Q',self.destinationIpAddress/18446744073709551616) + pack('Q',self.destinationIpAddress%18446744073709551616)
# IP Port Number of destination HLE
destinationIpPort = 0x7879
diff --git a/maximus/python/lib/mmeScript.py b/maximus/python/lib/mmeScript.py
index 849fc77cf3..8cb9f6427d 100644
--- a/maximus/python/lib/mmeScript.py
+++ b/maximus/python/lib/mmeScript.py
@@ -11,12 +11,10 @@ import startup
import unittest
from interface import *
from maximus import *
-from maximus.mme import *
from maximus.mme.mme import *
from mmentryMethod import *
-#from mmentryFields import *
-#from fidMethod import *
-#from mmentry import *
+from maximus.macframe.macframe import *
+from binascii import * #binascii library is used : crc32(),
# Instantiate a Maximus object and initialize it.
maximus = Maximus()
@@ -38,18 +36,48 @@ print mmentryMethod.mmentryFields.reqType
print mmentryMethod.mmentry.CC_CCO_APPOINT_REQ
-mme = MME()
+myMme = MME()
myStaAAddress = 0x41617453796D
-mme.mmheader.oda=myStaAAddress
-mme.mmheader.osa=maxAddress
-mme.mmheader.vlantag=0
-mme.mmheader.mmtype=CC_CCO_APPOINT_REQ
-mme.mmheader.fmi=0
+myMme.mmheader.oda=myStaAAddress
+myMme.mmheader.osa=maxAddress
+myMme.mmheader.vlantag=0
+myMme.mmheader.mmtype=CC_CCO_APPOINT_REQ
+myMme.mmheader.fmi=0
+myMme.mmentry=mmentryMethod.mmentry.CC_CCO_APPOINT_REQ
+
+print pack('Q',myMme.mmheader.oda)[0:6]
+print pack('Q',myMme.mmheader.osa)[0:6]
+
+myMme.send()
+myMme.recv()
+
+
+#Create mac frame
+macFrame = MACFrame()
+macFrameHeader = MACFrameHeader()
+macFrameHeader.set_mft(mmeMft)
+macFrameHeader.set_mfl(59)
+macFrame.set_macframeheader(macFrameHeader)
+macFrame.set_msdu(myMme)
+macFrame.set_confounder(randrange(0,pow(2,32)-1,1))
+macFrame.set_icv(crc32(macFrame.mpdu.msdu))
+ivSof='0'*12
+macFrame.set_iv(ivSof) #IV_SOF et non IV !!!
+macFrame.set_nek('0'*16)
+
+#macFrame.sendnrecv(maximus, fc_mode=0, short_ppdu=0, mod=0, file=None, filter=None, timeout=None, count=1)
+
+#fc_mode=0 un symbol par defaut
+
+#mod=0 ROBO par defaut
+
+#short_ppdu=0 DATA a suivre par defaut
+
+
+
+
+
-print pack('Q',mme.mmheader.oda)[0:6]
-print pack('Q',mme.mmheader.osa)[0:6]
-mme.send()
-mme.recv()
myStaA.remove() \ No newline at end of file
diff --git a/maximus/python/lib/mmentryFields.py b/maximus/python/lib/mmentryFields.py
index 51eec9df1e..f2c4acef58 100644
--- a/maximus/python/lib/mmentryFields.py
+++ b/maximus/python/lib/mmentryFields.py
@@ -4,7 +4,7 @@
from struct import *
from fidMethod import *
from math import *
-
+from random import randrange #random library is used : randrange(),
@@ -20,11 +20,11 @@ class Cinfo():
# CINFO Validity
valid = 1 #1:CINFO is Valid, 0:CINFO is not Valid
- validField = pack('H',valid)[0]
+ validField = pack('B',valid)
def createValid(self, myValid=None):
if myValid!=None:
self.valid=myValid
- self.validField = pack('H',self.valid)[0]
+ self.validField = pack('B',self.valid)
# Connections and Network Modes
# 0=contention-free service
@@ -32,28 +32,28 @@ class Cinfo():
# 2=contention-free sevice prefered
macServiceType = 2
if valid == 1:
- macServiceTypeField = pack('H',macServiceType)[0]
+ macServiceTypeField = pack('B',macServiceType)
else:
macServiceTypeField = ""
def createMacServiceType(self, myMacServiceType=None):
if myMacServiceType!=None:
self.macServiceType=myMacServiceType
if self.valid == 1:
- self.macServiceTypeField = pack('H',self.macServiceType)[0]
+ self.macServiceTypeField = pack('B',self.macServiceType)
else:
self.macServiceTypeField = ""
# Channel Access Priority
userPriority = 0
if valid == 1:
- userPriorityField = pack('H',userPriority)[0]
+ userPriorityField = pack('B',userPriority)
else:
userPriorityField = ""
def createUserPriority(self, myUserPriority=None):
if myUserPriority!=None:
self.userPriority=myUserPriority
if self.valid == 1:
- self.userPriorityField = pack('H',self.userPriority)[0]
+ self.userPriorityField = pack('B',self.userPriority)
else:
self.userPriorityField = ""
@@ -62,14 +62,14 @@ class Cinfo():
# 1=ATS should be passed to HLE
ats = 1
if valid == 1:
- atsField = pack('H',ats)[0]
+ atsField = pack('B',ats)
else:
atsField = ""
def createAts(self, myAts=None):
if myAts!=None:
self.ats=myAts
if self.valid == 1:
- self.atsField = pack('H',self.ats)[0]
+ self.atsField = pack('B',self.ats)
else:
self.atsField = ""
@@ -78,14 +78,14 @@ class Cinfo():
# 1=if supported receiver should activate smoothing
smoothing = 1
if valid == 1:
- smoothingField = pack('H',smoothing)[0]
+ smoothingField = pack('B',smoothing)
else:
smoothingField = ""
def createSmoothing(self, mySmoothing=None):
if mySmoothing!=None:
self.smoothing=mySmoothing
if self.valid == 1:
- self.smoothingField = pack('H',self.smoothing)[0]
+ self.smoothingField = pack('B',self.smoothing)
else:
self.smoothingField = ""
@@ -118,26 +118,26 @@ class Qmp():
# 0=Forward from source to receiver
# 1=Reverse from receiver to source
fR = 0
- fRField = pack('H',fR)[0]
+ fRField = pack('B',fR)
def createFR(self, myFR=None):
if myFR!=None:
self.fR=myFR
- self.fRField = pack('H',self.fR)[0]
+ self.fRField = pack('B',self.fR)
#Length of the Body Field
length = 1
- lengthField = pack('H',length)[0]
+ lengthField = pack('B',length)
def createLength(self):
self.length = len(self.dataField)
- self.lengthField = pack('H',self.length)[0]
+ self.lengthField = pack('B',self.length)
#Identifier of the QoS and MAC Parameter Field
fid = Delay_Bound #Delay_Bound by default
- fidField = pack('H',fid)[0]
+ fidField = pack('B',fid)
def createFid(self, myFid=None):
if myFid!=None:
self.fid=myFid
- self.fidField = pack('H',self.fid)[0]
+ self.fidField = pack('B',self.fid)
#Data of the QoS and MAC Parameter Field
data = FidMethod()
@@ -197,12 +197,12 @@ class Cspec():
class Ble():
#Number of intervals
- num = 256 #By default MAX Bit Loading Estimates are available
- numField = pack('H',num)[0]
+ num = 255 #By default MAX Bit Loading Estimates are available
+ numField = pack('B',num)
def createNum(self, myNum=None):
if myNum!=None:
self.num=myNum
- self.numField = pack('H',self.num)[0]
+ self.numField = pack('B',self.num)
#Interval End Time #1-N and Bit Loading Estimate #1-N
endTime = []
@@ -220,7 +220,7 @@ class Ble():
exponent.append(max(0,int(log(max(2,intBle[0]),2))-1))
mantissa.append(max(0,int(32*(intBle[0]/pow(2,exponent[0]+1)-1))))
interval.append(mantissa[i]*pow(2,3)+exponent[i]) #is the Bit Loading Estimate #1-N
- intervalField.append(pack('H',interval[i])[0])
+ intervalField.append(pack('B',interval[i]))
i=i+1
num=0
def createIntervalEndTimeAndBitLoadingEstimate(self, myEndTime=None, myIntBle=None):
@@ -230,11 +230,13 @@ class Ble():
self.endTime[self.i]=myEndTime
if myIntBle!=None:
self.intBle[self.i]=myIntBle
+ print "endTime["+str(self.i)+"] = "+hex(self.endTime[self.i])
self.endTimeField[self.i] = pack('H',self.endTime[self.i])
self.exponent[self.i] = max(0,int(log(max(2,self.intBle[self.i]),2))-1)
self.mantissa[self.i] = max(0,int(32*(self.intBle[self.i]/pow(2,self.exponent[self.i]+1)-1)))
self.interval[self.i] = int(self.mantissa[self.i]*pow(2,3)+self.exponent[self.i])
- self.intervalField[self.i] = pack('H',self.interval[self.i])[0]
+ print "interval["+str(self.i)+"] = "+hex(self.interval[self.i])
+ self.intervalField[self.i] = pack('B',self.interval[self.i])
self.i = self.i + 1
#BLE Field :
@@ -255,17 +257,17 @@ class Ble():
#Connection Identifier
class Cid():
tei = 0
- teiField = pack('H',tei)[0]
+ teiField = pack('B',tei)
def createTei(self, myTei=None):
if myTei!=None:
self.tei=myTei
- self.teiField = pack('H',self.tei)[0]
+ self.teiField = pack('B',self.tei)
llidF = 0
- llidFField = pack('H',llidF)[0]
+ llidFField = pack('B',llidF)
def createLlidF(self, myLlidF=None):
if myLlidF!=None:
self.llidF=myLlidF
- self.llidFField = pack('H',self.llidF)[0]
+ self.llidFField = pack('B',self.llidF)
cid = teiField + llidFField
def createCid(self, myTei=None, myLlidF=None):
self.createTei(myTei)
@@ -276,29 +278,29 @@ class Cid():
class GlobalLinkInfo():
cid = Cid()
stei = 0
- steiField = pack('H',stei)[0]
+ steiField = pack('B',stei)
def createStei(self, myStei=None):
if myStei!=None:
self.stei=myStei
- self.steiField = pack('H',self.stei)[0]
+ self.steiField = pack('B',self.stei)
dtei = 0
- dteiField = pack('H',dtei)[0]
+ dteiField = pack('B',dtei)
def createDtei(self, myDtei=None):
if myDtei!=None:
self.dtei=myDtei
- self.dteiField = pack('H',self.dtei)[0]
+ self.dteiField = pack('B',self.dtei)
lidF = 0xFF
- lidFField = pack('H',lidF)[0]
+ lidFField = pack('B',lidF)
def createLidF(self, myLidF=None):
if myLidF!=None:
self.lidF=myLidF
- self.lidFField = pack('H',self.lidF)[0]
+ self.lidFField = pack('B',self.lidF)
lidR = 0xFF
- lidRField = pack('H',lidR)[0]
+ lidRField = pack('B',lidR)
def createLidR(self, myLidR=None):
if myLidR!=None:
self.lidR=myLidR
- self.lidRField = pack('H',self.lidR)[0]
+ self.lidRField = pack('B',self.lidR)
cspec = Cspec()
bleForward = Ble()
bleReverse = Ble()
@@ -318,11 +320,11 @@ class GlobalLinkInfo():
#Station Informations
class StaInfo():
tei = 0
- teiField = pack('H',tei)[0]
+ teiField = pack('B',tei)
def createTei(self, myTei=None):
if myTei!=None:
self.tei=myTei
- self.teiField = pack('H',self.tei)[0]
+ self.teiField = pack('B',self.tei)
macAddress = 0
macAddressField = pack('Q',macAddress)[0:6]
def createMacAddress(self, myMacAddress=None):
@@ -330,17 +332,17 @@ class StaInfo():
self.macAddress=myMacAddress
self.macAddressField = pack('Q',self.macAddress)[0:6]
status = 0
- statusField = pack('H',status)[0]
+ statusField = pack('B',status)
def createStatus(self, myStatus=None):
if myStatus!=None:
self.status=myStatus
- self.statusField = pack('H',self.status)[0]
+ self.statusField = pack('B',self.status)
ptei = 0
- pteiField = pack('H',ptei)[0]
+ pteiField = pack('B',ptei)
def createPtei(self, myPtei=None):
if myPtei!=None:
self.ptei=myPtei
- self.pteiField = pack('H',self.ptei)[0]
+ self.pteiField = pack('B',self.ptei)
staInfo = teiField + macAddressField + statusField + pteiField
def createStaInfo(self, myTei=None, myMacAddress=None, myStatus=None, myPtei=None):
self.createTei(myTei)
@@ -358,21 +360,21 @@ class StationInfo():
self.macAddress=myMacAddress
self.macAddressField = pack('Q',self.macAddress)[0:6]
tei = 0
- teiField = pack('H',tei)[0]
+ teiField = pack('B',tei)
def createTei(self, myTei=None):
if myTei!=None:
self.tei=myTei
- self.teiField = pack('H',self.tei)[0]
+ self.teiField = pack('B',self.tei)
sameNetwork = 1 #SameNetwork by default
- sameNetworkField = pack('H',sameNetwork)[0]
+ sameNetworkField = pack('B',sameNetwork)
def createSameNetwork(self, mySameNetwork=None):
if mySameNetwork!=None:
self.sameNetwork=mySameNetwork
- self.sameNetworkField = pack('H',self.sameNetwork)[0]
+ self.sameNetworkField = pack('B',self.sameNetwork)
snid = 0xA
access = 0 #in home by default
snidAccess = snid + access*pow(2,4)
- snidAccessField = pack('H',snidAccess)[0]
+ snidAccessField = pack('B',snidAccess)
def createSnidAccess(self, mySnid=None, myAccess=None, mySnidAccess=None):
if mySnid!=None:
self.snid=mySnid
@@ -382,7 +384,7 @@ class StationInfo():
self.snidAccess=mySnidAccess
else:
self.snidAccess = self.snid + self.access*pow(2,4)
- self.snidAccessField = pack('H',self.snidAccess)[0]
+ self.snidAccessField = pack('B',self.snidAccess)
reserved = 0
ccoCapability = 0 #does not support QoS and TDMA by default
proxyNetworkCapability = 0 #STA does not support Proxy Networking by default
@@ -391,7 +393,7 @@ class StationInfo():
pcoStatus = 0 #STA is not a PCo by default
backupCcoStatus = 0 #STA is not a Backup CCo by default
ninthOctet = reserved + ccoCapability*pow(2,1) + proxyNetworkCapability*pow(2,3) + backupCcoCapability*pow(2,4) + ccoStatus*pow(2,5) + pcoStatus*pow(2,6) + backupCcoStatus*pow(2,7)
- ninthOctetField = pack('H',ninthOctet)[0]
+ ninthOctetField = pack('B',ninthOctet)
def createNinthOctet(self, myCcoCapability=None, myProxyNetworkCapability=None, myBackupCcoCapability=None, myCcoStatus=None, myPcoStatus=None, myBackupCcoStatus=None, myNinthOctet=None):
if myCcoCapability!=None:
self.ccoCapability=myCcoCapability
@@ -408,13 +410,14 @@ class StationInfo():
if myNinthOctet!=None:
self.ninthOctet=myNinthOctet
else:
- self.ninthOctetField = pack('H',self.ninthOctet)[0]
+ self.ninthOctet = self.reserved + self.ccoCapability*pow(2,1) + self.proxyNetworkCapability*pow(2,3) + self.backupCcoCapability*pow(2,4) + self.ccoStatus*pow(2,5) + self.pcoStatus*pow(2,6) + self.backupCcoStatus*pow(2,7)
+ self.ninthOctetField = pack('B',self.ninthOctet)
signalLevel = 0 #information not available by default
- signalLevelField = pack('H',signalLevel)[0]
+ signalLevelField = pack('B',signalLevel)
def createSignalLevel(self, mySignalLevel=None):
if mySignalLevel!=None:
self.signalLevel=mySignalLevel
- self.signalLevelField = pack('H',self.signalLevel)[0]
+ self.signalLevelField = pack('B',self.signalLevel)
averageBle = Ble()
def createAverageBle(self, myEndTime=None, myIntBle=None):
self.averageBle.num=1
@@ -439,7 +442,7 @@ class NetworkInfo():
reserved = 0
securityLevel = 0 #Simple connect by default
nidOffset = 0x0f0e0d0c
- nid = nidOffset + securityLevel*pow(2,52) + reserved*pow(2,54)
+ nid = int(nidOffset + securityLevel*pow(2,52) + reserved*pow(2,54))
nidField = pack('Q',nid)[0:7]
def createNid(self, mySecurityLevel=None, myNidOffset=None, myNid=None):
if mySecurityLevel!=None:
@@ -449,12 +452,13 @@ class NetworkInfo():
if myNid!=None:
self.nid=myNid
else:
- self.nid = self.nidOffset + self.securityLevel*pow(2,52) + self.reserved*pow(2,54)
+ self.nid = int(self.nidOffset + self.securityLevel*pow(2,52) + self.reserved*pow(2,54))
self.nidField = pack('Q',self.nid)[0:7]
+ print "nid = "+hex(self.nid)
snid = 0xA
access = 0 #in home by default
- snidAccess = snid + access*pow(2,4)
- snidAccessField = pack('H',snidAccess)[0]
+ snidAccess = int(snid + access*pow(2,4))
+ snidAccessField = pack('B',snidAccess)
def createSnidAccess(self, mySnid=None, myAccess=None, mySnidAccess=None):
if mySnid!=None:
self.snid=mySnid
@@ -463,32 +467,37 @@ class NetworkInfo():
if mySnidAccess!=None:
self.snidAccess=mySnidAccess
else:
- self.snidAccess = self.snid + self.access*pow(2,4)
- self.snidAccessField = pack('H',self.snidAccess)[0]
+ self.snidAccess = int(self.snid + self.access*pow(2,4))
+ self.snidAccessField = pack('B',self.snidAccess)
+ print "snidAccess = "+hex(self.snidAccess)
hm=0 #AV Only Mode by default
- hmField = pack('H',hm)[0]
+ hmField = pack('B',hm)
def createHm(self, myHm=None):
if myHm!=None:
self.hm=myHm
- self.hmField = pack('H',self.hm)[0]
+ self.hmField = pack('B',self.hm)
+ print "hm = "+hex(self.hm)
numSlot = 0 #1 beacon slot by default
- numSlotField = pack('H',numSlot)[0]
+ numSlotField = pack('B',numSlot)
def createNumSlot(self, myNumSlot=None):
if myNumSlot!=None:
self.numSlot=myNumSlot
- self.numSlotField = pack('H',self.numSlot)[0]
+ self.numSlotField = pack('B',self.numSlot)
+ print "numSlot = "+hex(self.numSlot)
coordonatingStatus = 0 #Unknow by default
- coordonatingStatusField = pack('H',coordonatingStatus)[0]
+ coordonatingStatusField = pack('B',coordonatingStatus)
def createCoordonatingStatus(self, myCoordonatingStatus=None):
if myCoordonatingStatus!=None:
self.coordonatingStatus=myCoordonatingStatus
- self.coordonatingStatusField = pack('H',self.coordonatingStatus)[0]
+ self.coordonatingStatusField = pack('B',self.coordonatingStatus)
+ print "coordonatingStatus = "+hex(self.coordonatingStatus)
offset = 0 #In the same group by default
offsetField = pack('H',offset)
def createOffset(self, myOffset=None):
if myOffset!=None:
self.offset=myOffset
self.offsetField = pack('H',self.offset)
+ print "offset = "+hex(self.offset)
networkInfo = nidField + snidAccessField + hmField + numSlotField + coordonatingStatusField + offsetField
def createNetworkInfo(self, mySecurityLevel=None, myNidOffset=None, myNid=None, mySnid=None, myAccess=None, mySnidAccess=None, myHm=None, myNumSlot=None, myCoordonatingStatus=None, myOffset=None):
self.createNid(mySecurityLevel, myNidOffset, myNid)
@@ -503,11 +512,11 @@ class NetworkInfo():
class Glids():
glids = []
glidsField = []
- numGlid = 256
+ numGlid = 255
i = 0
while i < numGlid:
glids.append(0xFF) #Local CSMA allocation by default
- glidsField.append(pack('H',glids[i])[0])
+ glidsField.append(pack('B',glids[i]))
i=i+1
def createGlids(self, myNumGlid=None, myGlids=None):
if myNumGlid!=None:
@@ -516,7 +525,8 @@ class Glids():
while self.i < self.numGlid:
if myGlids!=None:
self.glids[self.i]=myGlids
- self.glidsField[self.i]=pack('H',self.glids[self.i])[0]
+ self.glidsField[self.i]=pack('B',self.glids[self.i])
+ print "glids["+str(self.i)+"] = "+hex(self.glids[self.i])
self.i = self.i + 1
#GLID Info
@@ -532,7 +542,7 @@ class GlidsInfo():
othersDetectedsField = []
signalLevels = []
signalLevelsField = []
- numGlid = 256
+ numGlid = 255
glids = Glids()
glids.createGlids(numGlid)
def createGlids(self, myNumGlid=None):
@@ -542,66 +552,72 @@ class GlidsInfo():
i=0
while i<numGlid:
cfDetecteds.append(0) #Not detected by default
- cfDetectedsField.append(pack('H',cfDetecteds[i])[0])
+ cfDetectedsField.append(pack('B',cfDetecteds[i]))
i=i+1
def createCfDetecteds(self, myCfDetecteds=None):
self.i=0
while self.i<self.numGlid:
if myCfDetecteds!=None:
self.cfDetecteds[self.i]=myCfDetecteds
- self.cfDetectedsField[self.i] = pack('H',self.cfDetecteds[self.i])[0]
+ self.cfDetectedsField[self.i] = pack('B',self.cfDetecteds[self.i])
+ print "cfDetecteds["+str(self.i)+"] = "+hex(self.cfDetecteds[self.i])
self.i=self.i+1
i=0
while i<numGlid:
csmaDetecteds.append(0) #Not detected by default
- csmaDetectedsField.append(pack('H',csmaDetecteds[i])[0])
+ csmaDetectedsField.append(pack('B',csmaDetecteds[i]))
i=i+1
def createCsmaDetecteds(self, myCsmaDetecteds=None):
self.i=0
while self.i<self.numGlid:
if myCsmaDetecteds!=None:
self.csmaDetecteds[self.i]=myCsmaDetecteds
- self.csmaDetectedsField[self.i] = pack('H',self.csmaDetecteds[self.i])[0]
+ self.csmaDetectedsField[self.i] = pack('B',self.csmaDetecteds[self.i])
+ print "csmaDetecteds["+str(self.i)+"] = "+hex(self.csmaDetecteds[self.i])
self.i=self.i+1
i=0
while i<numGlid:
hp1Detecteds.append(0) #Not detected by default
- hp1DetectedsField.append(pack('H',hp1Detecteds[i])[0])
+ hp1DetectedsField.append(pack('B',hp1Detecteds[i]))
i=i+1
def createHp1Detecteds(self, myHp1Detecteds=None):
self.i=0
while self.i<self.numGlid:
if myHp1Detecteds!=None:
self.hp1Detecteds[self.i]=myHp1Detecteds
- self.hp1DetectedsField[self.i] = pack('H',self.hp1Detecteds[self.i])[0]
+ self.hp1DetectedsField[self.i] = pack('B',self.hp1Detecteds[self.i])
+ print "hp1Detecteds["+str(self.i)+"] = "+hex(self.hp1Detecteds[self.i])
self.i=self.i+1
i=0
while i<numGlid:
othersDetecteds.append(0) #Not detected by default
- othersDetectedsField.append(pack('H',othersDetecteds[i])[0])
+ othersDetectedsField.append(pack('B',othersDetecteds[i]))
i=i+1
def createOthersDetecteds(self, myOthersDetecteds=None):
self.i=0
while self.i<self.numGlid:
if myOthersDetecteds!=None:
self.othersDetecteds[self.i]=myOthersDetecteds
- self.othersDetectedsField[self.i] = pack('H',self.othersDetecteds[self.i])[0]
+ self.othersDetectedsField[self.i] = pack('B',self.othersDetecteds[self.i])
+ print "othersDetecteds["+str(self.i)+"] = "+hex(self.othersDetecteds[self.i])
self.i=self.i+1
i=0
while i<numGlid:
signalLevels.append(0) #Not detected by default
- signalLevelsField.append(pack('H',signalLevels[i])[0])
+ signalLevelsField.append(pack('B',signalLevels[i]))
i=i+1
def createSignalLevels(self, mySignalLevels=None):
self.i=0
while self.i<self.numGlid:
if mySignalLevels!=None:
self.signalLevels[self.i]=mySignalLevels
- self.signalLevelsField[self.i] = pack('H',self.signalLevels[self.i])[0]
+ self.signalLevelsField[self.i] = pack('B',self.signalLevels[self.i])
+ print "signalLevels["+str(self.i)+"] = "+hex(self.signalLevels[self.i])
self.i=self.i+1
averageBle = Ble()
averageBle.createBle(numGlid)
def createAverageBles(self, myNum=numGlid, myEndTime=None, myIntBle=None):
+ print "averageBle :"
self.averageBle.createBle(myNum, myEndTime, myIntBle)
i=0
while i<numGlid:
@@ -614,7 +630,7 @@ class GlidsInfo():
self.createHp1Detecteds(myHp1Detecteds)
self.createOthersDetecteds(myOthersDetecteds)
self.createSignalLevels(mySignalLevels)
- self.createAverageBles(myNumGlid, myEndTime, myIntBle)
+ self.createAverageBles(self.numGlid, myEndTime, myIntBle)
self.i=0
while self.i<self.numGlid:
self.glidsInfo[self.i] = self.glids.glidsField[self.i] + self.cfDetectedsField[self.i] + self.csmaDetectedsField[self.i] + self.hp1DetectedsField[self.i] + self.othersDetectedsField[self.i] + self.signalLevelsField[self.i] + self.averageBle.intervalField[self.i]
@@ -629,11 +645,12 @@ class MmentryFields():
#Request Type
reqType = 0 #0 is the default processed value
- reqTypeField = pack('H',reqType)[0]
+ reqTypeField = pack('B',reqType)
def createReqType(self, myReqType=None):
if myReqType!=None:
self.reqType=myReqType
- self.reqTypeField = pack('H',self.reqType)[0]
+ self.reqTypeField = pack('B',self.reqType)
+ print "reqType = "+hex(self.reqType)
#MAC Address of the STA
macAddress = 0
@@ -642,30 +659,34 @@ class MmentryFields():
if myMacAddress!=None:
self.macAddress=myMacAddress
self.macAddressField = pack('Q',self.macAddress)[0:6]
+ print "macAddress = "+hex(self.macAddress)
#Results Codes
result = 0
- resultField = pack('H',result)[0]
+ resultField = pack('B',result)
def createResult(self, myResult=None):
if myResult!=None:
self.result=myResult
- self.resultField = pack('H',self.result)[0]
+ self.resultField = pack('B',self.result)
+ print "result = "+hex(self.result)
#Become Backup CCo or Release Duty
appointRelease = 0
- appointReleaseField = pack('H',appointRelease)[0]
+ appointReleaseField = pack('B',appointRelease)
def createAppointRelease(self, myAppointRelease=None):
if myAppointRelease!=None:
self.appointRelease=myAppointRelease
- self.appointReleaseField = pack('H',self.appointRelease)[0]
+ self.appointReleaseField = pack('B',self.appointRelease)
+ print "appointRelease = "+hex(self.appointRelease)
#Number
- num = 256
- numField = pack('H',num)[0]
+ num = 255
+ numField = pack('B',num)
def createNum(self, myNum=None):
if myNum!=None:
self.num=myNum
- self.numField = pack('H',self.num)[0]
+ self.numField = pack('B',self.num)
+ print "num = "+hex(self.num)
#Link Information of the Global Links
globalLinks = []
@@ -682,35 +703,39 @@ class MmentryFields():
#Soft/Hard
softHard = 0 #Soft Handover by default
- softHardField = pack('H',softHard)[0]
+ softHardField = pack('B',softHard)
def createSoftHard(self, mySoftHard=None):
if mySoftHard!=None:
self.softHard=mySoftHard
- self.softHardField = pack('H',self.softHard)[0]
+ self.softHardField = pack('B',self.softHard)
+ print "softHard = "+hex(self.softHard)
#Reason
reason = 0 #User-appointed by default
- reasonField = pack('H',reason)[0]
+ reasonField = pack('B',reason)
def createReason(self, myReason=None):
if myReason!=None:
self.reason=myReason
- self.reasonField = pack('H',self.reason)[0]
+ self.reasonField = pack('B',self.reason)
+ print "reason = "+hex(self.reason)
#Reason Code indicating the reason for sending CC_HANDOVER_INFO.IND
rsc = 0 #Handover in progress by default
- rscField = pack('H',rsc)[0]
+ rscField = pack('B',rsc)
def createRsc(self, myRsc=None):
if myRsc!=None:
self.rsc=myRsc
- self.rscField = pack('H',self.rsc)[0]
+ self.rscField = pack('B',self.rsc)
+ print "rsc = "+hex(self.rsc)
#TEI of the Backup CCo
backupCco = 0 #no backupCco by default
- backupCcoField = pack('H',backupCco)[0]
+ backupCcoField = pack('B',backupCco)
def createBackupCco(self, myBackupCco=None):
if myBackupCco!=None:
self.backupCco=myBackupCco
- self.backupCcoField = pack('H',self.backupCco)[0]
+ self.backupCcoField = pack('B',self.backupCco)
+ print "backupCco = "+hex(self.backupCco)
#Information of the Stations
stasInfo = []
@@ -726,20 +751,22 @@ class MmentryFields():
self.i = self.i + 1
#Number of STA
- numSta = 256
- numStaField = pack('H',numSta)[0]
+ numSta = 255
+ numStaField = pack('B',numSta)
def createNumSta(self, myNumSta=None):
if myNumSta!=None:
self.numSta=myNumSta
- self.numStaField = pack('H',self.numSta)[0]
+ self.numStaField = pack('B',self.numSta)
+ print "numSta = "+hex(self.numSta)
#Number of Network
- numNet = 256
- numNetField = pack('H',numNet)[0]
+ numNet = 255
+ numNetField = pack('B',numNet)
def createNumNet(self, myNumNet=None):
if myNumNet!=None:
self.numNet=myNumNet
- self.numNetField = pack('H',self.numNet)[0]
+ self.numNetField = pack('B',self.numNet)
+ print "numNet = "+hex(self.numNet)
#STAs Info
stationsInfo = []
@@ -764,6 +791,7 @@ class MmentryFields():
self.createNumNet(myNumNet)
self.i = 0
while self.i < self.numNet:
+ print "networksInfo["+str(self.i)+"] :"
self.networksInfo[self.i].createNetworkInfo(mySecurityLevel, myNidOffset, myNid, mySnid, myAccess, mySnidAccess, myHm, myNumSlot, myCoordonatingStatus, myOffset)
self.i = self.i + 1
@@ -774,6 +802,7 @@ class MmentryFields():
if myInitMacAddress!=None:
self.initMacAddress=myInitMacAddress
self.initMacAddressField = pack('Q',self.initMacAddress)[0:6]
+ print "initMacAddress = "+hex(self.initMacAddress)
#Term MAC Address of the STA
termMacAddress = 0
@@ -782,6 +811,7 @@ class MmentryFields():
if myTermMacAddress!=None:
self.termMacAddress=myTermMacAddress
self.termMacAddressField = pack('Q',self.termMacAddress)[0:6]
+ print "termMacAddress = "+hex(self.termMacAddress)
#Connection Identifier
cid = Cid()
@@ -815,19 +845,21 @@ class MmentryFields():
#Forward Link GLID
glidF = 0xFF #Local CSMA allocation by default
- glidFField = pack('H',glidF)[0]
+ glidFField = pack('B',glidF)
def createGlidF(self, myGlidF=None):
if myGlidF!=None:
self.glidF=myGlidF
- self.glidFField = pack('H',self.glidF)[0]
+ self.glidFField = pack('B',self.glidF)
+ print "glidF = "+hex(self.glidF)
#Reverse Link GLID
glidR = 0xFF #Local CSMA allocation by default
- glidRField = pack('H',glidR)[0]
+ glidRField = pack('B',glidR)
def createGlidR(self, myGlidR=None):
if myGlidR!=None:
self.glidR=myGlidR
- self.glidRField = pack('H',self.glidR)[0]
+ self.glidRField = pack('B',self.glidR)
+ print "glidR = "+hex(self.glidR)
#Proposed CSPEC
proposedCspec = Cspec()
@@ -845,11 +877,12 @@ class MmentryFields():
#Terminal Equipment identifier
tei = 0
- teiField = pack('H',tei)[0]
+ teiField = pack('B',tei)
def createTei(self, myTei=None):
if myTei!=None:
self.tei=myTei
- self.teiField = pack('H',self.tei)[0]
+ self.teiField = pack('B',self.tei)
+ print "tei = "+hex(self.tei)
#Violated CSPEC
violatedCspec = Cspec()
@@ -865,45 +898,50 @@ class MmentryFields():
if myReleasingStationMacAddress!=None:
self.releasingStationMacAddress=myReleasingStationMacAddress
self.releasingStationMacAddressField = pack('Q',self.releasingStationMacAddress)[0:6]
+ print "releasingStationMacAddress = "+hex(self.releasingStationMacAddress)
#Duration
duration = 0 #0 beacon period by default
- durationField = pack('H',duration)[0]
+ durationField = pack('B',duration)
def createDuration(self, myDuration=None):
if myDuration!=None:
self.duration=myDuration
- self.durationField = pack('H',self.duration)[0]
+ self.durationField = pack('B',self.duration)
+ print "duration = "+hex(self.duration)
#Number of GLID
- numGlid = 256
- numGlidField = pack('H',numGlid)[0]
+ numGlid = 255
+ numGlidField = pack('B',numGlid)
def createNumGlid(self, myNumGlid=None):
if myNumGlid!=None:
self.numGlid=myNumGlid
- self.numGlidField = pack('H',self.numGlid)[0]
+ self.numGlidField = pack('B',self.numGlid)
+ print "numGlid = "+hex(self.numGlid)
#GLIDs
glids = Glids()
glids.numGlid = numGlid
glids.createGlids()
def createGlids(self, myNumGlid=None, myGlids=None):
+ print "glids :"
self.createNumGlid(myNumGlid)
- self.glids.createGlids(myNumGlid, myGlids)
+ self.glids.createGlids(self.numGlid, myGlids)
#GLIDs Info
glidsInfo = GlidsInfo()
glidsInfo.numGlid = numGlid
glidsInfo.createGlidsInfo()
def createGlidsInfo(self, myNumGlid=None, myCfDetecteds=None, myCsmaDetecteds=None, myHp1Detecteds=None, myOthersDetecteds=None, mySignalLevels=None, myEndTime=None, myIntBle=None):
+ print "glidsInfo :"
self.createNumGlid(myNumGlid)
self.glidsInfo.numGlid = self.numGlid
- self.glidsInfo.createGlidsInfo(myCfDetecteds, myCsmaDetecteds, myHp1Detecteds, myOthersDetecteds, mySignalLevels, myNumGlid, myEndTime, myIntBle)
+ self.glidsInfo.createGlidsInfo(self.numGlid, myCfDetecteds, myCsmaDetecteds, myHp1Detecteds, myOthersDetecteds, mySignalLevels, myEndTime, myIntBle)
#Network Identifier
reserved = 0
securityLevel = 0 #Simple connect by default
nidOffset = 0x0f0e0d0c
- nid = nidOffset + securityLevel*pow(2,52) + reserved*pow(2,54)
+ nid = int(nidOffset + securityLevel*pow(2,52) + reserved*pow(2,54))
nidField = pack('Q',nid)[0:7]
def createNid(self, mySecurityLevel=None, myNidOffset=None, myNid=None):
if mySecurityLevel!=None:
@@ -913,8 +951,9 @@ class MmentryFields():
if myNid!=None:
self.nid=myNid
else:
- self.nid = self.nidOffset + self.securityLevel*pow(2,52) + self.reserved*pow(2,54)
+ self.nid = int(self.nidOffset + self.securityLevel*pow(2,52) + self.reserved*pow(2,54))
self.nidField = pack('Q',self.nid)[0:7]
+ print "nid = "+hex(self.nid)
#CCo's MAC Address
cmac = 0x43414D6F4343 #="CCoMAC"
@@ -923,41 +962,45 @@ class MmentryFields():
if myCmac!=None:
self.cmac=myCmac
self.cmacField = pack('Q',self.cmac)[0:6]
+ print "cmac = "+hex(self.cmac)
#Human Friendly Identifier
# Maximus simulator HFID by default :
hfid = "SPiDCOM MAXIMUS SIMULATOR HUMAN FRIENDLY IDENTIFIER : " + pack('Q',maxAddress)[0:6]
hfidField = hfid
while len(hfidField)<64:
- hfidField = hfidField + pack('H',0)[0]
+ hfidField = hfidField + pack('B',0)
def createHfid(self, myHfid=None):
if myHfid!=None:
self.hfid=myHfid
self.hfidField = self.hfid
while len(self.hfidField)<64:
- self.hfidField = self.hfidField + pack('H',0)[0]
+ self.hfidField = self.hfidField + pack('B',0)
+ print "hfid = "+self.hfid
#CCo Capability
ccoCapability = 0 #level 0 by default
- ccoCapabilityField = pack('H',ccoCapability)[0]
+ ccoCapabilityField = pack('B',ccoCapability)
def createCcoCapability(self, myCcoCapability=None):
if myCcoCapability!=None:
self.ccoCapability=myCcoCapability
- self.ccoCapabilityField = pack('H',self.ccoCapability)[0]
+ self.ccoCapabilityField = pack('B',self.ccoCapability)
+ print "ccoCapability = "+hex(self.ccoCapability)
#Proxy Networking Capability
proxyNetworkingCapability = 0 #not supported by default
- proxyNetworkingCapabilityField = pack('H',proxyNetworkingCapability)[0]
+ proxyNetworkingCapabilityField = pack('B',proxyNetworkingCapability)
def createProxyNetworkingCapability(self, myProxyNetworkingCapability=None):
if myProxyNetworkingCapability!=None:
self.proxyNetworkingCapability=myProxyNetworkingCapability
- self.proxyNetworkingCapabilityField = pack('H',self.proxyNetworkingCapability)[0]
+ self.proxyNetworkingCapabilityField = pack('B',self.proxyNetworkingCapability)
+ print "proxyNetworkingCapability = "+hex(self.proxyNetworkingCapability)
#SNID
snid = 0xA
access = 0 #in home by default
- snidAccess = snid + access*pow(2,4)
- snidAccessField = pack('H',snidAccess)[0]
+ snidAccess = int(snid + access*pow(2,4))
+ snidAccessField = pack('B',snidAccess)
def createSnidAccess(self, mySnid=None, myAccess=None, mySnidAccess=None):
if mySnid!=None:
self.snid=mySnid
@@ -966,16 +1009,18 @@ class MmentryFields():
if mySnidAccess!=None:
self.snidAccess=mySnidAccess
else:
- self.snidAccess = self.snid + self.access*pow(2,4)
- self.snidAccessField = pack('H',self.snidAccess)[0]
+ self.snidAccess = int(self.snid + self.access*pow(2,4))
+ self.snidAccessField = pack('B',self.snidAccess)
+ print "snidAccess = "+hex(self.snidAccess)
#TEI assigned to the station
staTei = 0 #no backupCco by default
- staTeiField = pack('H',staTei)[0]
+ staTeiField = pack('B',staTei)
def createStaTei(self, myStaTei=None):
if myStaTei!=None:
self.staTei=myStaTei
- self.staTeiField = pack('H',self.staTei)[0]
+ self.staTeiField = pack('B',self.staTei)
+ print "staTei = "+hex(self.staTei)
#Lease Time
leaseTime = 0x000F #15min by default
@@ -984,14 +1029,16 @@ class MmentryFields():
if myLeaseTime!=None:
self.leaseTime=myLeaseTime
self.leaseTimeField = pack('H',self.leaseTime)
+ print "leaseTime = "+hex(self.leaseTime)
#Mode
mode = 0 #Update by default
- modeField = pack('H',mode)[0]
+ modeField = pack('B',mode)
def createMode(self, myMode=None):
if myMode!=None:
self.mode=myMode
- self.modeField = pack('H',self.mode)[0]
+ self.modeField = pack('B',self.mode)
+ print "mode = "+hex(self.mode)
#TEIs
teis = []
@@ -999,13 +1046,15 @@ class MmentryFields():
i = 0
while i < num:
teis.append(i)
- teisField.append(pack('H',teis[i])[0])
+ teisField.append(pack('B',teis[i]))
i=i+1
def createTeis(self, myNum=None):
+ print "teis :"
self.createNum(myNum)
self.i = 0
while self.i < self.num:
- self.teisField.append(pack('H',self.teis[self.i])[0])
+ self.teisField.append(pack('B',self.teis[self.i]))
+ print "teis["+str(self.i)+"] = "+hex(self.teis[self.i])
self.i = self.i + 1
#MAC Addresses
@@ -1017,10 +1066,12 @@ class MmentryFields():
addrsField.append(pack('Q',addrs[i])[0:6])
i=i+1
def createAddrs(self, myNum=None):
+ print "addrs : "
self.createNum(myNum)
self.i = 0
while self.i < self.num:
self.addrsField.append(pack('Q',self.addrs[self.i])[0:6])
+ print "addrs["+str(self.i)+"] = "+hex(self.addrs[self.i])
self.i = self.i + 1
#Statuses
@@ -1029,13 +1080,15 @@ class MmentryFields():
i = 0
while i < num:
statuses.append(0) #associated by default
- statusesField.append(pack('H',statuses[i])[0])
+ statusesField.append(pack('B',statuses[i]))
i=i+1
def createStatuses(self, myNum=None):
+ print "statuses :"
self.createNum(myNum)
self.i = 0
while self.i < self.num:
- self.statusesField.append(pack('H',self.statuses[self.i])[0])
+ self.statusesField.append(pack('B',self.statuses[self.i]))
+ print "statuses["+str(self.i)+"] = "+hex(self.statuses[self.i])
self.i = self.i + 1
#TEIs + MAC Addresses + Statuses
@@ -1045,10 +1098,11 @@ class MmentryFields():
teisAddrsStatuses.append(teisField[i]+addrsField[i]+statusesField[i])
i=i+1
def createTeisAddrsStatuses(self, myNum=None):
+ print "teisAddrsStatuses :"
self.createNum(myNum)
- self.createTeis(myNum)
- self.createAddrs(myNum)
- self.createStatuses(myNum)
+ self.createTeis(self.num)
+ self.createAddrs(self.num)
+ self.createStatuses(self.num)
self.i = 0
while self.i < self.num:
self.teisAddrsStatuses[self.i]=self.teisField[self.i]+self.addrsField[self.i]+self.statusesField[self.i]
@@ -1061,17 +1115,23 @@ class MmentryFields():
if myFda!=None:
self.fda=myFda
self.fdaField = pack('Q',self.fda)[0:6]
+ print "fda = "+hex(self.fda)
#Final STA TEI
fTei = 0 #no backupCco by default
- fTeiField = pack('H',fTei)[0]
+ fTeiField = pack('B',fTei)
def createFTei(self, myFTei=None):
if myFTei!=None:
self.fTei=myFTei
- self.fTeiField = pack('H',self.fTei)[0]
+ self.fTeiField = pack('B',self.fTei)
+ print "fTei = "+hex(self.fTei)
#Payload
payload = "MME"
+ def createPayload(self, myPayload=None):
+ if myPayload!=None:
+ self.payload = myPayload
+ print "payload = "+payload
#Length of payload
length = len(payload)
@@ -1079,6 +1139,7 @@ class MmentryFields():
def createLength(self):
self.length = len(self.payload)
self.lengthField = pack('H',self.length)
+ print "length = "+hex(self.length)
#Original STA MAC Address
oda = 0x43414D41444F #="ODAMAC"
@@ -1087,14 +1148,16 @@ class MmentryFields():
if myOda!=None:
self.oda=myOda
self.odaField = pack('Q',self.oda)[0:6]
+ print "oda = "+hex(self.oda)
#Original STA TEI
oTei = 0 #no backupCco by default
- oTeiField = pack('H',oTei)[0]
+ oTeiField = pack('B',oTei)
def createOTei(self, myOTei=None):
if myOTei!=None:
self.oTei=myOTei
- self.oTeiField = pack('H',self.oTei)[0]
+ self.oTeiField = pack('B',self.oTei)
+ print "oTei = "+hex(self.oTei)
#Number of Beacon Periods
nbp = 0
@@ -1103,6 +1166,7 @@ class MmentryFields():
if myNbp!=None:
self.nbp=myNbp
self.nbpField = pack('H',self.nbp)
+ print "nbp = "+hex(self.nbp)
#Number of Missed Beacons
nmb = 0
@@ -1111,22 +1175,25 @@ class MmentryFields():
if myNmb!=None:
self.nmb=myNmb
self.nmbField = pack('H',self.nmb)
+ print "nmb = "+hex(self.nmb)
#STEI
stei = 0
- steiField = pack('H',stei)[0]
+ steiField = pack('B',stei)
def createStei(self, myStei=None):
if myStei!=None:
self.stei=myStei
- self.steiField = pack('H',self.stei)[0]
+ self.steiField = pack('B',self.stei)
+ print "stei = "+hex(self.stei)
#DTEI
dtei = 0
- dteiField = pack('H',dtei)[0]
+ dteiField = pack('B',dtei)
def createDtei(self, myDtei=None):
if myDtei!=None:
self.dtei=myDtei
- self.dteiField = pack('H',self.dtei)[0]
+ self.dteiField = pack('B',self.dtei)
+ print "dtei = "+hex(self.dtei)
#DAddr
dAddr = 0x644143414D44 #="DMACAd"
@@ -1135,84 +1202,95 @@ class MmentryFields():
if myDAddr!=None:
self.dAddr=myDAddr
self.dAddrField = pack('Q',self.dAddr)[0:6]
+ print "dAddr = "+hex(self.dAddr)
#LLID
llid = 0
- llidField = pack('H',llid)[0]
+ llidField = pack('B',llid)
def createLlid(self, myLlid=None):
if myLlid!=None:
self.llid=myLlid
- self.llidField = pack('H',self.llid)[0]
+ self.llidField = pack('B',self.llid)
+ print "llid = "+hex(self.llid)
#Bit Loading Estimates
ble = Ble()
bleField=ble.ble
- def createBle(self, myNum=None):
+ def createBle(self, myNum=None, myEndTime=None, myIntBle=None):
+ print "ble : "
self.createNum(myNum)
- self.ble.createBle(myNum)
+ self.ble.createBle(self.num, myEndTime, myIntBle)
self.bleField=self.ble.ble
-
+
#GCID-F
gcidF = 0xFF #Local CSMA allocation by default
- gcidFField = pack('H',gcidF)[0]
+ gcidFField = pack('B',gcidF)
def createGcidF(self, myGcidF=None):
if myGcidF!=None:
self.gcidF=myGcidF
- self.gcidFField = pack('H',self.gcidF)[0]
+ self.gcidFField = pack('B',self.gcidF)
+ print "gcidF = "+hex(self.gcidF)
#GCID-R
gcidR = 0xFF #Local CSMA allocation by default
- gcidRField = pack('H',gcidR)[0]
+ gcidRField = pack('B',gcidR)
def createGcidR(self, myGcidR=None):
if myGcidR!=None:
self.gcidR=myGcidR
- self.gcidRField = pack('H',self.gcidR)[0]
+ self.gcidRField = pack('B',self.gcidR)
+ print "gcidR = "+hex(self.gcidR)
#ChanEstF
chanEstF = 0
- chanEstFField = pack('H',chanEstF)[0]
+ chanEstFField = pack('B',chanEstF)
def createChanEstF(self, myChanEstF=None):
if myChanEstF!=None:
self.chanEstF=myChanEstF
- self.chanEstFField = pack('H',self.chanEstF)[0]
+ self.chanEstFField = pack('B',self.chanEstF)
+ print "chanEstF = "+hex(self.chanEstF)
#ChanEstR
chanEstR = 0
- chanEstRField = pack('H',chanEstR)[0]
+ chanEstRField = pack('B',chanEstR)
def createChanEstR(self, myChanEstR=None):
if myChanEstR!=None:
self.chanEstR=myChanEstR
- self.chanEstRField = pack('H',self.chanEstR)[0]
+ self.chanEstRField = pack('B',self.chanEstR)
+ print "chanEstR = "+hex(self.chanEstR)
#Bit Loading Estimates Forward
bleF = Ble()
bleFField=bleF.ble
- def createBleF(self, myNum=None):
+ def createBleF(self, myNum=None, myEndTime=None, myIntBle=None):
+ print "bleF : "
self.createNum(myNum)
- self.bleF.createBle(myNum)
+ self.bleF.createBle(self.num, myEndTime, myIntBle)
self.bleFField=self.bleF.ble
#Bit Loading Estimates Reverse
bleR = Ble()
bleRField=bleR.ble
- def createBleR(self, myNum=None):
+ def createBleR(self, myNum=None, myEndTime=None, myIntBle=None):
+ print "bleR : "
self.createNum(myNum)
- self.bleR.createBle(myNum)
+ self.bleR.createBle(self.num, myEndTime, myIntBle)
self.bleRField=self.bleR.ble
#Cause
cause = 0
- causeField = pack('H',cause)[0]
+ causeField = pack('B',cause)
def createCause(self):
- self.causeField = pack('H',self.cause)[0]
+ self.causeField = pack('B',self.cause)
+ print "cause = "+hex(self.cause)
#DCPPC
dcppc = 0
- dcppcField = pack('H',dcppc)[0]
+ dcppcField = pack('B',dcppc)
def createDcppc(self, myDcppc=None):
if myDcppc!=None:
self.dcppc=myDcppc
- self.dcppcField = pack('H',self.dcppc)[0]
+ self.dcppcField = pack('B',self.dcppc)
+ print "dcppc = "+hex(self.dcppc)
#Number of HomePlug 1.0.1 transmission detected
nhp10 = 0
@@ -1221,6 +1299,7 @@ class MmentryFields():
if myNhp10!=None:
self.nhp10=myNhp10
self.nhp10Field = pack('H',self.nhp10)
+ print "nhp10 = "+hex(self.nhp10)
#Number of HomePlug 1.1 transmission detected
nhp11 = 0
@@ -1229,3 +1308,202 @@ class MmentryFields():
if myNhp11!=None:
self.nhp11=myNhp11
self.nhp11Field = pack('H',self.nhp11)
+ print "nhp11 = "+hex(self.nhp11)
+
+ #Payload Encryption Key Select
+ peks = 0x0F #Not encripted by default
+ peksField = pack('B',peks)
+ def createPeks(self, myPeks=None):
+ if myPeks!=None:
+ self.peks=myPeks
+ self.peksField = pack('B',self.peks)
+ print "peks = "+hex(self.peks)
+
+ #AVLN Status
+ avlnStatus = 0
+ avlnStatusField = pack('B',avlnStatus)
+ def createAvlnStatus(self, myAvlnStatus=None):
+ if myAvlnStatus!=None:
+ self.avlnStatus=myAvlnStatus
+ self.avlnStatusField = pack('B',self.avlnStatus)
+ print "avlnStatus = "+hex(self.avlnStatus)
+
+ #Protocol ID
+ pid = 0
+ pidField = pack('B',pid)
+ def createPid(self, myPid=None):
+ if myPid!=None:
+ self.pid=myPid
+ self.pidField = pack('B',self.pid)
+ print "pid = "+hex(self.pid)
+
+ #Protocol Run Number
+ prn = randrange(0,pow(2,16)-1,1)
+ prnField = pack('H',prn)
+ def createPrn(self, myPrn=None):
+ if myPrn!=None:
+ self.prn=myPrn
+ else:
+ self.prn=randrange(0,pow(2,16)-1,1)
+ self.prnField = pack('H',self.prn)
+ print "prn = "+hex(self.prn)
+
+ #Protocol Message Number
+ pmn = 0
+ pmnField = pack('B',pmn)
+ def createPmn(self, myPmn=None, reset=False):
+ if myPmn!=None:
+ self.pmn=myPmn
+ elif reset==True:
+ self.pmn=0
+ else:
+ self.pmn=self.pmn + 1
+ self.pmnField = pack('B',self.pmn)
+ print "pmn = "+hex(self.pmn)
+
+ #Key Type
+ keyType = 5 #No key by default
+ keyTypeField = pack('B',keyType)
+ def createKeyType(self, myKeyType=None):
+ if myKeyType!=None:
+ self.keyType=myKeyType
+ self.keyTypeField = pack('B',self.keyType)
+ print "keyType = "+hex(self.keyType)
+
+ #My Nonce
+ myNonce = randrange(0,pow(2,32)-1,1)
+ myNonceField = pack('I',myNonce)
+ def createMyNonce(self, myMyNonce=None):
+ if myMyNonce!=None:
+ self.myNonce=myMyNonce
+ else:
+ self.myNonce=randrange(0,pow(2,32)-1,1)
+ self.myNonceField = pack('I',self.myNonce)
+ print "myNonce = "+hex(self.myNonce)
+
+ #Your Nonce
+ yourNonce = 0
+ yourNonceField = pack('I',yourNonce)
+ def createYourNonce(self, yourYourNonce=None):
+ if yourYourNonce!=None:
+ self.yourNonce=yourYourNonce
+ self.yourNonceField = pack('I',self.yourNonce)
+ print "yourNonce = "+hex(self.yourNonce)
+
+ #New Encryption Key Select or Payload Encryption Key Select
+ newEks = 0x0F #Not encripted by default
+ newEksField = pack('B',newEks)
+ def createNewEks(self, myNewEks=None):
+ if myNewEks!=None:
+ self.newEks=myNewEks
+ self.newEksField = pack('B',self.newEks)
+ print "newEks = "+hex(self.newEks)
+
+ #New Key
+ newKey = 0x4142434445464748494A4B4C4D4E4F50
+ newKeyField = pack('Q',newKey%18446744073709551616)+pack('Q',newKey/18446744073709551616)
+ def createNewKey(self, myNewKey=None):
+ if myNewKey!=None:
+ self.newKey=myNewKey
+ self.newKeyField = pack('Q',self.newKey%18446744073709551616)+pack('Q',self.newKey/18446744073709551616)
+ print "newKey = "+hex(self.newKey)
+
+ #Request Type
+ requestType = 0 #Direct by default
+ requestTypeField = pack('B',requestType)
+ def createRequestType(self, myRequestType=None):
+ if myRequestType!=None:
+ self.requestType=myRequestType
+ self.requestTypeField = pack('B',self.requestType)
+ print "requestType = "+hex(self.requestType)
+
+ #Requested Key Type
+ requestedKeyType = 5 #No key by default
+ requestedKeyTypeField = pack('B',requestedKeyType)
+ def createRequestedKeyType(self, myRequestedKeyType=None):
+ if myRequestedKeyType!=None:
+ self.requestedKeyType=myRequestedKeyType
+ self.requestedKeyTypeField = pack('B',self.requestedKeyType)
+ print "requestedKeyType = "+hex(self.requestedKeyType)
+
+ #HASH KEY
+ hashKey = []
+ i=0
+ hashKeyField = ""
+ while i<48:
+ hashKey.append(randrange(0,18446744073709551615,1))
+ hashKeyField = hashKeyField + pack('Q',hashKey[i])
+ i=i+1
+ def createHashKey(self, myHashKey=None):
+ print "hashKeyField = "
+ if myHashKey!=None:
+ self.hashKey=myHashKey
+ self.hashKeyField = ""
+ self.i=0
+ while self.i<48:
+ self.hashKeyField = self.hashKeyField + pack('Q',self.hashKey[self.i])
+ print str(self.hashKey[self.i])
+ self.i=self.i+1
+ else:
+ self.hashKeyField = ""
+ self.i=0
+ while self.i<48:
+ self.hashKey[self.i]=randrange(0,18446744073709551615,1)
+ self.hashKeyField = self.hashKeyField + pack('Q',self.hashKey[self.i])
+ print hex(self.hashKey[self.i])
+ self.i=self.i+1
+
+ #Key
+ key = 0x4142434445464748494A4B4C4D4E4F50
+ keyField = pack('Q',newKey%18446744073709551616)+pack('Q',newKey/18446744073709551616)
+ def createKey(self, myKey=None):
+ if myKey!=None:
+ self.key=myKey
+ self.keyField = pack('Q',self.key%18446744073709551616)+pack('Q',self.key/18446744073709551616)
+ print "key = "+hex(self.key)
+
+ #Statuses and Capabilities : AVLN Status - CCo Capability - Proxy Network Capability - Backup CCo Capability - CCo Status - PCo Status - Backup CCo Status
+ avlnStatus = 0 #Not authenticated with an AVLN by default
+ ccoCapability = 0 #does not support QoS and TDMA by default
+ proxyNetworkCapability = 0 #STA does not support Proxy Networking by default
+ backupCcoCapability = 0 #STA does not support the Backup CCo function by default
+ ccoStatus = 0 #STA is not the CCo by default
+ pcoStatus = 0 #STA is not a PCo by default
+ backupCcoStatus = 0 #STA is not a Backup CCo by default
+ statusesNCapabilities = int(avlnStatus + ccoCapability*pow(2,1) + proxyNetworkCapability*pow(2,3) + backupCcoCapability*pow(2,4) + ccoStatus*pow(2,5) + pcoStatus*pow(2,6) + backupCcoStatus*pow(2,7))
+ statusesNCapabilitiesField = pack('B',statusesNCapabilities)
+ def createStatusesNCapabilities(self, myAvlnStatus=None, myCcoCapability=None, myProxyNetworkCapability=None, myBackupCcoCapability=None, myCcoStatus=None, myPcoStatus=None, myBackupCcoStatus=None, myStatusesNCapabilities=None):
+ if myAvlnStatus!=None:
+ self.avlnStatus=myAvlnStatus
+ if myCcoCapability!=None:
+ self.ccoCapability=myCcoCapability
+ if myProxyNetworkCapability!=None:
+ self.proxyNetworkCapability=myProxyNetworkCapability
+ if myBackupCcoCapability!=None:
+ self.backupCcoCapability=myBackupCcoCapability
+ if myCcoStatus!=None:
+ self.ccoStatus=myCcoStatus
+ if myPcoStatus!=None:
+ self.pcoStatus=myPcoStatus
+ if myBackupCcoStatus!=None:
+ self.backupCcoStatus=myBackupCcoStatus
+ if myStatusesNCapabilities!=None:
+ self.statusesNCapabilities=myStatusesNCapabilities
+ else:
+ self.statusesNCapabilities = int(self.avlnStatus + self.ccoCapability*pow(2,1) + self.proxyNetworkCapability*pow(2,3) + self.backupCcoCapability*pow(2,4) + self.ccoStatus*pow(2,5) + self.pcoStatus*pow(2,6) + self.backupCcoStatus*pow(2,7))
+ self.statusesNCapabilitiesField = pack('B',self.statusesNCapabilities)
+ print "statusesNCapabilitiesField = "+hex(self.statusesNCapabilitiesField)
+
+ #Encryption Key Select or Payload Encryption Key Select
+ eks = 0x0F #Not encripted by default
+ eksField = pack('B',eks)
+ def createEks(self, myEks=None):
+ if myEks!=None:
+ self.eks=myEks
+ self.eksField = pack('B',self.eks)
+ print "eks = "+hex(self.eks)
+
+
+
+
+
diff --git a/maximus/python/lib/mmentryMethod.py b/maximus/python/lib/mmentryMethod.py
index dbd40b5f32..a6b5fe18c7 100644
--- a/maximus/python/lib/mmentryMethod.py
+++ b/maximus/python/lib/mmentryMethod.py
@@ -12,6 +12,11 @@ class MmentryMethod():
mmentryFields = MmentryFields() #Creates MMENTRY fields
+
+ #----- Station - Central Coordination -----
+
+
+
#createCC_CCO_APPOINT_REQ_MMENTRY creates
# the MMENTRY Field of the CC_CCO_APPOINT.REQ MME
def createCC_CCO_APPOINT_REQ_MMENTRY(self, myReqType=None, myMacAddress=None):
@@ -157,7 +162,7 @@ class MmentryMethod():
#createCC_DISCOVER_LIST_IND_MMENTRY creates
# the MMENTRY Field of the CC_DISCOVER_LIST.IND MME
- def createCC_DISCOVER_LIST_IND_MMENTRY(self, myNumSta=0,myNumNet=0):
+ def createCC_DISCOVER_LIST_IND_MMENTRY(self, myNumSta=0, myMacAddress=None, myTei=None, mySameNetwork=None, mySnidStation=None, myAccessStation=None, mySnidAccessStation=None, myCcoCapability=None, myProxyNetworkCapability=None, myBackupCcoCapability=None, myCcoStatus=None, myPcoStatus=None, myBackupCcoStatus=None, myNinthOctet=None, mySignalLevel=None, myEndTime=None, myIntBle=None, myNumNet=0, mySecurityLevel=None, myNidOffset=None, myNid=None, mySnidNetwork=None, myAccessNetwork=None, mySnidAccessNetwork=None, myHm=None, myNumSlot=None, myCoordonatingStatus=None, myOffset=None):
#CC_DISCOVER_LIST_IND_MMENTRY is composed by 4 field :
# - NumStation
# - StationInfo -*NumStation-
@@ -169,9 +174,7 @@ class MmentryMethod():
while i<self.mmentryFields.numSta:
self.mmentry.CC_DISCOVER_LIST_IND = self.mmentry.CC_DISCOVER_LIST_IND + self.mmentryFields.stationsInfo[i].stationInfo
i=i+1
- self.mmentryFields.numNet = myNumNet
- self.mmentryFields.createNumNet()
- self.mmentryFields.createNetworksInfo()
+ self.mmentryFields.createNetworksInfo(myNumNet, mySecurityLevel, myNidOffset, myNid, mySnidNetwork, myAccessNetwork, mySnidAccessNetwork, myHm, myNumSlot, myCoordonatingStatus, myOffset)
self.mmentry.CC_DISCOVER_LIST_IND = self.mmentry.CC_DISCOVER_LIST_IND + self.mmentryFields.numNetField
i=0
while i<self.mmentryFields.numNet:
@@ -181,7 +184,7 @@ class MmentryMethod():
#createCC_LINK_NEW_REQ_MMENTRY creates
# the MMENTRY Field of the CC_LINK_NEW.REQ MME
- def createCC_LINK_NEW_REQ_MMENTRY(self, myInitMacAddress=None, myTermMacAddress=None):
+ def createCC_LINK_NEW_REQ_MMENTRY(self, myInitMacAddress=None, myTermMacAddress=None, myTei=None, myLlidF=None, myCsepcLen=None, myValidF=None, myMacServiceTypeF=None, myUserPriorityF=None, myAtsF=None, mySmoothingF=None, myValidR=None, myMacServiceTypeR=None, myUserPriorityR=None, myAtsR=None, mySmoothingR=None, myFRF=None, myFidF=None, qmpParam1F=None, qmpParam2F=None, qmpParam3F=None, qmpParam4F=None, qmpParam5F=None, qmpParam6F=None, myFRR=None, myFidR=None, qmpParam1R=None, qmpParam2R=None, qmpParam3R=None, qmpParam4R=None, qmpParam5R=None, qmpParam6R=None, myNumF=None, myEndTimeF=None, myIntBleF=None, myNumR=None, myEndTimeR=None, myIntBleR=None):
#CC_LINK_NEW_REQ_MMENTRY is composed by 6 fields :
# - Init MAC Address
# - Term MAC Address
@@ -189,148 +192,130 @@ class MmentryMethod():
# - CSPEC
# - Forward Link Bit Loading Estimates
# - Reverse Link Bit Loading Estimates
- if myInitMacAddress!=None:
- self.mmentryFields.initMacAddress = myInitMacAddress
- self.mmentryFields.createInitMacAddress()
- if myTermMacAddress!=None:
- self.mmentryFields.termMacAddress = myTermMacAddress
- self.mmentryFields.createTermMacAddress()
- self.mmentryFields.cid.createCid()
- self.mmentryFields.cspec.createCspec()
- self.mmentryFields.forwardLinkBle.createBle()
- self.mmentryFields.reverseLinkBle.createBle()
- self.mmentry.CC_LINK_NEW_REQ = self.mmentryFields.initMacAddressField + self.mmentryFields.termMacAddressField + self.mmentryFields.cid.cid + self.mmentryFields.cspec.cspec + self.mmentryFields.forwardLinkBle.ble + self.mmentryFields.reverseLinkBle.ble
+ self.mmentryFields.createInitMacAddress(myInitMacAddress)
+ self.mmentryFields.createTermMacAddress(myTermMacAddress)
+ self.mmentryFields.cid.createCid(myTei, myLlidF)
+ self.mmentryFields.createCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentryFields.forwardLinkBle.createBle(myNumF, myEndTimeF, myIntBleF)
+ self.mmentryFields.reverseLinkBle.createBle(myNumR, myEndTimeR, myIntBleR)
+ self.mmentry.CC_LINK_NEW_REQ = self.mmentryFields.initMacAddressField + self.mmentryFields.termMacAddressField + self.mmentryFields.cid.cid + self.mmentryFields.cspecField + self.mmentryFields.forwardLinkBle.ble + self.mmentryFields.reverseLinkBle.ble
#createCC_LINK_NEW_CNF_MMENTRY creates
# the MMENTRY Field of the CC_LINK_NEW.CNF MME
- def createCC_LINK_NEW_CNF_MMENTRY(self, myResult=None):
+ def createCC_LINK_NEW_CNF_MMENTRY(self, myTei=None, myLlidF=None, myGlidF=None, myGlidR=None, myResult=None, myCsepcLen=None, myValidF=None, myMacServiceTypeF=None, myUserPriorityF=None, myAtsF=None, mySmoothingF=None, myValidR=None, myMacServiceTypeR=None, myUserPriorityR=None, myAtsR=None, mySmoothingR=None, myFRF=None, myFidF=None, qmpParam1F=None, qmpParam2F=None, qmpParam3F=None, qmpParam4F=None, qmpParam5F=None, qmpParam6F=None, myFRR=None, myFidR=None, qmpParam1R=None, qmpParam2R=None, qmpParam3R=None, qmpParam4R=None, qmpParam5R=None, qmpParam6R=None):
#CC_LINK_NEW_CNF_MMENTRY is composed by 5 fields :
# - CID
# - GLID-F
# - GLID-R
# - Result
# - Proposed CSPEC
- self.mmentryFields.cid.createCid()
- self.mmentryFields.glidFField
- self.mmentryFields.glidRField
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
+ self.mmentryFields.cid.createCid(myTei, myLlidF)
+ self.mmentryFields.createGlidF(myGlidF=None)
+ self.mmentryFields.createGlidR(myGlidR=None)
+ self.mmentryFields.createResult(myResult)
self.mmentry.CC_LINK_NEW_CNF = self.mmentryFields.cid.cid + self.mmentryFields.glidFField + self.mmentryFields.glidRField + self.mmentryFields.resultField
if self.mmentryFields.result == 1 :
- self.mmentryFields.proposedCspec.createCspec()
- self.mmentry.CC_LINK_NEW_CNF = self.mmentry.CC_LINK_NEW_CNF + self.mmentryFields.proposedCspec.cspec
+ self.mmentryFields.createProposedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentry.CC_LINK_NEW_CNF = self.mmentry.CC_LINK_NEW_CNF + self.mmentryFields.proposedCspecField
#createCC_LINK_MOD_REQ_MMENTRY creates
# the MMENTRY Field of the CC_LINK_MOD.REQ MME
- def createCC_LINK_MOD_REQ_MMENTRY(self):
+ def createCC_LINK_MOD_REQ_MMENTRY(self, myTei=None, myLlidF=None, myCsepcLen=None, myValidF=None, myMacServiceTypeF=None, myUserPriorityF=None, myAtsF=None, mySmoothingF=None, myValidR=None, myMacServiceTypeR=None, myUserPriorityR=None, myAtsR=None, mySmoothingR=None, myFRF=None, myFidF=None, qmpParam1F=None, qmpParam2F=None, qmpParam3F=None, qmpParam4F=None, qmpParam5F=None, qmpParam6F=None, myFRR=None, myFidR=None, qmpParam1R=None, qmpParam2R=None, qmpParam3R=None, qmpParam4R=None, qmpParam5R=None, qmpParam6R=None, myNumF=None, myEndTimeF=None, myIntBleF=None, myNumR=None, myEndTimesR=None, myIntBleR=None):
#CC_LINK_MOD_REQ_MMENTRY is composed by 4 fields :
# - CID
# - Modified CSPEC
# - Forward Link Bit Loading Estimates
# - Reverse Link Bit Loading Estimates
#CAREFUL : this MME requires the GLID-F and the GLID-R to be fulfilled
- self.mmentryFields.cid.createCid()
- self.mmentryFields.modifiedCspec.createCspec()
- self.mmentry.CC_LINK_MOD_REQ = self.mmentryFields.cid.cid + self.mmentryFields.modifiedCspec.cspec
+ self.mmentryFields.createCid(myTei, myLlidF)
+ self.mmentryFields.createModifiedCspec(self, myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentry.CC_LINK_MOD_REQ = self.mmentryFields.cidField + self.mmentryFields.modifiedCspecField
if self.mmentryFields.glidF in globalId:
- self.mmentryFields.forwardLinkBle.createBle()
- self.mmentry.CC_LINK_MOD_REQ = self.mmentry.CC_LINK_MOD_REQ + self.mmentryFields.forwardLinkBle.ble
+ self.mmentryFields.createForwardLinkBle(myNumF, myEndTimeF, myIntBleF)
+ self.mmentry.CC_LINK_MOD_REQ = self.mmentry.CC_LINK_MOD_REQ + self.mmentryFields.forwardLinkBleField
if self.mmentryFields.glidR in globalId:
- self.mmentryFields.reverseLinkBle.createBle()
- self.mmentry.CC_LINK_MOD_REQ = self.mmentry.CC_LINK_MOD_REQ + self.mmentryFields.reverseLinkBle.ble
+ self.mmentryFields.createReverseLinkBle(myNumR, myEndTimeR, myIntBleR)
+ self.mmentry.CC_LINK_MOD_REQ = self.mmentry.CC_LINK_MOD_REQ + self.mmentryFields.reverseLinkBleField
#createCC_LINK_MOD_CNF_MMENTRY creates
# the MMENTRY Field of the CC_LINK_MOD.CNF MME
- def createCC_LINK_MOD_CNF_MMENTRY(self, myResult=None):
+ def createCC_LINK_MOD_CNF_MMENTRY(self, myTei=None, myLlidF=None, myResult=None, myCsepcLen=None, myValidF=None, myMacServiceTypeF=None, myUserPriorityF=None, myAtsF=None, mySmoothingF=None, myValidR=None, myMacServiceTypeR=None, myUserPriorityR=None, myAtsR=None, mySmoothingR=None, myFRF=None, myFidF=None, qmpParam1F=None, qmpParam2F=None, qmpParam3F=None, qmpParam4F=None, qmpParam5F=None, qmpParam6F=None, myFRR=None, myFidR=None, qmpParam1R=None, qmpParam2R=None, qmpParam3R=None, qmpParam4R=None, qmpParam5R=None, qmpParam6R=None):
#CC_LINK_MOD_CNF_MMENTRY is composed by 3 fields :
# - CID
# - Result
# - Proposed CSPEC
- self.mmentryFields.cid.createCid()
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
- self.mmentry.CC_LINK_MOD_CNF = self.mmentryFields.cid.cid + self.mmentryFields.resultField
+ self.mmentryFields.createCid(myTei, myLlidF)
+ self.mmentryFields.createResult(myResult)
+ self.mmentry.CC_LINK_MOD_CNF = self.mmentryFields.cidField + self.mmentryFields.resultField
if self.mmentryFields.result == 1 :
- self.mmentryFields.proposedCspec.createCspec()
- self.mmentry.CC_LINK_MOD_CNF = self.mmentry.CC_LINK_MOD_CNF + self.mmentryFields.proposedCspec.cspec
+ self.mmentryFields.createProposedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentry.CC_LINK_MOD_CNF = self.mmentry.CC_LINK_MOD_CNF + self.mmentryFields.proposedCspecField
#createCC_LINK_SQZ_REQ_MMENTRY creates
# the MMENTRY Field of the CC_LINK_SQZ.REQ MME
- def createCC_LINK_SQZ_REQ_MMENTRY(self):
+ def createCC_LINK_SQZ_REQ_MMENTRY(self, myTei=None, myLlidF=None, myCsepcLen=None, myValidF=None, myMacServiceTypeF=None, myUserPriorityF=None, myAtsF=None, mySmoothingF=None, myValidR=None, myMacServiceTypeR=None, myUserPriorityR=None, myAtsR=None, mySmoothingR=None, myFRF=None, myFidF=None, qmpParam1F=None, qmpParam2F=None, qmpParam3F=None, qmpParam4F=None, qmpParam5F=None, qmpParam6F=None, myFRR=None, myFidR=None, qmpParam1R=None, qmpParam2R=None, qmpParam3R=None, qmpParam4R=None, qmpParam5R=None, qmpParam6R=None):
#CC_LINK_SQZ_REQ_MMENTRY is composed by 2 fields :
# - CID
# - Modified CSPEC
- self.mmentryFields.cid.createCid()
- self.mmentryFields.modifiedCspec.createCspec()
- self.mmentry.CC_LINK_SQZ_REQ = self.mmentryFields.cid.cid + self.mmentryFields.modifiedCspec.cspec
+ self.mmentryFields.createCid(myTei, myLlidF)
+ self.mmentryFields.createModifiedCspec(self, myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentry.CC_LINK_SQZ_REQ = self.mmentryFields.cidField + self.mmentryFields.modifiedCspecField
#createCC_LINK_SQZ_CNF_MMENTRY creates
# the MMENTRY Field of the CC_LINK_SQZ.CNF MME
- def createCC_LINK_SQZ_CNF_MMENTRY(self, myResult=None):
+ def createCC_LINK_SQZ_CNF_MMENTRY(self, myTei=None, myLlidF=None, myResult=None, myCsepcLen=None, myValidF=None, myMacServiceTypeF=None, myUserPriorityF=None, myAtsF=None, mySmoothingF=None, myValidR=None, myMacServiceTypeR=None, myUserPriorityR=None, myAtsR=None, mySmoothingR=None, myFRF=None, myFidF=None, qmpParam1F=None, qmpParam2F=None, qmpParam3F=None, qmpParam4F=None, qmpParam5F=None, qmpParam6F=None, myFRR=None, myFidR=None, qmpParam1R=None, qmpParam2R=None, qmpParam3R=None, qmpParam4R=None, qmpParam5R=None, qmpParam6R=None):
#CC_LINK_SQZ_CNF_MMENTRY is composed by 3 fields :
# - CID
# - Result
# - Proposed CSPEC
- self.mmentryFields.cid.createCid()
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
- self.mmentry.CC_LINK_SQZ_CNF = self.mmentryFields.cid.cid + self.mmentryFields.resultField
+ self.mmentryFields.createCid(myTei, myLlidF)
+ self.mmentryFields.createResult(myResult)
+ self.mmentry.CC_LINK_SQZ_CNF = self.mmentryFields.cidField + self.mmentryFields.resultField
if self.mmentryFields.result == 1 :
- self.mmentryFields.proposedCspec.createCspec()
- self.mmentry.CC_LINK_SQZ_CNF = self.mmentry.CC_LINK_SQZ_CNF + self.mmentryFields.proposedCspec.cspec
+ self.mmentryFields.createProposedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentry.CC_LINK_SQZ_CNF = self.mmentry.CC_LINK_SQZ_CNF + self.mmentryFields.proposedCspecField
#createCC_LINK_REL_REQ_MMENTRY creates
# the MMENTRY Field of the CC_LINK_REL.REQ MME
- def createCC_LINK_REL_REQ_MMENTRY(self, myTei=None, myRsc=None):
+ def createCC_LINK_REL_REQ_MMENTRY(self, myCidTei=None, myLlidF=None, myTei=None, myRsc=None, myCsepcLen=None, myValidF=None, myMacServiceTypeF=None, myUserPriorityF=None, myAtsF=None, mySmoothingF=None, myValidR=None, myMacServiceTypeR=None, myUserPriorityR=None, myAtsR=None, mySmoothingR=None, myFRF=None, myFidF=None, qmpParam1F=None, qmpParam2F=None, qmpParam3F=None, qmpParam4F=None, qmpParam5F=None, qmpParam6F=None, myFRR=None, myFidR=None, qmpParam1R=None, qmpParam2R=None, qmpParam3R=None, qmpParam4R=None, qmpParam5R=None, qmpParam6R=None):
#CC_LINK_REL_REQ_MMENTRY is composed by 4 fields :
# - CID
# - TEI
# - Reason Code
# - Violated CSPEC
- self.mmentryFields.cid.createCid()
- if myTei!=None:
- self.mmentryFields.tei = myTei
- self.mmentryFields.createTei()
- if myRsc!=None:
- self.mmentryFields.rsc = myRsc
- self.mmentryFields.createRsc()
- self.mmentry.CC_LINK_REL_REQ = self.mmentryFields.cid.cid + self.mmentryFields.teiField + self.mmentryFields.rscField
+ self.mmentryFields.createCid(myCidTei, myLlidF)
+ self.mmentryFields.createTei(myTei)
+ self.mmentryFields.createRsc(myRsc)
+ self.mmentry.CC_LINK_REL_REQ = self.mmentryFields.cidField + self.mmentryFields.teiField + self.mmentryFields.rscField
if self.mmentryFields.rsc == 1 :
- self.mmentryFields.violatedCspec.createCspec()
- self.mmentry.CC_LINK_REL_REQ = self.mmentry.CC_LINK_REL_REQ + self.mmentryFields.violatedCspec.cspec
+ self.mmentryFields.createViolatedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentry.CC_LINK_REL_REQ = self.mmentry.CC_LINK_REL_REQ + self.mmentryFields.violatedCspecField
#createCC_LINK_REL_IND_MMENTRY creates
# the MMENTRY Field of the CC_LINK_REL.IND MME
- def createCC_LINK_REL_IND_MMENTRY(self, myReleasingStationMacAddress=None, myRsc=None):
+ def createCC_LINK_REL_IND_MMENTRY(self, myTei=None, myLlidF=None, myReleasingStationMacAddress=None, myRsc=None, myCsepcLen=None, myValidF=None, myMacServiceTypeF=None, myUserPriorityF=None, myAtsF=None, mySmoothingF=None, myValidR=None, myMacServiceTypeR=None, myUserPriorityR=None, myAtsR=None, mySmoothingR=None, myFRF=None, myFidF=None, qmpParam1F=None, qmpParam2F=None, qmpParam3F=None, qmpParam4F=None, qmpParam5F=None, qmpParam6F=None, myFRR=None, myFidR=None, qmpParam1R=None, qmpParam2R=None, qmpParam3R=None, qmpParam4R=None, qmpParam5R=None, qmpParam6R=None):
#CC_LINK_REL_IND_MMENTRY is composed by 4 fields :
# - CID
# - Releasing Station Mac Address
# - Reason Code
# - Proposed CSPEC or Violated CSPEC
- self.mmentryFields.cid.createCid()
- if myReleasingStationMacAddress!=None:
- self.mmentryFields.releasingStationMacAddress = myReleasingStationMacAddress
- self.mmentryFields.createReleasingStationMacAddress()
- if myRsc!=None:
- self.mmentryFields.rsc = myRsc
- self.mmentryFields.createRsc()
- self.mmentry.CC_LINK_REL_IND = self.mmentryFields.cid.cid + self.mmentryFields.releasingStationMacAddressField + self.mmentryFields.rscField
+ self.mmentryFields.createCid(myTei, myLlidF)
+ self.mmentryFields.createReleasingStationMacAddress(myReleasingStationMacAddress)
+ self.mmentryFields.createRsc(myRsc)
+ self.mmentry.CC_LINK_REL_IND = self.mmentryFields.cidField + self.mmentryFields.releasingStationMacAddressField + self.mmentryFields.rscField
if self.mmentryFields.rsc == 1 :
- self.mmentryFields.proposedCspec.createCspec()
- self.mmentry.CC_LINK_REL_IND = self.mmentry.CC_LINK_REL_IND + self.mmentryFields.proposedCspec.cspec
+ self.mmentryFields.createProposedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentry.CC_LINK_REL_IND = self.mmentry.CC_LINK_REL_IND + self.mmentryFields.proposedCspecField
elif self.mmentryFields.rsc == 2 :
- self.mmentryFields.violatedCspec.createCspec()
- self.mmentry.CC_LINK_REL_IND = self.mmentry.CC_LINK_REL_IND + self.mmentryFields.violatedCspec.cspec
+ self.mmentryFields.createViolatedCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentry.CC_LINK_REL_IND = self.mmentry.CC_LINK_REL_IND + self.mmentryFields.violatedCspecField
#createCC_DETECT_REPORT_REQ_MMENTRY creates
@@ -340,11 +325,8 @@ class MmentryMethod():
# - Duration
# - Number of GLID
# - GLID -* NumGlid-
- if myDuration!=None:
- self.mmentryFields.duration = myDuration
- self.mmentryFields.createDuration()
- self.mmentryFields.numGlid = myNumGlid
- self.mmentryFields.createNumGlid()
+ self.mmentryFields.createDuration(myDuration)
+ self.mmentryFields.createNumGlid(myNumGlid)
self.mmentry.CC_DETECT_REPORT_REQ = self.mmentryFields.durationField + self.mmentryFields.numGlidField
self.mmentryFields.createGlids()
i=0
@@ -355,14 +337,13 @@ class MmentryMethod():
#createCC_DETECT_REPORT_CNF_MMENTRY creates
# the MMENTRY Field of the CC_DETECT_REPORT.CNF MME
- def createCC_DETECT_REPORT_CNF_MMENTRY(self, myNumGlid=0):
+ def createCC_DETECT_REPORT_CNF_MMENTRY(self, myNumGlid=0, myCfDetecteds=None, myCsmaDetecteds=None, myHp1Detecteds=None, myOthersDetecteds=None, mySignalLevels=None, myEndTime=None, myIntBle=None):
#CC_DETECT_REPORT_CNF_MMENTRY is composed by 2 fields :
# - Number of GLID
# - GLID Info -* NumGlid-
- self.mmentryFields.numGlid = myNumGlid
- self.mmentryFields.createNumGlid()
+ self.mmentryFields.createNumGlid(myNumGlid)
self.mmentry.CC_DETECT_REPORT_CNF = self.mmentryFields.numGlidField
- self.mmentryFields.createGlidsInfo()
+ self.mmentryFields.createGlidsInfo(myNumGlid, myCfDetecteds, myCsmaDetecteds, myHp1Detecteds, myOthersDetecteds, mySignalLevels, myEndTime, myIntBle)
i=0
while i<self.mmentryFields.numGlid:
self.mmentry.CC_DETECT_REPORT_CNF = self.mmentry.CC_DETECT_REPORT_CNF + self.mmentryFields.glidsInfo.glidsInfo[i]
@@ -371,71 +352,55 @@ class MmentryMethod():
#createCC_WHO_RU_REQ_MMENTRY creates
# the MMENTRY Field of the CC_WHO_RU.REQ MME
- def createCC_WHO_RU_REQ_MMENTRY(self):
+ def createCC_WHO_RU_REQ_MMENTRY(self, mySecurityLevel=None, myNidOffset=None, myNid=None):
#CC_WHO_RU_REQ_MMENTRY is composed by 1 fields :
# - NID
- self.mmentryFields.createNid()
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentry.CC_WHO_RU_REQ = self.mmentryFields.nidField
#createCC_WHO_RU_CNF_MMENTRY creates
# the MMENTRY Field of the CC_WHO_RU.CNF MME
- def createCC_WHO_RU_CNF_MMENTRY(self, myCmac=None, myHfid=None):
+ def createCC_WHO_RU_CNF_MMENTRY(self, mySecurityLevel=None, myNidOffset=None, myNid=None, myCmac=None, myHfid=None):
#CC_WHO_RU_CNF_MMENTRY is composed by 3 fields :
# - NID
# - CMAC
# - HFID
- self.mmentryFields.createNid()
- if myCmac!=None:
- self.mmentryFields.cmac = myCmac
- self.mmentryFields.createCmac()
- if myHfid!=None:
- self.mmentryFields.hfid = myHfid
- self.mmentryFields.createHfid()
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
+ self.mmentryFields.createCmac(myCmac)
+ self.mmentryFields.createHfid(myHfid)
self.mmentry.CC_WHO_RU_CNF = self.mmentryFields.nidField + self.mmentryFields.cmacField + self.mmentryFields.hfidField
#createCC_ASSOC_REQ_MMENTRY creates
# the MMENTRY Field of the CC_ASSOC.REQ MME
- def createCC_ASSOC_REQ_MMENTRY(self, myReqType=None, myCcoCapability=None, myProxyNetworkingCapability=None):
+ def createCC_ASSOC_REQ_MMENTRY(self, myReqType=None, mySecurityLevel=None, myNidOffset=None, myNid=None, myCcoCapability=None, myProxyNetworkingCapability=None):
#CC_ASSOC_REQ_MMENTRY is composed by 4 fields :
# - ReqType
# - NID
# - CCo Capability
# - Proxy Networking Capability
- if myReqType!=None:
- self.mmentryFields.reqType = myReqType
- self.mmentryFields.createReqType()
- self.mmentryFields.createNid()
- if myCcoCapability!=None:
- self.mmentryFields.ccoCapability = myCcoCapability
- self.mmentryFields.createCcoCapability()
- if myProxyNetworkingCapability!=None:
- self.mmentryFields.proxyNetworkingCapability = myProxyNetworkingCapability
- self.mmentryFields.createProxyNetworkingCapability()
+ self.mmentryFields.createReqType(myReqType)
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
+ self.mmentryFields.createCcoCapability(myCcoCapability)
+ self.mmentryFields.createProxyNetworkingCapability(myProxyNetworkingCapability)
self.mmentry.CC_ASSOC_REQ = self.mmentryFields.reqTypeField + self.mmentryFields.nidField + self.mmentryFields.ccoCapabilityField + self.mmentryFields.proxyNetworkingCapabilityField
#createCC_ASSOC_CNF_MMENTRY creates
# the MMENTRY Field of the CC_ASSOC.CNF MME
- def createCC_ASSOC_CNF_MMENTRY(self, myResult=None, myStaTei=None, myLeaseTime=None):
+ def createCC_ASSOC_CNF_MMENTRY(self, myResult=None, mySecurityLevel=None, myNidOffset=None, myNid=None, mySnid=None, myAccess=None, mySnidAccess=None, myStaTei=None, myLeaseTime=None):
#CC_ASSOC_CNF_MMENTRY is composed by 5 fields :
# - Result
# - NID
# - SNID
# - STA TEI
# - Lease Time
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
- self.mmentryFields.createNid()
- self.mmentryFields.createSnidAccess()
- if myStaTei!=None:
- self.mmentryFields.staTei = myStaTei
- self.mmentryFields.createStaTei()
- if myLeaseTime!=None:
- self.mmentryFields.leaseTime = myLeaseTime
- self.mmentryFields.createLeaseTime()
+ self.mmentryFields.createResult(myResult)
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
+ self.mmentryFields.createSnidAccess(mySnid, myAccess, mySnidAccess)
+ self.mmentryFields.createStaTei(myStaTei)
+ self.mmentryFields.createLeaseTime(myLeaseTime)
self.mmentry.CC_ASSOC_CNF = self.mmentryFields.resultField + self.mmentryFields.nidField + self.mmentryFields.snidAccessField + self.mmentryFields.staTeiField + self.mmentryFields.leaseTimeField
@@ -444,9 +409,7 @@ class MmentryMethod():
def createCC_LEAVE_REQ_MMENTRY(self, myReason=None):
#CC_LEAVE_REQ_MMENTRY is composed by 1 fields :
# - Reason
- if myReason!=None:
- self.mmentryFields.reason = myReason
- self.mmentryFields.createReason()
+ self.mmentryFields.createReason(myReason)
self.mmentry.CC_LEAVE_REQ = self.mmentryFields.reasonField
@@ -455,14 +418,12 @@ class MmentryMethod():
#createCC_LEAVE_IND_MMENTRY creates
# the MMENTRY Field of the CC_LEAVE.IND MME
- def createCC_LEAVE_IND_MMENTRY(self, myReason=None):
+ def createCC_LEAVE_IND_MMENTRY(self, myReason=None, mySecurityLevel=None, myNidOffset=None, myNid=None):
#CC_LEAVE_IND_MMENTRY is composed by 2 fields :
# - Reason
# - NID
- if myReason!=None:
- self.mmentryFields.reason = myReason
- self.mmentryFields.createReason()
- self.mmentryFields.createNid()
+ self.mmentryFields.createReason(myReason)
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentry.CC_LEAVE_IND = self.mmentryFields.reasonField + self.mmentryFields.nidField
@@ -479,13 +440,10 @@ class MmentryMethod():
# - Mode
# - Num
# - TEI + MAC Address + Status -*Num-
- if myMode!=None:
- self.mmentryFields.mode = myMode
- self.mmentryFields.createMode()
- self.mmentryFields.num = myNum
- self.mmentryFields.createNum()
+ self.mmentryFields.createMode(myMode)
+ self.mmentryFields.createNum(myNum)
self.mmentry.CC_SET_TEI_MAP_IND = self.mmentryFields.modeField + self.mmentryFields.numField
- self.mmentryFields.createTeisAddrsStatuses()
+ self.mmentryFields.createTeisAddrsStatuses(myNum)
i=0
while i<self.mmentryFields.num:
self.mmentry.CC_SET_TEI_MAP_IND = self.mmentry.CC_SET_TEI_MAP_IND + self.mmentryFields.teisAddrsStatuses[i]
@@ -500,14 +458,9 @@ class MmentryMethod():
# - FTEI
# - Length
# - Payload
- if myFda!=None:
- self.mmentryFields.fda = myFda
- self.mmentryFields.createFda()
- if myFTei!=None:
- self.mmentryFields.fTei = myFTei
- self.mmentryFields.createFTei()
- if myPayload!=None:
- self.mmentryFields.payload = myPayload
+ self.mmentryFields.createFda(myFda)
+ self.mmentryFields.createFTei(myFTei)
+ self.mmentryFields.createPayload(myPayload)
self.mmentryFields.createLength()
self.mmentry.CC_RELAY_REQ = self.mmentryFields.fdaField + self.mmentryFields.fTeiField + self.mmentryFields.lengthField + self.mmentryFields.payload
@@ -520,14 +473,9 @@ class MmentryMethod():
# - OTEI
# - Length
# - Payload
- if myOda!=None:
- self.mmentryFields.oda = myOda
- self.mmentryFields.createOda()
- if myOTei!=None:
- self.mmentryFields.oTei = myOTei
- self.mmentryFields.createOTei()
- if myPayload!=None:
- self.mmentryFields.payload = myPayload
+ self.mmentryFields.createOda(myOda)
+ self.mmentryFields.createOTei(myOTei)
+ self.mmentryFields.createPayload(myPayload)
self.mmentryFields.createLength()
self.mmentry.CC_RELAY_IND = self.mmentryFields.odaField + self.mmentryFields.oTeiField + self.mmentryFields.lengthField + self.mmentryFields.payload
@@ -541,52 +489,46 @@ class MmentryMethod():
#CC_BEACON_RELIABILITY_CNF_MMENTRY is composed by 2 fields :
# - Number of beacon periods
# - Number of missed beacons
- if myNbp!=None:
- self.mmentryFields.nbp = myNbp
- self.mmentryFields.createNbp()
- if myNmb!=None:
- self.mmentryFields.nmb = myNmb
- self.mmentryFields.createNmb()
+ self.mmentryFields.createNbp(myNbp)
+ self.mmentryFields.createNmb(myNmb)
self.mmentry.CC_BEACON_RELIABILITY_CNF = self.mmentryFields.nbpField + self.mmentryFields.nmbField
#createCC_ALLOC_MOVE_REQ_MMENTRY creates
# the MMENTRY Field of the CC_ALLOC_MOVE.REQ MME
- def createCC_ALLOC_MOVE_REQ_MMENTRY(self):
+ def createCC_ALLOC_MOVE_REQ_MMENTRY(self, myTei=None, myLlidF=None, myGlidF=None, myGlidR=None, myNumF=None, myEndTimeF=None, myIntBleF=None, myNumR=None, myEndTimeR=None, myIntBleR=None):
#CC_ALLOC_MOVE_REQ_MMENTRY is composed by 5 fields :
# - CID
# - GLID-F
# - GLID-R
# - Forward Link Bit Loading Estimates
# - Reverse Link Bit Loading Estimates
- self.mmentryFields.cid.createCid()
- self.mmentryFields.createGlidF()
- self.mmentryFields.createGlidR()
- self.mmentry.CC_ALLOC_MOVE_REQ = self.mmentryFields.cid.cid + self.mmentryFields.glidFField + self.mmentryFields.glidRField
+ self.mmentryFields.createCid(myTei, myLlidF)
+ self.mmentryFields.createGlidF(myGlidF=None)
+ self.mmentryFields.createGlidR(myGlidR=None)
+ self.mmentry.CC_ALLOC_MOVE_REQ = self.mmentryFields.cidField + self.mmentryFields.glidFField + self.mmentryFields.glidRField
if self.mmentryFields.glidF in globalId:
- self.mmentryFields.forwardLinkBle.createBle()
+ self.mmentryFields.createForwardLinkBle(myNumF, myEndTimeF, myIntBleF)
self.mmentry.CC_ALLOC_MOVE_REQ = self.mmentry.CC_ALLOC_MOVE_REQ + self.mmentryFields.forwardLinkBle.ble
if self.mmentryFields.glidR in globalId:
- self.mmentryFields.reverseLinkBle.createBle()
+ self.mmentryFields.createReverseLinkBle(myNumR, myEndTimeR, myIntBleR)
self.mmentry.CC_ALLOC_MOVE_REQ = self.mmentry.CC_ALLOC_MOVE_REQ + self.mmentryFields.reverseLinkBle.ble
#createCC__ALLOC_MOVE_CNF_MMENTRY creates
# the MMENTRY Field of the CC__ALLOC_MOVE.CNF MME
- def createCC_ALLOC_MOVE_CNF_MMENTRY(self, myResult=None):
+ def createCC_ALLOC_MOVE_CNF_MMENTRY(self, myTei=None, myLlidF=None, myResult=None):
#CC__ALLOC_MOVE_CNF_MMENTRY is composed by 2 fields :
# - CID
# - Result
- self.mmentryFields.cid.createCid()
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
+ self.mmentryFields.createCid(myTei, myLlidF)
+ self.mmentryFields.createResult(myResult)
self.mmentry.CC_LINK_SQZ_CNF = self.mmentryFields.cid.cid + self.mmentryFields.resultField
#createCC_ACCESS_NEW_REQ_MMENTRY creates
# the MMENTRY Field of the CC_ACCESS_NEW.REQ MME
- def createCC_ACCESS_NEW_REQ_MMENTRY(self, myStei=None, myDtei=None, myDAddr=None, myLlid=None):
+ def createCC_ACCESS_NEW_REQ_MMENTRY(self, myStei=None, myDtei=None, myDAddr=None, myLlid=None, myCsepcLen=None, myValidF=None, myMacServiceTypeF=None, myUserPriorityF=None, myAtsF=None, mySmoothingF=None, myValidR=None, myMacServiceTypeR=None, myUserPriorityR=None, myAtsR=None, mySmoothingR=None, myFRF=None, myFidF=None, qmpParam1F=None, qmpParam2F=None, qmpParam3F=None, qmpParam4F=None, qmpParam5F=None, qmpParam6F=None, myFRR=None, myFidR=None, qmpParam1R=None, qmpParam2R=None, qmpParam3R=None, qmpParam4R=None, qmpParam5R=None, qmpParam6R=None, myNum=None, myEndTime=None, myIntBle=None):
#CC_ACCESS_NEW_REQ_MMENTRY is composed by 6 fields :
# - STEI
# - DTEI
@@ -594,22 +536,13 @@ class MmentryMethod():
# - LLID
# - CSPEC
# - Bit Loading Estimates
- if myStei!=None:
- self.mmentryFields.stei = myStei
- self.mmentryFields.createStei()
- if myDtei!=None:
- self.mmentryFields.dtei = myDtei
- self.mmentryFields.createDtei()
- if myDAddr!=None:
- self.mmentryFields.dAddr = myDAddr
- self.mmentryFields.createDAddr()
- if myLlid!=None:
- self.mmentryFields.llid = myLlid
- self.mmentryFields.createLlid()
- self.mmentryFields.cspec.createCspec()
- self.mmentryFields.ble.createBle()
- self.mmentry.CC_ACCESS_NEW_REQ = self.mmentryFields.steiField + self.mmentryFields.dteiField + self.mmentryFields.dAddrField + self.mmentryFields.llidField + self.mmentryFields.cspec.cspec + self.mmentryFields.ble.ble
-
+ self.mmentryFields.createStei(myStei)
+ self.mmentryFields.createDtei(myDtei)
+ self.mmentryFields.createDAddr(myDAddr)
+ self.mmentryFields.createLlid(myLlid)
+ self.mmentryFields.createCspec(myCsepcLen, myValidF, myMacServiceTypeF, myUserPriorityF, myAtsF, mySmoothingF, myValidR, myMacServiceTypeR, myUserPriorityR, myAtsR, mySmoothingR, myFRF, myFidF, qmpParam1F, qmpParam2F, qmpParam3F, qmpParam4F, qmpParam5F, qmpParam6F, myFRR, myFidR, qmpParam1R, qmpParam2R, qmpParam3R, qmpParam4R, qmpParam5R, qmpParam6R)
+ self.mmentryFields.createBle(myNum, myEndTime, myIntBle)
+ self.mmentry.CC_ACCESS_NEW_REQ = self.mmentryFields.steiField + self.mmentryFields.dteiField + self.mmentryFields.dAddrField + self.mmentryFields.llidField + self.mmentryFields.cspecField + self.mmentryFields.bleField
#createCC_ACCESS_NEW_CNF_MMENTRY creates
# the MMENTRY Field of the CC_ACCESS_NEW.CNF MME
@@ -621,30 +554,18 @@ class MmentryMethod():
# - ChanEstF
# - GCID-R
# - ChanEstR
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
- if myLlid!=None:
- self.mmentryFields.llid = myLlid
- self.mmentryFields.createLlid()
- if myGcidF!=None:
- self.mmentryFields.gcidF = myGcidF
- self.mmentryFields.createGcidF()
- if myChanEstF!=None:
- self.mmentryFields.chanEstF = myChanEstF
- self.mmentryFields.createChanEstF()
- if myGcidR!=None:
- self.mmentryFields.gcidR = myGcidR
- self.mmentryFields.createGcidR()
- if myChanEstR!=None:
- self.mmentryFields.chanEstR = myChanEstR
- self.mmentryFields.createChanEstR()
+ self.mmentryFields.createResult(myResult)
+ self.mmentryFields.createLlid(myLlid)
+ self.mmentryFields.createGcidF(myGcidF)
+ self.mmentryFields.createChanEstF(myChanEstF)
+ self.mmentryFields.createGcidR(myGcidR)
+ self.mmentryFields.createChanEstR(myChanEstR)
self.mmentry.CC_ACCESS_NEW_CNF = self.mmentryFields.resultField + self.mmentryFields.llidField + self.mmentryFields.gcidFField + self.mmentryFields.chanEstFField + self.mmentryFields.gcidRField + self.mmentryFields.chanEstRField
#createCC_ACCESS_NEW_IND_MMENTRY creates
# the MMENTRY Field of the CC_ACCESS_NEW.IND MME
- def createCC_ACCESS_NEW_IND_MMENTRY(self, myResult=None, myLlid=None, myGcidF=None, myChanEstF=None, myGcidR=None, myChanEstR=None):
+ def createCC_ACCESS_NEW_IND_MMENTRY(self, myResult=None, myLlid=None, myGcidF=None, myChanEstF=None, myGcidR=None, myChanEstR=None, mySecurityLevel=None, myNidOffset=None, myNid=None):
#CC_ACCESS_NEW_IND_MMENTRY is composed by 6 fields :
# - Result
# - LLID
@@ -652,31 +573,20 @@ class MmentryMethod():
# - ChanEstF
# - GCID-R
# - ChanEstR
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
- if myLlid!=None:
- self.mmentryFields.llid = myLlid
- self.mmentryFields.createLlid()
- if myGcidF!=None:
- self.mmentryFields.gcidF = myGcidF
- self.mmentryFields.createGcidF()
- if myChanEstF!=None:
- self.mmentryFields.chanEstF = myChanEstF
- self.mmentryFields.createChanEstF()
- if myGcidR!=None:
- self.mmentryFields.gcidR = myGcidR
- self.mmentryFields.createGcidR()
- if myChanEstR!=None:
- self.mmentryFields.chanEstR = myChanEstR
- self.mmentryFields.createChanEstR()
- self.mmentryFields.createNid()
+ # - NID
+ self.mmentryFields.createResult(myResult)
+ self.mmentryFields.createLlid(myLlid)
+ self.mmentryFields.createGcidF(myGcidF)
+ self.mmentryFields.createChanEstF(myChanEstF)
+ self.mmentryFields.createGcidR(myGcidR)
+ self.mmentryFields.createChanEstR(myChanEstR)
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
self.mmentry.CC_ACCESS_NEW_IND = self.mmentryFields.resultField + self.mmentryFields.llidField + self.mmentryFields.gcidFField + self.mmentryFields.chanEstFField + self.mmentryFields.gcidRField + self.mmentryFields.chanEstRField + self.mmentryFields.nidField
#createCC_ACCESS_NEW_RSP_MMENTRY creates
# the MMENTRY Field of the CC_ACCESS_NEW.RSP MME
- def createCC_ACCESS_NEW_RSP_MMENTRY(self, myResult=None, myLlid=None, myGcidF=None, myGcidR=None):
+ def createCC_ACCESS_NEW_RSP_MMENTRY(self, myResult=None, myLlid=None, myGcidF=None, myGcidR=None, myNumF=None, myEndTimeF=None, myIntBleF=None, myNumR=None, myEndTimeR=None, myIntBleR=None):
#CC_ACCESS_NEW_RSP_MMENTRY is composed by 6 fields :
# - Result
# - LLID
@@ -684,21 +594,13 @@ class MmentryMethod():
# - GCID-R
# - BLE-F
# - BLE-R
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
- if myLlid!=None:
- self.mmentryFields.llid = myLlid
- self.mmentryFields.createLlid()
- if myGcidF!=None:
- self.mmentryFields.gcidF = myGcidF
- self.mmentryFields.createGcidF()
- if myGcidR!=None:
- self.mmentryFields.gcidR = myGcidR
- self.mmentryFields.createGcidR()
- self.mmentryFields.bleF.createBle()
- self.mmentryFields.bleR.createBle()
- self.mmentry.CC_ACCESS_NEW_RSP = self.mmentryFields.resultField + self.mmentryFields.llidField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField + self.mmentryFields.bleF.ble + self.mmentryFields.bleR.ble
+ self.mmentryFields.createResult(myResult)
+ self.mmentryFields.createLlid(myLlid)
+ self.mmentryFields.createGcidF(myGcidF)
+ self.mmentryFields.createGcidR(myGcidR)
+ self.mmentryFields.createBleF(myNumF, myEndTimeF, myIntBleF)
+ self.mmentryFields.createBleR(myNumR, myEndTimeR, myIntBleR)
+ self.mmentry.CC_ACCESS_NEW_RSP = self.mmentryFields.resultField + self.mmentryFields.llidField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField + self.mmentryFields.bleFField + self.mmentryFields.bleRField
#createCC_ACCESS_REL_REQ_MMENTRY creates
@@ -709,12 +611,8 @@ class MmentryMethod():
# - GCID-F
# - GCID-R
self.mmentryFields.createCause()
- if myGcidF!=None:
- self.mmentryFields.gcidF = myGcidF
- self.mmentryFields.createGcidF()
- if myGcidR!=None:
- self.mmentryFields.gcidR = myGcidR
- self.mmentryFields.createGcidR()
+ self.mmentryFields.createGcidF(myGcidF)
+ self.mmentryFields.createGcidR(myGcidR)
self.mmentry.CC_ACCESS_REL_REQ = self.mmentryFields.causeField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField
@@ -725,15 +623,9 @@ class MmentryMethod():
# - Result
# - GCID-F
# - GCID-R
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
- if myGcidF!=None:
- self.mmentryFields.gcidF = myGcidF
- self.mmentryFields.createGcidF()
- if myGcidR!=None:
- self.mmentryFields.gcidR = myGcidR
- self.mmentryFields.createGcidR()
+ self.mmentryFields.createResult(myResult)
+ self.mmentryFields.createGcidF(myGcidF)
+ self.mmentryFields.createGcidR(myGcidR)
self.mmentry.CC_ACCESS_REL_CNF = self.mmentryFields.resultField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField
@@ -745,12 +637,8 @@ class MmentryMethod():
# - GCID-F
# - GCID-R
self.mmentryFields.createCause()
- if myGcidF!=None:
- self.mmentryFields.gcidF = myGcidF
- self.mmentryFields.createGcidF()
- if myGcidR!=None:
- self.mmentryFields.gcidR = myGcidR
- self.mmentryFields.createGcidR()
+ self.mmentryFields.createGcidF(myGcidF)
+ self.mmentryFields.createGcidR(myGcidR)
self.mmentry.CC_ACCESS_REL_IND = self.mmentryFields.causeField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField
@@ -761,15 +649,9 @@ class MmentryMethod():
# - Result
# - GCID-F
# - GCID-R
- if myResult!=None:
- self.mmentryFields.result = myResult
- self.mmentryFields.createResult()
- if myGcidF!=None:
- self.mmentryFields.gcidF = myGcidF
- self.mmentryFields.createGcidF()
- if myGcidR!=None:
- self.mmentryFields.gcidR = myGcidR
- self.mmentryFields.createGcidR()
+ self.mmentryFields.createResult(myResult)
+ self.mmentryFields.createGcidF(myGcidF)
+ self.mmentryFields.createGcidR(myGcidR)
self.mmentry.CC_ACCESS_REL_RSP = self.mmentryFields.resultField + self.mmentryFields.gcidFField + self.mmentryFields.gcidRField
@@ -778,9 +660,7 @@ class MmentryMethod():
def createCC_DCPPC_IND_MMENTRY(self, myDcppc=None):
#CC_DCPPC_IND_MMENTRY is composed by 1 fields :
# - DCPPC
- if myDcppc!=None:
- self.mmentryFields.dcppc = myDcppc
- self.mmentryFields.createDcppc()
+ self.mmentryFields.createDcppc(myDcppc)
self.mmentry.CC_DCPPC_IND = self.mmentryFields.dcppcField
@@ -797,25 +677,202 @@ class MmentryMethod():
# - NBP
# - NHP1.0
# - NHP1.1
- if myNbp!=None:
- self.mmentryFields.nbp = myNbp
- self.mmentryFields.createNbp()
- if myNhp10!=None:
- self.mmentryFields.nhp10 = myNhp10
- self.mmentryFields.createNhp10()
- if myNhp11!=None:
- self.mmentryFields.nhp11 = myNhp11
- self.mmentryFields.createNhp11()
+ self.mmentryFields.createNbp(myNbp)
+ self.mmentryFields.createNhp10(myNhp10)
+ self.mmentryFields.createNhp11(myNhp11)
self.mmentry.CC_HP1_DET_CNF = self.mmentryFields.nbpField + self.mmentryFields.nhp10Field + self.mmentryFields.nhp11Field
#createCC_BLE_UPDATE_BLE_MMENTRY creates
# the MMENTRY Field of the CC_BLE_UPDATE.BLE MME
- def createCC_BLE_UPDATE_BLE_MMENTRY(self):
+ def createCC_BLE_UPDATE_BLE_MMENTRY(self, myGlids=None, myNum=None, myEndTime=None, myIntBle=None):
#CC_BLE_UPDATE_BLE_MMENTRY is composed by 2 fields :
# - GLID
# - Bit Loading Estimates
- self.mmentryFields.glids.numGlid=1
- self.mmentryFields.createGlids()
- self.mmentryFields.ble.createBle()
- self.mmentry.CC_BLE_UPDATE_BLE = self.mmentryFields.glids.glidsField[0] + self.mmentryFields.ble.ble
+ myNumGlid=1
+ self.mmentryFields.createGlids(myNumGlid, myGlids)
+ self.mmentryFields.createBle(self, myNum, myEndTime, myIntBle)
+ self.mmentry.CC_BLE_UPDATE_BLE = self.mmentryFields.glids.glidsField[0] + self.mmentryFields.bleField
+
+
+
+ #----- Station - Station -----
+
+
+
+ #createCM_UNASSOCIATED_STA_IND_MMENTRY creates
+ # the MMENTRY Field of the CM_UNASSOCIATED_STA.IND MME
+ def createCM_UNASSOCIATED_STA_IND_MMENTRY(self, mySecurityLevel=None, myNidOffset=None, myNid=None, myCcoCapability=None):
+ #CM_UNASSOCIATED_STA_IND_MMENTRY is composed by 2 fields :
+ # - NID
+ # - CCo Capability
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
+ self.mmentryFields.createCcoCapability(myCcoCapability)
+ self.mmentry.CM_UNASSOCIATED_STA_IND = self.mmentryFields.nidField + self.mmentryFields.ccoCapabilityField
+
+
+ #createCM_ENCRYPTED_PAYLOAD_RSP_MMENTRY creates
+ # the MMENTRY Field of the CM_ENCRYPTED_PAYLOAD.RSP MME
+ def createCM_ENCRYPTED_PAYLOAD_RSP_MMENTRY(self, myResult=None, myPid=None, myPrn=None):
+ #CM_ENCRYPTED_PAYLOAD_RSP_MMENTRY is composed by 3 fields :
+ # - Result
+ # - PID
+ # - PRN
+ self.mmentryFields.createResult(myResult)
+ self.mmentryFields.createPid(myPid)
+ self.mmentryFields.createPrn(myPrn)
+ self.mmentry.CM_ENCRYPTED_PAYLOAD_RSP = self.mmentryFields.resultField + self.mmentryFields.pidField + self.mmentryFields.prnField
+
+
+ #createCM_SET_KEY_REQ_MMENTRY creates
+ # the MMENTRY Field of the CM_SET_KEY.REQ MME
+ def createCM_SET_KEY_REQ_MMENTRY(self, myKeyType=None, myMyNonce=None, myYourNonce=None, myPid=None, myPrn=None, myPmn=None, myPmnReset=False, myCcoCapability=None, mySecurityLevel=None, myNidOffset=None, myNid=None, myNewEks=None, myNewKey=None):
+ #CM_SET_KEY_REQ_MMENTRY is composed by 10 fields :
+ # - Key Type
+ # - My Nonce
+ # - Your Nonce
+ # - PID
+ # - PRN
+ # - PMN
+ # - CCo Capability
+ # - NID
+ # - New EKS
+ # - New KEY
+ self.mmentryFields.createKeyType(myKeyType)
+ self.mmentryFields.createMyNonce(myMyNonce)
+ self.mmentryFields.createYourNonce(myYourNonce)
+ self.mmentryFields.createPid(myPid)
+ self.mmentryFields.createPrn(myPrn)
+ self.mmentryFields.createPmn(myPmn, myPmnReset)
+ self.mmentryFields.createCcoCapability(myCcoCapability)
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
+ self.mmentryFields.createNewEks(myNewEks)
+ self.mmentryFields.createNewKey(myNewKey)
+ self.mmentry.CM_SET_KEY_REQ = self.mmentryFields.keyTypeField + self.mmentryFields.myNonceField + self.mmentryFields.yourNonceField + self.mmentryFields.pidField + self.mmentryFields.prnField + self.mmentryFields.pmnField + self.mmentryFields.ccoCapabilityField + self.mmentryFields.nidField + self.mmentryFields.newEksField + self.mmentryFields.newKeyField
+
+
+ #createCM_SET_KEY_CNF_MMENTRY creates
+ # the MMENTRY Field of the CM_SET_KEY.CNF MME
+ def createCM_SET_KEY_CNF_MMENTRY(self, myResult=None, myMyNonce=None, myYourNonce=None, myPid=None, myPrn=None, myPmn=None, myPmnReset=False, myCcoCapability=None):
+ #CM_SET_KEY_CNF_MMENTRY is composed by 7 fields :
+ # - Result
+ # - My Nonce
+ # - Your Nonce
+ # - PID
+ # - PRN
+ # - PMN
+ # - CCo Capability
+ self.mmentryFields.createResult(myResult)
+ self.mmentryFields.createMyNonce(myMyNonce)
+ self.mmentryFields.createYourNonce(myYourNonce)
+ self.mmentryFields.createPid(myPid)
+ self.mmentryFields.createPrn(myPrn)
+ self.mmentryFields.createPmn(myPmn, myPmnReset)
+ self.mmentryFields.createCcoCapability(myCcoCapability)
+ self.mmentry.CM_SET_KEY_CNF = self.mmentryFields.resultField + self.mmentryFields.myNonceField + self.mmentryFields.yourNonceField + self.mmentryFields.pidField + self.mmentryFields.prnField + self.mmentryFields.pmnField + self.mmentryFields.ccoCapabilityField
+
+
+ #createCM_GET_KEY_REQ_MMENTRY creates
+ # the MMENTRY Field of the CM_GET_KEY.REQ MME
+ def createCM_GET_KEY_REQ_MMENTRY(self, myRequestType=None, myRequestedKeyType=None, mySecurityLevel=None, myNidOffset=None, myNid=None, myMyNonce=None, myPid=None, myPrn=None, myPmn=None, myPmnReset=False, myHashKey=None):
+ #CM_GET_KEY_REQ_MMENTRY is composed by 8 fields :
+ # - Request Type
+ # - Requested Key Type
+ # - NID
+ # - My Nonce
+ # - PID
+ # - PRN
+ # - PMN
+ # - HASH KEY
+ self.mmentryFields.createRequestType(myRequestType)
+ self.mmentryFields.createRequestedKeyType(myRequestedKeyType)
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
+ self.mmentryFields.createMyNonce(myMyNonce)
+ self.mmentryFields.createPid(myPid)
+ self.mmentryFields.createPrn(myPrn)
+ self.mmentryFields.createPmn(myPmn, myPmnReset)
+ self.mmentry.CM_GET_KEY_REQ = self.mmentryFields.requestTypeField + self.mmentryFields.requestedKeyTypeField + self.mmentryFields.nidField + self.mmentryFields.myNonceField + self.mmentryFields.pidField + self.mmentryFields.prnField + self.mmentryFields.pmnField
+ if self.mmentryFields.requestedKeyType == 4:
+ self.mmentryFields.createHashKey(myHashKey)
+ self.mmentry.CM_GET_KEY_REQ = self.mmentry.CM_GET_KEY_REQ + self.mmentryFields.hashKeyField
+
+
+ #createCM_GET_KEY_CNF_MMENTRY creates
+ # the MMENTRY Field of the CM_GET_KEY.CNF MME
+ def createCM_GET_KEY_CNF_MMENTRY(self, myResult=None, myRequestedKeyType=None, myMyNonce=None, myYourNonce=None, mySecurityLevel=None, myNidOffset=None, myNid=None, myEks=None, myPid=None, myPrn=None, myPmn=None, myPmnReset=False, myKey=None, myHashKey=None):
+ #CM_GET_KEY_CNF_MMENTRY is composed by 10 fields :
+ # - Result
+ # - Requested Key Type
+ # - My Nonce
+ # - Your Nonce
+ # - NID
+ # - EKS
+ # - PID
+ # - PRN
+ # - PMN
+ # - Key
+ self.mmentryFields.createResult(myResult)
+ self.mmentryFields.createRequestedKeyType(myRequestedKeyType)
+ self.mmentryFields.createMyNonce(myMyNonce)
+ self.mmentryFields.createYourNonce(myYourNonce)
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
+ self.mmentryFields.createEks(myEks)
+ self.mmentryFields.createPid(myPid)
+ self.mmentryFields.createPrn(myPrn)
+ self.mmentryFields.createPmn(myPmn, myPmnReset)
+ self.mmentry.CM_GET_KEY_CNF = self.mmentryFields.resultField + self.mmentryFields.requestedKeyTypeField + self.mmentryFields.myNonceField + self.mmentryFields.yourNonceField + self.mmentryFields.nidField + self.mmentryFields.eksField + self.mmentryFields.pidField + self.mmentryFields.prnField + self.mmentryFields.pmnField
+ if self.mmentryFields.requestedKeyType == 4:
+ self.mmentryFields.createHashKey(myHashKey)
+ self.mmentry.CM_GET_KEY_CNF = self.mmentry.CM_GET_KEY_CNF + self.mmentryFields.hashKeyField
+ elif self.mmentryFields.requestedKeyType < 4:
+ self.mmentryFields.createKey(myKey)
+ self.mmentry.CM_GET_KEY_CNF = self.mmentry.CM_GET_KEY_CNF + self.mmentryFields.keyField
+
+
+ #createCM_SC_JOIN_REQ_MMENTRY creates
+ # the MMENTRY Field of the CM_SC_JOIN.REQ MME
+ def createCM_SC_JOIN_REQ_MMENTRY(self, myCcoCapability=None):
+ #CM_SC_JOIN_REQ_MMENTRY is composed by 1 fields :
+ # - CCo Capability
+ self.mmentryFields.createCcoCapability(myCcoCapability)
+ self.mmentry.CM_SC_JOIN_REQ = self.mmentryFields.ccoCapabilityField
+
+
+ #createCM_SC_JOIN_CNF_MMENTRY creates
+ # the MMENTRY Field of the CM_SC_JOIN.CNF MME
+ def createCM_SC_JOIN_CNF_MMENTRY(self, mySecurityLevel=None, myNidOffset=None, myNid=None, myAvlnStatus=None, myCcoCapability=None, myProxyNetworkCapability=None, myBackupCcoCapability=None, myCcoStatus=None, myPcoStatus=None, myBackupCcoStatus=None, myStatusesNCapabilities=None):
+ #CM_SC_JOIN_CNF_MMENTRY is composed by 2 fields :
+ # - NID
+ # - Statuses and Capabilities
+ self.mmentryFields.createNid(mySecurityLevel, myNidOffset, myNid)
+ self.mmentryFields.createStatusesNCapabilities(myAvlnStatus, myCcoCapability, myProxyNetworkCapability, myBackupCcoCapability, myCcoStatus, myPcoStatus, myBackupCcoStatus, myStatusesNCapabilities)
+ self.mmentry.CM_SC_JOIN_CNF = self.mmentryFields.nidField + self.mmentryFields.statusesNCapabilitiesField
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+