jroIO_usrp_api.py
134 lines
| 3.3 KiB
| text/x-python
|
PythonLexer
|
r568 | ''' | |
Created on Jul 15, 2014 | |||
@author: roj-idl71 | |||
''' | |||
import time | |||
import threading | |||
import cPickle | |||
try: | |||
from gevent import sleep | |||
except: | |||
from time import sleep | |||
SERIALIZER = cPickle | |||
# from schainpy.serializer import DynamicSerializer | |||
from schainpy.model.io.jroIO_usrp import USRPReader | |||
from schainpy.serializer.DataTranslate import obj2Serial | |||
class USRPReaderAPI(USRPReader, threading.Thread): | |||
# __isBufferEmpty = True | |||
__DATAKEYLIST = ['data','utctime','flagNoData'] | |||
def __init__(self, serializer='msgpack'): | |||
threading.Thread.__init__(self) | |||
USRPReader.__init__(self) | |||
# self.__serializerObj = DynamicSerializer.DynamicSerializer('msgpack') | |||
self.__mySerial = None | |||
self.__isBufferEmpty = True | |||
self.setSerializer(serializer) | |||
def setSerializer(self, serializer): | |||
self.__serializer = serializer | |||
def getSerializer(self): | |||
return self.__serializer | |||
def getProfileIndex(self): | |||
return self.profileIndex | |||
def getSerialMetaData(self): | |||
if self.__isBufferEmpty: | |||
ini = time.time() | |||
while True: | |||
if not self.__isBufferEmpty: | |||
break | |||
if time.time() - ini > 20: | |||
break | |||
sleep(1e-12) | |||
# if not self.getData(): | |||
# self.__isBufferEmpty = False | |||
# return None | |||
if self.dataOut.flagNoData: | |||
return None | |||
myMetadataSerial = obj2Serial(self.dataOut, | |||
serializer = self.__serializer) | |||
return myMetadataSerial | |||
def getSerialData(self): | |||
if self.__isBufferEmpty: | |||
ini = time.time() | |||
while True: | |||
if not self.__isBufferEmpty: | |||
break | |||
if time.time() - ini > 20: | |||
break | |||
sleep(1e-12) | |||
# if not self.getData(): | |||
# self.__isBufferEmpty = False | |||
# return None | |||
if self.dataOut.flagNoData: | |||
return None | |||
self.__isBufferEmpty = True | |||
return self.__mySerial | |||
def run(self): | |||
''' | |||
|
r573 | This method will be called once when start() is called | |
|
r568 | ''' | |
if not self.isConfig: | |||
raise IOError, 'setup() method has to be called before start()' | |||
while True: | |||
if not self.__isBufferEmpty: | |||
sleep(1e-12) | |||
continue | |||
if not self.getData(): | |||
break | |||
print ".", | |||
self.__mySerial = obj2Serial(self.dataOut, | |||
keyList = self.__DATAKEYLIST, | |||
serializer = self.__serializer) | |||
self.__isBufferEmpty = False | |||
# print self.profileIndex | |||
# print 'wait 1 second' | |||
# sleep(0.1) | |||
return |