83 lines
2.6 KiB
Python
83 lines
2.6 KiB
Python
|
#
|
||
|
# CORE
|
||
|
# Copyright (c)2016 the Boeing Company.
|
||
|
# See the LICENSE file included in this distribution.
|
||
|
#
|
||
|
# authors: Rod Santiago
|
||
|
# John Kharouta
|
||
|
#
|
||
|
|
||
|
|
||
|
|
||
|
import core_pb2
|
||
|
import struct
|
||
|
from core.api.coreapi import *
|
||
|
|
||
|
class CoreMessage(object):
|
||
|
hdrfmt = "H"
|
||
|
hdrsiz = struct.calcsize(hdrfmt)
|
||
|
|
||
|
|
||
|
@staticmethod
|
||
|
def toLegacyApi(data):
|
||
|
message = core_pb2.CoreMessage()
|
||
|
message.ParseFromString(data)
|
||
|
if message.HasField('session'):
|
||
|
return CoreMessage.translateSessionMsg(message.session)
|
||
|
if message.HasField('experiment'):
|
||
|
return CoreMessage.translateExperimentMsg(message.experiment)
|
||
|
if message.HasField('event'):
|
||
|
return CoreMessage.translateEvent(message.event)
|
||
|
|
||
|
@staticmethod
|
||
|
def toApi2(messages):
|
||
|
for msg in messages:
|
||
|
msgtype, msgflags, msglen = coreapi.CoreMessage.unpackhdr(msg)
|
||
|
data = msg[coreapi.CoreMessage.hdrsiz:]
|
||
|
if msgtype == coreapi.CORE_API_REG_MSG:
|
||
|
pass
|
||
|
elif msgtype == coreapi.CORE_API_SESS_MSG:
|
||
|
|
||
|
|
||
|
|
||
|
@staticmethod
|
||
|
def translateSessionMsg(message):
|
||
|
print 'Received session request message'
|
||
|
msgs = []
|
||
|
msgs.append(CoreMessage.createRegisterMessage(0, gui='true'))
|
||
|
return msgs
|
||
|
|
||
|
|
||
|
|
||
|
@staticmethod
|
||
|
def translateExperimentMsg(message):
|
||
|
print 'Received experiment message'
|
||
|
|
||
|
|
||
|
@staticmethod
|
||
|
def translateEvent(event):
|
||
|
print 'Received event'
|
||
|
|
||
|
|
||
|
|
||
|
@staticmethod
|
||
|
def createRegisterMessage(flags, wireless=None, mobility=None, utility=None, execsrv=None,
|
||
|
gui=None, emulsrv=None, session=None):
|
||
|
tlvdata = ""
|
||
|
if wireless is not None:
|
||
|
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_WIRELESS,wireless)
|
||
|
if mobility is not None:
|
||
|
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_MOBILITY,mobility)
|
||
|
if utility is not None:
|
||
|
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_UTILITY,utility)
|
||
|
if execsrv is not None:
|
||
|
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_EXECSRV,execsrv)
|
||
|
if gui is not None:
|
||
|
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_GUI,gui)
|
||
|
if emulsrv is not None:
|
||
|
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_EMULSRV,emulsrv)
|
||
|
if session is not None:
|
||
|
tlvdata = tlvdata + CoreRegTlv.pack(CORE_TLV_REG_SESSION,session)
|
||
|
hdr = struct.pack(CoreRegMessage.hdrfmt, CoreRegMessage.msgtype, flags, len(tlvdata))
|
||
|
return CoreRegMessage(flags, hdr, tlvdata)
|