cafe-1.13.0
This commit is contained in:
+9
-4
@@ -1,5 +1,10 @@
|
||||
build
|
||||
python-3.5/*.cpp
|
||||
python-3.5/*.so
|
||||
python-3.5/*.*~
|
||||
python-3.5/SL6-x86_64
|
||||
*.*~
|
||||
*.*-*
|
||||
python3.5
|
||||
python3.5-sf
|
||||
python3.7
|
||||
python3.7-sf
|
||||
python3.7-sls2
|
||||
z_python-3.5-old
|
||||
z_python-3.7-old
|
||||
+152434
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,42 @@
|
||||
/* Generated by Cython 0.23.4 */
|
||||
|
||||
#ifndef __PYX_HAVE__PyCafe
|
||||
#define __PYX_HAVE__PyCafe
|
||||
|
||||
|
||||
#ifndef __PYX_HAVE_API__PyCafe
|
||||
|
||||
#ifndef __PYX_EXTERN_C
|
||||
#ifdef __cplusplus
|
||||
#define __PYX_EXTERN_C extern "C"
|
||||
#else
|
||||
#define __PYX_EXTERN_C extern
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef DL_IMPORT
|
||||
#define DL_IMPORT(_T) _T
|
||||
#endif
|
||||
|
||||
__PYX_EXTERN_C DL_IMPORT(void) cy_data_event_handler_wrapper(void *, unsigned int, std::string, PVDataHolder);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) cy_ctrl_event_handler_wrapper(void *, unsigned int, std::string, PVCtrlHolder);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) cy_event_handler_wrapper(void *, unsigned int, std::string);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) cy_connect_handler_wrapper(void *, unsigned int, std::string, int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_wrapper(PVDataHolder, unsigned int, std::string);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_ctrl_wrapper(PVCtrlHolder, unsigned int, std::string);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_wrapper(unsigned int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_monid_wrapper(unsigned int, unsigned long);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_get_wrapper(unsigned int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_put_wrapper(unsigned int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_open_wrapper(unsigned int, int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_connect_wrapper(unsigned int, std::string, int);
|
||||
|
||||
#endif /* !__PYX_HAVE_API__PyCafe */
|
||||
|
||||
#if PY_MAJOR_VERSION < 3
|
||||
PyMODINIT_FUNC initPyCafe(void);
|
||||
#else
|
||||
PyMODINIT_FUNC PyInit_PyCafe(void);
|
||||
#endif
|
||||
|
||||
#endif /* !__PYX_HAVE__PyCafe */
|
||||
+52330
File diff suppressed because it is too large
Load Diff
-1447
File diff suppressed because it is too large
Load Diff
Symlink
+1
@@ -0,0 +1 @@
|
||||
PyCafe_sls.pxd
|
||||
+2
-325
@@ -182,14 +182,7 @@ cdef class CyCafe:
|
||||
|
||||
ChannelRegalia channelInfo
|
||||
# PyGILState_STATE gstate
|
||||
|
||||
DBPMKeeper dbpm
|
||||
|
||||
bint dbpmInitialized
|
||||
bint BSInitialized
|
||||
bint isBSinCAOnly
|
||||
BSDataHolder bsd
|
||||
|
||||
|
||||
|
||||
###########################################################################
|
||||
def __cinit__(self):
|
||||
@@ -223,10 +216,7 @@ cdef class CyCafe:
|
||||
raise _cafeException
|
||||
raise Exception("{} {} \n{}".format(self._exception_text, _METHOD, e))
|
||||
|
||||
self.dbpmInitialized = False
|
||||
self.BSInitialized = False
|
||||
self.isBSinCAOnly = False
|
||||
|
||||
|
||||
print("PY_VERSION_HEX is ", hex(PY_VERSION_HEX))
|
||||
|
||||
IF PY_EXT_C:
|
||||
@@ -7379,316 +7369,3 @@ Lengths of first (handlePVSet) and third (handlePVMatch) input lists must match!
|
||||
return
|
||||
################################################################################
|
||||
|
||||
|
||||
# if HAVE_BSREAD==1:
|
||||
################################################################################
|
||||
|
||||
def prepareSFdbpm(self):
|
||||
cdef:
|
||||
vector[string] bpmList
|
||||
vector[unsigned int] bpmHandles
|
||||
vector[string] bpmDev
|
||||
vector[float] bpmPos
|
||||
|
||||
self._c_cafe.prepareDBPM(bpmList, bpmHandles, bpmDev, bpmPos)
|
||||
|
||||
# for i in range(0, self.bpmDev.size()):
|
||||
#print (bpmPos[i], bpmDev[i] )
|
||||
|
||||
if not self.dbpmInitialized:
|
||||
self.dbpm = DBPMKeeper(
|
||||
bpmList, bpmHandles, bpmDev, bpmPos)
|
||||
self.dbpmInitialized = True
|
||||
return
|
||||
|
||||
##################################################################################
|
||||
# END def prepareSFdbpm(self)
|
||||
##################################################################################
|
||||
|
||||
def setSFdbpmBS(self, bint bsFlag=True):
|
||||
return self.dbpm.setBS(bsFlag)
|
||||
|
||||
def resetSFdbpmBS(self):
|
||||
return self.dbpm.resetBS()
|
||||
|
||||
def closeSFdbpmBS(self):
|
||||
return self.dbpm.closeBS()
|
||||
|
||||
def readSFdbpmOffsets(self):
|
||||
return self._c_cafe.readDBPMOffsets(self.dbpm)
|
||||
|
||||
def getSFdbpm(self):
|
||||
|
||||
cdef str _METHOD = "getSFdbpm"
|
||||
|
||||
cdef int status
|
||||
cdef vector[unsigned int] handleV
|
||||
with nogil:
|
||||
status = self._c_cafe.getDBPM(self.dbpm)
|
||||
|
||||
if status >= ICAFE_ERRNO_BASE:
|
||||
self._c_cafe.printStatusMessage(status)
|
||||
elif status != ICAFE_NORMAL:
|
||||
if PYCAFE_PRINT_LEVEL >= PYCAFE_PRINT_LOW:
|
||||
# self._c_cafe.printStatusMessage(status)
|
||||
|
||||
handleV = self.dbpm.getHandle()
|
||||
# for i in range(0, self.dbpm.getNDBPM()):
|
||||
# if x[i].getStatus !=
|
||||
#print (self.bpmPos[i], self.bpmDev[i] )
|
||||
for i in range(0, self.dbpm.getNPV()):
|
||||
if (self.dbpm.pvd[i].getStatus() != ICAFE_NORMAL):
|
||||
self._c_cafe.printStatus(handleV[i], status)
|
||||
|
||||
return dbpmHolderToStruct(self.dbpm)
|
||||
|
||||
##################################################################################
|
||||
# END def getSFdbpm(self):
|
||||
##################################################################################
|
||||
|
||||
|
||||
def getSFdbpmOffs_x(self):
|
||||
return self.dbpm.getOffsetX()
|
||||
|
||||
def getSFdbpmOffs_y(self):
|
||||
return self.dbpm.getOffsetY()
|
||||
|
||||
################################################################################
|
||||
|
||||
def setBS(self, list pv=None, modulo=None, offset=None, int timeoutMS=0):
|
||||
|
||||
cdef str _METHOD = "setBS"
|
||||
cdef int status = ICAFE_NORMAL
|
||||
cdef unsigned int i
|
||||
cdef bint pFlag = False
|
||||
|
||||
if isinstance(modulo, numbers.Number):
|
||||
if int(modulo) <= 0:
|
||||
raise ValueError("{} {} \n{}".format(
|
||||
self._exception_text, _METHOD,
|
||||
"modulo input argument must be positive!"))
|
||||
elif not TypeError(modulo, dict):
|
||||
raise Exception("{} {} \n{}".format(
|
||||
self._exception_text, _METHOD,
|
||||
("modulo input arg, should be of type <class 'numbers.Number'>, "
|
||||
"else <class 'dict'> {pv_name : modulo}")))
|
||||
|
||||
if isinstance(offset, (numbers.Number)):
|
||||
if int(offset) < 0:
|
||||
raise ValueError("{} {} \n{}".format(
|
||||
self._exception_text, _METHOD,
|
||||
"offset input argument cannot be negative!"))
|
||||
elif not isinstance(offset, (dict)):
|
||||
raise TypeError("{} {} \n{}".format(
|
||||
self._exception_text, _METHOD,
|
||||
("offset input arg, should be of type <class 'numbers.Number'>, "
|
||||
"else <class 'dict'> {pv_name : offset} ")))
|
||||
|
||||
if self.BSInitialized == True:
|
||||
print("Message from setBS: ONLY A SINGLE STREAM IS ALLOWED")
|
||||
return status
|
||||
|
||||
cdef vector[string] v
|
||||
|
||||
if timeoutMS > 0:
|
||||
self.bsd.setTimeout(timeoutMS)
|
||||
|
||||
if pv is not None:
|
||||
# do this to avoid compiler warning messages
|
||||
for i in range(0, len(pv)):
|
||||
v.push_back(pv[i])
|
||||
self.bsd.init(v)
|
||||
|
||||
if isinstance(modulo, (numbers.Number)):
|
||||
modulo = dict([(pv[i], int(modulo))
|
||||
for i in range(0, len(pv))])
|
||||
|
||||
if isinstance(offset, (numbers.Number)):
|
||||
offset = dict([(pv[i], int(offset))
|
||||
for i in range(0, len(pv))])
|
||||
|
||||
if modulo is not None:
|
||||
for eachKey in modulo:
|
||||
self.bsd.setBSModulo(eachKey, modulo[eachKey])
|
||||
if offset is not None:
|
||||
for eachKey in offset:
|
||||
self.bsd.setBSOffset(eachKey, offset[eachKey])
|
||||
|
||||
# self.initBSwithCA()
|
||||
with nogil:
|
||||
self._c_cafe.initBSwithCA(self.bsd)
|
||||
|
||||
with nogil:
|
||||
self._c_cafe.getBS(self.bsd)
|
||||
|
||||
with nogil:
|
||||
# status=self._c_cafe.setBS_Step1(self.bsd)
|
||||
status = self._c_cafe.setBS(self.bsd)
|
||||
|
||||
if status == ICAFE_NORMAL:
|
||||
self.BSInitialized = True
|
||||
self.isBSinCAOnly = False
|
||||
|
||||
return status
|
||||
|
||||
################################################################################
|
||||
|
||||
def initBSwithCA(self):
|
||||
|
||||
# self.openPrepare()
|
||||
with nogil:
|
||||
self._c_cafe.initBSwithCA(self.bsd)
|
||||
|
||||
# self.openNowAndWait(0.4)
|
||||
|
||||
|
||||
################################################################################
|
||||
def setBS2CA(self, list pv=None):
|
||||
|
||||
cdef vector[string] v
|
||||
if pv is not None:
|
||||
# do this to avoid compiler warning messages
|
||||
for i in range(0, len(pv)):
|
||||
v.push_back(pv[i])
|
||||
self.bsd.init(v)
|
||||
|
||||
with nogil:
|
||||
self._c_cafe.setBS2CAGroup(self.bsd)
|
||||
self.isBSinCAOnly = True
|
||||
|
||||
|
||||
def getBSSlim(self):
|
||||
if self.BSInitialized == False:
|
||||
if self.isBSinCAOnly == False:
|
||||
print(("Message from getBS: BS stream not initialized;"
|
||||
"cafe.setBS(pvList) has first to be called."))
|
||||
return None
|
||||
|
||||
with nogil:
|
||||
self._c_cafe.getBS(self.bsd)
|
||||
|
||||
|
||||
t1= time.time()
|
||||
PVDataV = self.bsd.getPVDataV()
|
||||
|
||||
pvlist = [None] * <int>self.bsd.getNPV()
|
||||
#cdef pvdata p1
|
||||
|
||||
for i in range (0, self.bsd.getNPV()):
|
||||
#p1 = pvdata()
|
||||
#p1 = PVDataHolderToStruct(self.bsd.pvdata[i])
|
||||
pvlist[i]=PVDataHolderToStruct(PVDataV[i])
|
||||
|
||||
|
||||
bs_slim = {}
|
||||
|
||||
for data, handle in zip(pvlist, self.bsd.getHandles()): # self.bsd.getIsBS()):
|
||||
bs_slim[handle] = data
|
||||
|
||||
t2= time.time()
|
||||
print("diff in reading BSDataHolderToStruc", t2 - t1)
|
||||
|
||||
|
||||
return bs_slim
|
||||
|
||||
################################################################################
|
||||
def getBS(self):
|
||||
|
||||
if self.BSInitialized == False:
|
||||
if self.isBSinCAOnly == False:
|
||||
print(("Message from getBS: BS stream not initialized;"
|
||||
"cafe.setBS(pvList) has first to be called."))
|
||||
|
||||
return None
|
||||
# CHECK STATUS!!!!
|
||||
#print("getBS in cycafe"
|
||||
#start = time.time()
|
||||
|
||||
with nogil:
|
||||
self._c_cafe.getBS(self.bsd)
|
||||
|
||||
_bsd = BSDataHolderToStruct(self.bsd)
|
||||
#_bsd.show()
|
||||
return _bsd #BSDataHolderToStruct(self.bsd)
|
||||
|
||||
'''
|
||||
cdef double _pid = 0
|
||||
_handle = self._c_cafe.getHandleFromPV(str('SIN-TIMAST-EVG0:TX-PULSEID'))
|
||||
_stat = self._c_cafe.getCacheDouble(_handle, _pid)
|
||||
print("cython/cafe/diff in cython ", self.bsd.getPulse_id(), _pid, _pid - self.bsd.getPulse_id())
|
||||
t1= time.time()
|
||||
print("diff in cython", t1 - start)
|
||||
#print("pulse_id in cycafe", self.bsd.getPulse_id())
|
||||
|
||||
BSd = BSDataHolderToStruct(self.bsd)
|
||||
t2= time.time()
|
||||
print("diff totol in reading BSDataHolderToStruc", t2 - start)
|
||||
|
||||
return BSd
|
||||
'''
|
||||
|
||||
################################################################################
|
||||
|
||||
def closeBS(self):
|
||||
with nogil:
|
||||
self._c_cafe.closeBS(self.bsd)
|
||||
self.BSInitialized = False
|
||||
self.isBSinCAOnly = False
|
||||
|
||||
|
||||
def getTimeoutMSBS(self):
|
||||
return self.bsd.getTimeout()
|
||||
|
||||
def setTimeoutMSBS(self, int timeoutMS):
|
||||
self.bsd.setTimeout(timeoutMS)
|
||||
|
||||
|
||||
def reconnectBS(self):
|
||||
self.bsd.reconnect()
|
||||
|
||||
|
||||
def flushBS(self):
|
||||
self.bsd.reconnect()
|
||||
|
||||
|
||||
def monitorPulseID(self):
|
||||
with nogil:
|
||||
self._c_cafe.monitorPulseID()
|
||||
|
||||
|
||||
def monitorStopPulseID(self):
|
||||
with nogil:
|
||||
self._c_cafe.monitorStopPulseID()
|
||||
|
||||
|
||||
def setPulseIDBufferSize(self, handlePV, int bufferSize = 10):
|
||||
cdef str _METHOD = "setPulseIDBufferSize"
|
||||
|
||||
cdef unsigned int handle = 0
|
||||
if isinstance(handlePV, (int, long)):
|
||||
handle = handlePV
|
||||
elif isinstance(handlePV, (str)):
|
||||
handle = self.checkForHandle(handlePV)
|
||||
else:
|
||||
raise Exception("{} {} \n{}".format(
|
||||
self._exception_text, _METHOD,
|
||||
("First Input argument should be of type <class 'int'> if handle "
|
||||
"else <class 'str'> if PV.")))
|
||||
|
||||
self._c_cafe.setPulseIDBufferSize(handle, bufferSize)
|
||||
|
||||
|
||||
def setPulseIDBufferSizeAll(self, int bufferSize = 10):
|
||||
self._c_cafe.setPulseIDBufferSizeAll(bufferSize)
|
||||
|
||||
|
||||
###################################################################################
|
||||
|
||||
def setBSInit(self, list pv):
|
||||
self.bsd.init(pv)
|
||||
|
||||
|
||||
|
||||
##################################################################################
|
||||
#END: cdef CAFE###################################################################
|
||||
##################################################################################
|
||||
|
||||
+17857
File diff suppressed because it is too large
Load Diff
-484
@@ -1373,487 +1373,3 @@ cdef channelInfo channelRegaliaToStruct(ChannelRegalia cr):
|
||||
ci.cafeConnectionStateAsString = cr.getCafeConnectionStateAsString()
|
||||
return ci
|
||||
#################################################################################
|
||||
|
||||
|
||||
cdef class bschannel:
|
||||
cdef readonly string name
|
||||
cdef readonly string type
|
||||
cdef readonly int modulo
|
||||
cdef readonly int offset
|
||||
cdef readonly unsigned int nelem
|
||||
cdef readonly bint BSEnabled
|
||||
|
||||
def __cinit__(self):
|
||||
self.name = (< bytes > ("")).encode('UTF-8')
|
||||
self.type = (< bytes > ("")).encode('UTF-8')
|
||||
self.modulo = 1
|
||||
self.offset = 0
|
||||
self.nelem = 1
|
||||
self.BSEnabled = False
|
||||
|
||||
cdef class BSData:
|
||||
cdef readonly string htype
|
||||
cdef readonly unsigned long long pulse_id
|
||||
cdef readonly list BSChannel
|
||||
cdef readonly list pv
|
||||
cdef readonly dict pvIdx
|
||||
cdef readonly list handle
|
||||
cdef readonly list global_timestamp
|
||||
cdef readonly list gtsDate
|
||||
cdef readonly bint isBS
|
||||
cdef readonly unsigned int nPV
|
||||
cdef readonly unsigned int nBSEnabled
|
||||
cdef readonly unsigned short nhwm
|
||||
cdef readonly int timeoutMS
|
||||
cdef readonly unsigned int nChannels
|
||||
cdef readonly unsigned int nNullData
|
||||
cdef readonly float pGoodData
|
||||
cdef readonly int status
|
||||
cdef readonly statusAsString
|
||||
cdef public bint daqStop
|
||||
|
||||
cdef readonly list hasNewData
|
||||
cdef readonly list pvdata
|
||||
|
||||
def __cinit__(self):
|
||||
self.pulse_id = 0
|
||||
self.htype = (< bytes > ("")).encode('UTF-8')
|
||||
self.BSChannel = []
|
||||
self.pv = []
|
||||
self.handle = []
|
||||
self.global_timestamp = []
|
||||
self.gtsDate = []
|
||||
self.isBS = False
|
||||
self.nPV = 0
|
||||
self.nBSEnabled = 0
|
||||
self.nhwm = BSREAD_ZEROMQ_HIGH_WATER_MARK
|
||||
self.timeoutMS = BSREAD_ZEROMQ_TIMEOUT_MS
|
||||
self.nChannels = 0 # Diagnostics
|
||||
self.nNullData = 0
|
||||
self.pGoodData = 0
|
||||
self.status = ICAFE_NORMAL
|
||||
self.statusAsString = 'ICAFE_NORMAL'
|
||||
self.daqStop = False
|
||||
self.hasNewData = []
|
||||
|
||||
def __copy__(self):
|
||||
return self
|
||||
|
||||
def __deepcopy__(self, memo):
|
||||
cdef BSData res = BSData()
|
||||
cpdef p1List = []
|
||||
cpdef bscList = []
|
||||
|
||||
res.htype = self.htype
|
||||
res.pulse_id = self.pulse_id
|
||||
res.pv = deepcopy(self.pv)
|
||||
res.handle = deepcopy(self.handle)
|
||||
res.isBS = self.isBS
|
||||
|
||||
#res.pvIdx = dict([(self.pv[i], i) for i in range(0,len(self.pv))] )
|
||||
|
||||
res.pvIdx = deepcopy(self.pvIdx)
|
||||
|
||||
# print(res.pvIdx.items())
|
||||
|
||||
res.global_timestamp = deepcopy(self.global_timestamp)
|
||||
res.gtsDate = deepcopy(self.gtsDate)
|
||||
|
||||
res.hasNewData = deepcopy(self.hasNewData)
|
||||
|
||||
res.nPV = self.nPV
|
||||
res.timeoutMS = self.timeoutMS
|
||||
res.nhwm = self.nhwm
|
||||
res.status = self.status
|
||||
res.statusAsString = self.statusAsString
|
||||
|
||||
res.nChannels = self.nChannels
|
||||
res.nNullData = self.nNullData
|
||||
res.pGoodData = self.pGoodData
|
||||
|
||||
res.daqStop = self.daqStop
|
||||
|
||||
lenPV = len(self.pvdata)
|
||||
|
||||
# Should never happen
|
||||
if lenPV != len(self.BSChannel):
|
||||
print("Anomoly in BSData deepcopy. Unequal lengths. Take minimum value")
|
||||
if lenPV > len(self.BSChannel):
|
||||
lenPV = len(self.BSChannel)
|
||||
|
||||
for i in range(0, lenPV):
|
||||
|
||||
# for i in range(0,len(self.BSChannel)):
|
||||
bsc = bschannel()
|
||||
bsc.name = self.BSChannel[i].name
|
||||
bsc.type = self.BSChannel[i].type
|
||||
bsc.modulo = self.BSChannel[i].modulo
|
||||
bsc.offset = self.BSChannel[i].offset
|
||||
bsc.nelem = self.BSChannel[i].nelem
|
||||
bsc.BSEnabled = self.BSChannel[i].BSEnabled
|
||||
|
||||
bscList.append(bsc)
|
||||
|
||||
# res.BSChannel=bscList
|
||||
|
||||
# for i in range(0,len(self.pvdata)):
|
||||
|
||||
p1 = pvdata()
|
||||
# value=[]
|
||||
# value.append(self.pvdata[i].value[0])
|
||||
# p1.value.append(value)
|
||||
p1.value = deepcopy(self.pvdata[i].value)
|
||||
p1.status = self.pvdata[i].status
|
||||
p1.statusAsString = self.pvdata[i].statusAsString
|
||||
p1.nelem = self.pvdata[i].nelem
|
||||
p1.alarmStatus = self.pvdata[i].alarmStatus
|
||||
p1.alarmSeverity = self.pvdata[i].alarmSeverity
|
||||
p1.alarmStatusAsString = self.pvdata[i].alarmStatusAsString
|
||||
p1.alarmSeverityAsString = self.pvdata[i].alarmSeverityAsString
|
||||
p1.pulseID = self.pvdata[i].pulseID
|
||||
p1.dataType = self.pvdata[i].dataType
|
||||
p1.dataTypeAsString = self.pvdata[i].dataTypeAsString
|
||||
p1.tsDateAsString = self.pvdata[i].tsDateAsString
|
||||
p1.bsDateAsString = self.pvdata[i].bsDateAsString
|
||||
p1.ts = deepcopy(self.pvdata[i].ts)
|
||||
p1.tsDate = deepcopy(self.pvdata[i].tsDate)
|
||||
|
||||
p1List.append(p1)
|
||||
|
||||
res.pvdata = p1List
|
||||
res.BSChannel = bscList
|
||||
|
||||
# for i in range(0,len(res.pvdata)):
|
||||
# res.pvdata[i].show()
|
||||
|
||||
return res
|
||||
|
||||
def compare(self, list _pvdata):
|
||||
self.hasNewData = [0]*len(self.pv)
|
||||
cdef unsigned short newDataFlag = 0
|
||||
|
||||
for i in range(0, len(self.pv)):
|
||||
if self.pvdata[i].ts[1] != _pvdata[i].ts[1]:
|
||||
self.hasNewData[i] = 1
|
||||
newDataFlag = 1
|
||||
elif self.pvdata[i].ts[0] != _pvdata[i].ts[0]:
|
||||
self.hasNewData[i] = 1
|
||||
newDataFlag = 1
|
||||
# Catch disconnect events(!!) and set newDataFlag only
|
||||
elif self.pvdata[i].status != _pvdata[i].status:
|
||||
newDataFlag = 1
|
||||
return newDataFlag
|
||||
|
||||
def getIdxFromPVName(self, str _name):
|
||||
for i in range(0, len(self.pv)):
|
||||
if _name == self.pv[i]:
|
||||
return i
|
||||
return -1
|
||||
|
||||
def getDaqStop(self):
|
||||
return self.daqStop
|
||||
|
||||
def setDaqStop(self, bint ds):
|
||||
self.daqStop = ds
|
||||
|
||||
def getVal(self, iElem=None):
|
||||
|
||||
cdef int idx = -1
|
||||
|
||||
if isinstance(iElem, (str)):
|
||||
# iElem=self.getIdxFromPVName(iElem)
|
||||
iElem = self.pvIdx.get(iElem)
|
||||
if iElem is None:
|
||||
return None
|
||||
idx = iElem
|
||||
elif isinstance(iElem, (int, long)):
|
||||
if iElem < 0:
|
||||
print("Invalid input:", iElem, "Idx must be non-negative!")
|
||||
return None
|
||||
idx = iElem
|
||||
|
||||
if iElem is not None:
|
||||
if len(self.pvdata[idx].value) == 1:
|
||||
return self.pvdata[idx].value[0]
|
||||
else:
|
||||
return self.pvdata[idx].value
|
||||
vall = []
|
||||
for i in range(0, self.nPV):
|
||||
if len(self.pvdata[i].value) == 1:
|
||||
vall.append(self.pvdata[i].value[0])
|
||||
else:
|
||||
vall.append(self.pvdata[i].value)
|
||||
return vall
|
||||
|
||||
def getPV(self, iElem=None):
|
||||
|
||||
cdef int idx = -1
|
||||
|
||||
if isinstance(iElem, (str)):
|
||||
iElem = self.pvIdx.get(iElem)
|
||||
if iElem is None:
|
||||
return None
|
||||
idx = iElem
|
||||
elif isinstance(iElem, (int, long)):
|
||||
if iElem < 0:
|
||||
print("Invalid input:", iElem, " Idx must be non-negative!")
|
||||
return None
|
||||
idx = iElem
|
||||
|
||||
if iElem is not None:
|
||||
return self.pvdata[idx]
|
||||
vall = []
|
||||
for i in range(0, self.nPV):
|
||||
vall.append(self.pvdata[i])
|
||||
return vall
|
||||
|
||||
def show(self, str BSCA=None, int wf=1):
|
||||
|
||||
for i in range(0, self.nPV):
|
||||
|
||||
if self.BSChannel[i].BSEnabled and self.isBS:
|
||||
if BSCA in (None, 'BS'):
|
||||
print("---------------------------------")
|
||||
print("pv= %s [%d] BS" % (self.pv[i], i))
|
||||
if wf > 1:
|
||||
self.pvdata[i].showMax(wf)
|
||||
else:
|
||||
self.pvdata[i].show()
|
||||
else:
|
||||
if BSCA in (None, 'CA'):
|
||||
print("---------------------------------")
|
||||
print("pv= %s [%d] CA" % (self.pv[i], i))
|
||||
if wf > 1:
|
||||
self.pvdata[i].showMax(wf)
|
||||
else:
|
||||
self.pvdata[i].show()
|
||||
print("---------------------------------")
|
||||
|
||||
print("overallStatus = %d (%s)" %
|
||||
(self.status, self.statusAsString))
|
||||
if self.pulse_id > 0:
|
||||
print("pulse_id = %d" % self.pulse_id)
|
||||
print("global_timestamp = %d sec. %d nsec" %
|
||||
(self.global_timestamp[0], self.global_timestamp[1]))
|
||||
print("gtsDate = %d %d %d %d %d %d %d" % (self.gtsDate[0], \
|
||||
self.gtsDate[1], self.gtsDate[2], self.gtsDate[3], self.gtsDate[4], \
|
||||
self.gtsDate[5], self.gtsDate[6]))
|
||||
print("nPV = %d" % self.nPV)
|
||||
if self.isBS:
|
||||
print("of which BS = %d (Percentage with data = %f)" %
|
||||
(self.nChannels, float(self.pGoodData)))
|
||||
print("of which CA = %d" % (self.nPV - self.nChannels))
|
||||
else:
|
||||
print("of which CA = %d (i.e., all)" % (self.nPV) )
|
||||
print("---------------------------------")
|
||||
return
|
||||
|
||||
def showAll(self, int wf=1):
|
||||
|
||||
for i in range(0, self.nPV):
|
||||
print("---------------------------------")
|
||||
if self.BSChannel[i].BSEnabled and self.isBS:
|
||||
print("pv= %s [%d] BS" % (self.pv[i], i))
|
||||
else:
|
||||
print("pv= %s [%d] CA" % (self.pv[i], i))
|
||||
if wf > 1:
|
||||
self.pvdata[i].showMax(wf)
|
||||
else:
|
||||
self.pvdata[i].show()
|
||||
print("---------------------------------")
|
||||
print("overallStatus = %d (%s)" %
|
||||
(self.status, self.statusAsString))
|
||||
print("pulse_id = %d" % self.pulse_id)
|
||||
print("global_timestamp = %d sec. %d nsec" %
|
||||
(self.global_timestamp[0], self.global_timestamp[1]))
|
||||
print("gtsDate = %d %d %d %d %d %d %d" % (self.gtsDate[0], self.gtsDate[1], self.gtsDate[2], self.gtsDate[3], self.gtsDate[4], self.gtsDate[5],
|
||||
self.gtsDate[6]))
|
||||
print("nPV = %d" % self.nPV)
|
||||
if self.isBS:
|
||||
print("of which BS = %d (Percentage with data = %f)" %
|
||||
(self.nChannels, float(self.pGoodData)))
|
||||
print("of which CA = %d" % (self.nPV-self.nChannels))
|
||||
else:
|
||||
print("of which CA = %d (i.e., all)" % (self.nPV) )
|
||||
print("pvIdx = ", self.pvIdx)
|
||||
print("pv = ", self.pv)
|
||||
print("handle = ", self.handle)
|
||||
print("isBS = %d" % self.isBS)
|
||||
#print ("nBSEnabled = %d" % self.nBSEnabled)
|
||||
print("nhwm = %d" % self.nhwm)
|
||||
print("timeoutMS = %d" % self.timeoutMS)
|
||||
print("nChannels = %d" % self.nChannels)
|
||||
print("nNullData = %d" % self.nNullData)
|
||||
print("pGoodData = %f" % float(self.pGoodData))
|
||||
print("---------------------------------")
|
||||
return
|
||||
|
||||
|
||||
cdef class SFDBPMData:
|
||||
cdef readonly list x
|
||||
cdef readonly list y
|
||||
cdef readonly list q
|
||||
cdef readonly list Energy
|
||||
cdef readonly list xStatus
|
||||
cdef readonly list yStatus
|
||||
cdef readonly list qStatus
|
||||
cdef readonly list EnergyStatus
|
||||
|
||||
# cdef readonly list offs_x
|
||||
# cdef readonly list offs_y
|
||||
|
||||
cdef readonly bint isAllXOK
|
||||
cdef readonly bint isAllYOK
|
||||
cdef readonly bint isAllQOK
|
||||
cdef readonly bint isAllOK
|
||||
cdef readonly list device
|
||||
cdef readonly int status
|
||||
|
||||
def __cinit__(self):
|
||||
self.isAllOK = False
|
||||
self.isAllXOK = False
|
||||
self.isAllYOK = False
|
||||
self.isAllQOK = False
|
||||
self.x = []
|
||||
self.y = []
|
||||
self.q = []
|
||||
self.Energy = []
|
||||
self.xStatus = []
|
||||
self.yStatus = []
|
||||
self.qStatus = []
|
||||
self.EnergyStatus = []
|
||||
self.device = []
|
||||
|
||||
# self.offs_x=[]
|
||||
# self.offs_y=[]
|
||||
|
||||
|
||||
#################################################################################
|
||||
|
||||
cdef SFDBPMData dbpmHolderToStruct(DBPMKeeper d):
|
||||
cdef SFDBPMData dbpm = SFDBPMData()
|
||||
|
||||
cdef unsigned int i
|
||||
|
||||
# double [::1] mvDouble
|
||||
#mvDouble = np.empty(d.getX().size(), dtype=np.float64)
|
||||
# for ij in range(0, d.getX().size()):
|
||||
# mvDouble[ij]=<double>d.getX()[i]
|
||||
# dbpm.x=np.array(mvDouble)
|
||||
|
||||
for i in range(0, d.getX().size()):
|
||||
|
||||
dbpm.x.append(d.getX()[i].getValue())
|
||||
dbpm.y.append(d.getY()[i].getValue())
|
||||
dbpm.q.append(d.getQ()[i].getValue())
|
||||
dbpm.Energy.append(d.getEnergy()[i].getValue())
|
||||
dbpm.xStatus.append(d.getX()[i].getStatus())
|
||||
dbpm.yStatus.append(d.getY()[i].getStatus())
|
||||
dbpm.qStatus.append(d.getQ()[i].getStatus())
|
||||
dbpm.EnergyStatus.append(d.getEnergy()[i].getStatus())
|
||||
|
||||
dbpm.isAllXOK = d.getIsAllXOK()
|
||||
dbpm.isAllYOK = d.getIsAllYOK()
|
||||
dbpm.isAllQOK = d.getIsAllQOK()
|
||||
dbpm.isAllOK = d.getIsAllOK()
|
||||
dbpm.status = d.getStatus()
|
||||
return dbpm
|
||||
|
||||
#################################################################################
|
||||
|
||||
|
||||
#################################################################################
|
||||
|
||||
cdef BSDataHolderToStruct(BSDataHolder b):
|
||||
|
||||
cdef BSData bsd = BSData()
|
||||
cdef vector[PVDataHolder] pvd
|
||||
cdef unsigned int i
|
||||
cdef etsNorm _etsNorm
|
||||
cdef etsDate _etsDate
|
||||
cdef HandleHelper hh
|
||||
cdef CAFEStatusCode csc
|
||||
localListToStruct = []
|
||||
localBSCToStruct = []
|
||||
|
||||
bsd.pulse_id = b.getPulse_id()
|
||||
bsd.pv = b.getPV()
|
||||
bsd.handle = b.getHandles()
|
||||
bsd.isBS = b.getIsBS()
|
||||
|
||||
bsd.pvIdx = dict([(bsd.pv[i], i) for i in range(0, len(bsd.pv))])
|
||||
|
||||
# print(bsd.pvIdx.items())
|
||||
|
||||
_etsNorm = b.getGlobal_timestamp()
|
||||
|
||||
#print ("pulse_id " , b.getPulse_id())
|
||||
#print ("gto ", b.getGlobal_timestamp())
|
||||
|
||||
cpdef ll = []
|
||||
ll.append(_etsNorm.secPastEpoch)
|
||||
ll.append(_etsNorm.nsec)
|
||||
bsd.global_timestamp = ll
|
||||
|
||||
_etsDate = hh.unixTimeToDate(_etsNorm)
|
||||
cpdef ld = []
|
||||
ld.append(_etsDate.year)
|
||||
ld.append(_etsDate.mon)
|
||||
ld.append(_etsDate.day)
|
||||
ld.append(_etsDate.hour)
|
||||
ld.append(_etsDate.min)
|
||||
ld.append(_etsDate.sec)
|
||||
ld.append(_etsDate.nsec)
|
||||
|
||||
bsd.gtsDate = ld
|
||||
|
||||
#bsd.isBS = b.getIsBS()
|
||||
bsd.nPV = b.getNPV()
|
||||
bsd.timeoutMS = b.getTimeout()
|
||||
bsd.nhwm = b.getHWM()
|
||||
|
||||
bsd.status = b.getStatus()
|
||||
bsd.statusAsString = csc.msgIDAsString(bsd.status)
|
||||
|
||||
pvd = b.getPVDataV()
|
||||
cpdef lt = []
|
||||
cpdef bscList = []
|
||||
|
||||
# Would be quicker to have p1 = pvdata() outside loop - check this
|
||||
for i in range(0, pvd.size()):
|
||||
p1 = pvdata()
|
||||
p1 = PVDataHolderToStruct(pvd[i], dt='native')
|
||||
|
||||
#print ("a: ", p1.tsDate)
|
||||
lt = []
|
||||
bsc = bschannel()
|
||||
|
||||
if b.getBSChannel(i).isBSEnabled() and bsd.isBS:
|
||||
bsc.BSEnabled = True
|
||||
_etsNorm = pvd[i].getEpicsTimeStampAsUInt32()
|
||||
_etsDate = pvd[i].getUnixTimeAsDate(_etsNorm)
|
||||
else:
|
||||
_etsDate = pvd[i].getEpicsTimeStampAsDate()
|
||||
lt.append(_etsDate.year)
|
||||
lt.append(_etsDate.mon)
|
||||
lt.append(_etsDate.day)
|
||||
lt.append(_etsDate.hour)
|
||||
lt.append(_etsDate.min)
|
||||
lt.append(_etsDate.sec)
|
||||
lt.append(_etsDate.nsec)
|
||||
p1.tsDate = lt
|
||||
#print ("b: ", p1.tsDate)
|
||||
localListToStruct.append(p1)
|
||||
localBSCToStruct.append(bsc)
|
||||
|
||||
bsd.pvdata = localListToStruct
|
||||
bsd.BSChannel = localBSCToStruct
|
||||
|
||||
bsd.nChannels = b.getNChannels()
|
||||
bsd.nNullData = b.getNNullData()
|
||||
bsd.pGoodData = b.getPGoodData()
|
||||
|
||||
bsd.daqStop = False
|
||||
return bsd
|
||||
|
||||
#################################################################################
|
||||
|
||||
+1845
File diff suppressed because it is too large
Load Diff
+23201
File diff suppressed because it is too large
Load Diff
+1859
File diff suppressed because it is too large
Load Diff
+166071
File diff suppressed because it is too large
Load Diff
+42
@@ -0,0 +1,42 @@
|
||||
/* Generated by Cython 0.23.4 */
|
||||
|
||||
#ifndef __PYX_HAVE__PyCafe_sf
|
||||
#define __PYX_HAVE__PyCafe_sf
|
||||
|
||||
|
||||
#ifndef __PYX_HAVE_API__PyCafe_sf
|
||||
|
||||
#ifndef __PYX_EXTERN_C
|
||||
#ifdef __cplusplus
|
||||
#define __PYX_EXTERN_C extern "C"
|
||||
#else
|
||||
#define __PYX_EXTERN_C extern
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef DL_IMPORT
|
||||
#define DL_IMPORT(_T) _T
|
||||
#endif
|
||||
|
||||
__PYX_EXTERN_C DL_IMPORT(void) cy_data_event_handler_wrapper(void *, unsigned int, std::string, PVDataHolder);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) cy_ctrl_event_handler_wrapper(void *, unsigned int, std::string, PVCtrlHolder);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) cy_event_handler_wrapper(void *, unsigned int, std::string);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) cy_connect_handler_wrapper(void *, unsigned int, std::string, int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_wrapper(PVDataHolder, unsigned int, std::string);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_ctrl_wrapper(PVCtrlHolder, unsigned int, std::string);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_wrapper(unsigned int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_monid_wrapper(unsigned int, unsigned long);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_get_wrapper(unsigned int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_put_wrapper(unsigned int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_open_wrapper(unsigned int, int);
|
||||
__PYX_EXTERN_C DL_IMPORT(void) py_cb_handle_connect_wrapper(unsigned int, std::string, int);
|
||||
|
||||
#endif /* !__PYX_HAVE_API__PyCafe_sf */
|
||||
|
||||
#if PY_MAJOR_VERSION < 3
|
||||
PyMODINIT_FUNC initPyCafe_sf(void);
|
||||
#else
|
||||
PyMODINIT_FUNC PyInit_PyCafe_sf(void);
|
||||
#endif
|
||||
|
||||
#endif /* !__PYX_HAVE__PyCafe_sf */
|
||||
+54836
File diff suppressed because it is too large
Load Diff
+1447
File diff suppressed because it is too large
Load Diff
+7695
File diff suppressed because it is too large
Load Diff
+1361
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
||||
######
|
||||
# Build for python 3.7:
|
||||
# source build_py37.sh
|
||||
#
|
||||
# Special build for swissfel - with zmq libraries:
|
||||
# source build_py37_sf.sh
|
||||
#
|
||||
# Special build for sls2 - links to epics7:
|
||||
# source build_py37_sls2.sh
|
||||
|
||||
# Build for python 3.5:
|
||||
# source build_py35.sh
|
||||
#
|
||||
# Special build for swissfel - with zmq libraries:
|
||||
# source build_py35_sf.sh
|
||||
#
|
||||
|
||||
###
|
||||
### Install directory:
|
||||
# ./python<version>/lib/${EPICS_HOST_ARCH}
|
||||
# where <version> is 3.7, 3.7-sf, 3.7-sls2
|
||||
# 3.5, 3.5-sf
|
||||
@@ -0,0 +1,10 @@
|
||||
module unload gcc
|
||||
module load gcc/7.3.0
|
||||
rm -f PyCafe.cpp
|
||||
rm -f PyCafe.h
|
||||
rm -f PyCafe.pxd
|
||||
ln -s PyCafe_sls.pxd PyCafe.pxd
|
||||
|
||||
source /opt/gfa/python 3.5
|
||||
python setup_py35.py build_ext -b ./python3.5/lib/${EPICS_HOST_ARCH}
|
||||
cp examples.py ./python3.5/lib/${EPICS_HOST_ARCH}
|
||||
@@ -0,0 +1,9 @@
|
||||
module unload gcc
|
||||
module load gcc/7.3.0
|
||||
rm -f PyCafe_sf.cpp
|
||||
rm -f PyCafe_sf.h
|
||||
rm -f PyCafe.pxd
|
||||
ln -s PyCafe_sf.pxd PyCafe.pxd
|
||||
source /opt/gfa/python 3.5
|
||||
python setup_py35_sf.py build_ext -b ./python3.5-sf/lib/${EPICS_HOST_ARCH}
|
||||
cp examples.py ./python3.5-sf/lib/${EPICS_HOST_ARCH}
|
||||
@@ -0,0 +1,10 @@
|
||||
module unload gcc
|
||||
module load gcc/7.3.0
|
||||
rm -f PyCafe.cpp
|
||||
rm -f PyCafe.h
|
||||
rm -f PyCafe.pxd
|
||||
ln -s PyCafe_sls.pxd PyCafe.pxd
|
||||
|
||||
source /opt/gfa/python 3.7
|
||||
python setup_py37.py build_ext -b ./python3.7/lib/${EPICS_HOST_ARCH}
|
||||
cp examples.py ./python3.7/lib/${EPICS_HOST_ARCH}
|
||||
@@ -0,0 +1,9 @@
|
||||
module unload gcc
|
||||
module load gcc/7.3.0
|
||||
rm -f PyCafe_sf.cpp
|
||||
rm -f PyCafe_sf.h
|
||||
rm -f PyCafe.pxd
|
||||
ln -s PyCafe_sf.pxd PyCafe.pxd
|
||||
source /opt/gfa/python 3.7
|
||||
python setup_py37_sf.py build_ext -b ./python3.7-sf/lib/${EPICS_HOST_ARCH}
|
||||
cp examples.py ./python3.7-sf/lib/${EPICS_HOST_ARCH}
|
||||
@@ -0,0 +1,9 @@
|
||||
module unload gcc
|
||||
module load gcc/7.3.0
|
||||
rm -f PyCafe.cpp
|
||||
rm -f PyCafe.h
|
||||
rm -f PyCafe.pxd
|
||||
ln -s PyCafe_sls.pxd PyCafe.pxd
|
||||
source /opt/gfa/python 3.7
|
||||
python setup_py37_sls2.py build_ext -b ./python3.7-sls2/lib/${EPICS_HOST_ARCH}
|
||||
cp examples.py ./python3.7-sls2/lib/${EPICS_HOST_ARCH}
|
||||
+7
-5
@@ -1369,14 +1369,16 @@ print("END cafe.gameSetAndMatch-------------------------------------------------
|
||||
|
||||
|
||||
# Test with attaching context (would do this from another thread)
|
||||
print(cafe.getStatusCodeAsText(cafe.attachContext(1)))
|
||||
print(cafe.getStatusCodeAsText(cafe.attachContext(999999)))
|
||||
#print(cafe.getStatusCodeAsText(cafe.attachContext(1)))
|
||||
#print(cafe.getStatusCodeAsText(cafe.attachContext(999)))
|
||||
|
||||
if (cafe.attachContext(1) == cyca.CY_ECA_ISATTACHED):
|
||||
print(cafe.getStatusCodeAsText(cafe.attachContext(1)))
|
||||
print("TEST: Should be attached",
|
||||
cafe.getStatusCodeAsText(cyca.CY_ECA_ISATTACHED))
|
||||
|
||||
if (cafe.attachContext(99999) == cyca.ECAFE_NULLCONTEXT):
|
||||
print(cafe.getStatusCodeAsText(cafe.attachContext(999)))
|
||||
if (cafe.attachContext(999) == cyca.ECAFE_NULLCONTEXT):
|
||||
print("TEST: Should not be attached",
|
||||
cafe.getStatusCodeAsText(cyca.ECAFE_NULLCONTEXT))
|
||||
|
||||
|
||||
##############################################################
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
source /opt/gfa/python 3.7
|
||||
export PYTHONPATH=/opt/gfa/cafe/python/pycafe/cafe-1.13.0-sls2-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
|
||||
|
||||
|
||||
using PyCall
|
||||
@pyimport PyCafe
|
||||
cafe=PyCafe.CyCafe()
|
||||
cyca=PyCafe.CyCa() #To examine error codes
|
||||
pvdata=cafe.getPV("SATCL01-MQUA120:I-SET")
|
||||
pvdata.show()
|
||||
pvdata.value[1] #Note the indexing in julia starts at 1, as I daresay you will already know
|
||||
pvdata.status # should equal cyca.ICAFE_NORMAL
|
||||
@@ -0,0 +1,62 @@
|
||||
module MyModule
|
||||
|
||||
#First execute the following commands in your console window
|
||||
#export PYTHONPATH=/opt/gfa/cafe/python/pycafe/pyzcafe-1.12.2-gcc-7.3.0
|
||||
|
||||
#Start Julia and change the python version from the default
|
||||
#to Python 3.7.5 as follows:
|
||||
#ENV["PYTHON"] = "/opt/gfa/python-3.7/latest/bin/python"
|
||||
#using Pkg
|
||||
#Pkg.build("PyCall")
|
||||
#You may need to restart Julia
|
||||
|
||||
using PyCall
|
||||
py"""
|
||||
import sys
|
||||
import time
|
||||
import PyCafe
|
||||
cafe = PyCafe.CyCafe()
|
||||
cyca = PyCafe.CyCa()
|
||||
|
||||
print(sys.version) #Should see 3.7.5
|
||||
pvlist = ["SARFE10-PSSS059:SPECTRUM_X", "SATCL01-MQUA120:I-SET","SATCL01-MQUA120:I-READ", "PV-DOES-NOT:EXIST"]
|
||||
|
||||
#Quicker to open all channels with one call
|
||||
cafe.openPrepare()
|
||||
handle=cafe.open(pvlist)
|
||||
cafe.openNowAndWait(0.4)
|
||||
|
||||
|
||||
cafe.setNelem(handle[0], 10) #just read out 10 elements of wf
|
||||
|
||||
pvdata=cafe.getPV(handle[0])
|
||||
print(pvlist[0])
|
||||
pvdata.show() #shows struct
|
||||
if pvdata.status == cyca.ICAFE_NORMAL:
|
||||
print("Value =", pvdata.value)
|
||||
print("TimeStamp =", pvdata.tsDate)
|
||||
|
||||
print(pvlist[1])
|
||||
pvdata=cafe.getPV(handle[1])
|
||||
pvdata.show()
|
||||
pvctrl=cafe.getCtrl(handle[1])
|
||||
pvctrl.show()
|
||||
|
||||
cafe.monitor(handle[2])
|
||||
for i in range (0, 10):
|
||||
val = cafe.getCache(handle[2])
|
||||
print (val)
|
||||
time.sleep(0.25)
|
||||
|
||||
value=cafe.get(handle[3])
|
||||
print(pvlist[3])
|
||||
if value is None:
|
||||
status=cafe.getStatus(handle[3])
|
||||
print("Status =", status, cafe.getStatusCodeAsText(status))
|
||||
|
||||
|
||||
|
||||
"""
|
||||
|
||||
|
||||
end
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
# Jan Chrin
|
||||
#
|
||||
#
|
||||
##### CHANGE AS APPROPRIATE #################
|
||||
#
|
||||
|
||||
|
||||
CAFE_CYCAFE_BASE=/opt/gfa/cafe/python/pycafe
|
||||
INSTALL_PATH_PY= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
|
||||
INSTALL_PATH_SF= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-sf-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
|
||||
INSTALL_PATH_SLS2= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-sls2-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
|
||||
#############################################
|
||||
|
||||
.DEFAULT_GOAL := help
|
||||
.PHONY: clean
|
||||
|
||||
help:
|
||||
@echo "Options for make: install_py37 install_py37_sf install_py37_sls2 install_py35 install_py35_sf"
|
||||
|
||||
install_py37: python3.7/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_PY)
|
||||
cp python3.7/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
|
||||
cp python3.7/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_PY)
|
||||
|
||||
install_py35: python3.5/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_PY)
|
||||
cp python3.5/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
|
||||
|
||||
install_py37_sf: python3.7-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_SF)
|
||||
cp python3.7-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
|
||||
cp python3.7-sf/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SF)
|
||||
|
||||
install_py35_sf: python3.5-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_SF)
|
||||
cp python3.5-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
|
||||
|
||||
install_py37_sls2: python3.7-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_SLS2)
|
||||
cp python3.7-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2)
|
||||
cp python3.7-sls2/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2)
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
#
|
||||
# Jan Chrin
|
||||
#
|
||||
#
|
||||
##### CHANGE AS APPROPRIATE #################
|
||||
#
|
||||
|
||||
|
||||
CAFE_CYCAFE_BASE=/opt/gfa/cafe/python/pycafe
|
||||
INSTALL_PATH_PY= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
|
||||
INSTALL_PATH_SF= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-sf-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
|
||||
INSTALL_PATH_SLS2= $(CAFE_CYCAFE_BASE)/cafe-1.13.0-sls2-gcc-7.3.0/lib/${EPICS_HOST_ARCH}
|
||||
#############################################
|
||||
|
||||
.DEFAULT_GOAL := help
|
||||
.PHONY: clean
|
||||
|
||||
help:
|
||||
@echo "Options for make: install_py37"
|
||||
|
||||
install_py37: python3.7/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_PY)
|
||||
cp python3.7/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
|
||||
cp python3.7/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_PY)
|
||||
|
||||
install_py35: python3.5/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_PY)
|
||||
cp python3.5/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_PY)
|
||||
|
||||
install_py37_sf: python3.7-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_SF)
|
||||
cp python3.7-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
|
||||
cp python3.7-sf/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SF)
|
||||
|
||||
install_py35_sf: python3.5-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_SF)
|
||||
cp python3.5-sf/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-35m-x86_64-linux-gnu.so $(INSTALL_PATH_SF)
|
||||
|
||||
install_py37_sls2: python3.7-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so
|
||||
mkdir -p $(INSTALL_PATH_SLS2)
|
||||
cp python3.7-sls2/lib/${EPICS_HOST_ARCH}/PyCafe.cpython-37m-x86_64-linux-gnu.so $(INSTALL_PATH_SLS2)
|
||||
cp python3.7-sls2/lib/${EPICS_HOST_ARCH}/examples.py $(INSTALL_PATH_SLS2)
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
|
||||
@@ -0,0 +1,371 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- Generated by Cython 0.23.4 -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Cython: python35_header.pxi</title>
|
||||
<style type="text/css">
|
||||
|
||||
body.cython { font-family: courier; font-size: 12; }
|
||||
|
||||
.cython.tag { }
|
||||
.cython.line { margin: 0em }
|
||||
.cython.code { font-size: 9; color: #444444; display: none; margin: 0px 0px 0px 8px; border-left: 8px none; }
|
||||
|
||||
.cython.line .run { background-color: #B0FFB0; }
|
||||
.cython.line .mis { background-color: #FFB0B0; }
|
||||
.cython.code.run { border-left: 8px solid #B0FFB0; }
|
||||
.cython.code.mis { border-left: 8px solid #FFB0B0; }
|
||||
|
||||
.cython.code .py_c_api { color: red; }
|
||||
.cython.code .py_macro_api { color: #FF7000; }
|
||||
.cython.code .pyx_c_api { color: #FF3000; }
|
||||
.cython.code .pyx_macro_api { color: #FF7000; }
|
||||
.cython.code .refnanny { color: #FFA000; }
|
||||
.cython.code .trace { color: #FFA000; }
|
||||
.cython.code .error_goto { color: #FFA000; }
|
||||
|
||||
.cython.code .coerce { color: #008000; border: 1px dotted #008000 }
|
||||
.cython.code .py_attr { color: #FF0000; font-weight: bold; }
|
||||
.cython.code .c_attr { color: #0000FF; }
|
||||
.cython.code .py_call { color: #FF0000; font-weight: bold; }
|
||||
.cython.code .c_call { color: #0000FF; }
|
||||
|
||||
.cython.score-0 {background-color: #FFFFff;}
|
||||
.cython.score-1 {background-color: #FFFFe7;}
|
||||
.cython.score-2 {background-color: #FFFFd4;}
|
||||
.cython.score-3 {background-color: #FFFFc4;}
|
||||
.cython.score-4 {background-color: #FFFFb6;}
|
||||
.cython.score-5 {background-color: #FFFFaa;}
|
||||
.cython.score-6 {background-color: #FFFF9f;}
|
||||
.cython.score-7 {background-color: #FFFF96;}
|
||||
.cython.score-8 {background-color: #FFFF8d;}
|
||||
.cython.score-9 {background-color: #FFFF86;}
|
||||
.cython.score-10 {background-color: #FFFF7f;}
|
||||
.cython.score-11 {background-color: #FFFF79;}
|
||||
.cython.score-12 {background-color: #FFFF73;}
|
||||
.cython.score-13 {background-color: #FFFF6e;}
|
||||
.cython.score-14 {background-color: #FFFF6a;}
|
||||
.cython.score-15 {background-color: #FFFF66;}
|
||||
.cython.score-16 {background-color: #FFFF62;}
|
||||
.cython.score-17 {background-color: #FFFF5e;}
|
||||
.cython.score-18 {background-color: #FFFF5b;}
|
||||
.cython.score-19 {background-color: #FFFF57;}
|
||||
.cython.score-20 {background-color: #FFFF55;}
|
||||
.cython.score-21 {background-color: #FFFF52;}
|
||||
.cython.score-22 {background-color: #FFFF4f;}
|
||||
.cython.score-23 {background-color: #FFFF4d;}
|
||||
.cython.score-24 {background-color: #FFFF4b;}
|
||||
.cython.score-25 {background-color: #FFFF48;}
|
||||
.cython.score-26 {background-color: #FFFF46;}
|
||||
.cython.score-27 {background-color: #FFFF44;}
|
||||
.cython.score-28 {background-color: #FFFF43;}
|
||||
.cython.score-29 {background-color: #FFFF41;}
|
||||
.cython.score-30 {background-color: #FFFF3f;}
|
||||
.cython.score-31 {background-color: #FFFF3e;}
|
||||
.cython.score-32 {background-color: #FFFF3c;}
|
||||
.cython.score-33 {background-color: #FFFF3b;}
|
||||
.cython.score-34 {background-color: #FFFF39;}
|
||||
.cython.score-35 {background-color: #FFFF38;}
|
||||
.cython.score-36 {background-color: #FFFF37;}
|
||||
.cython.score-37 {background-color: #FFFF36;}
|
||||
.cython.score-38 {background-color: #FFFF35;}
|
||||
.cython.score-39 {background-color: #FFFF34;}
|
||||
.cython.score-40 {background-color: #FFFF33;}
|
||||
.cython.score-41 {background-color: #FFFF32;}
|
||||
.cython.score-42 {background-color: #FFFF31;}
|
||||
.cython.score-43 {background-color: #FFFF30;}
|
||||
.cython.score-44 {background-color: #FFFF2f;}
|
||||
.cython.score-45 {background-color: #FFFF2e;}
|
||||
.cython.score-46 {background-color: #FFFF2d;}
|
||||
.cython.score-47 {background-color: #FFFF2c;}
|
||||
.cython.score-48 {background-color: #FFFF2b;}
|
||||
.cython.score-49 {background-color: #FFFF2b;}
|
||||
.cython.score-50 {background-color: #FFFF2a;}
|
||||
.cython.score-51 {background-color: #FFFF29;}
|
||||
.cython.score-52 {background-color: #FFFF29;}
|
||||
.cython.score-53 {background-color: #FFFF28;}
|
||||
.cython.score-54 {background-color: #FFFF27;}
|
||||
.cython.score-55 {background-color: #FFFF27;}
|
||||
.cython.score-56 {background-color: #FFFF26;}
|
||||
.cython.score-57 {background-color: #FFFF26;}
|
||||
.cython.score-58 {background-color: #FFFF25;}
|
||||
.cython.score-59 {background-color: #FFFF24;}
|
||||
.cython.score-60 {background-color: #FFFF24;}
|
||||
.cython.score-61 {background-color: #FFFF23;}
|
||||
.cython.score-62 {background-color: #FFFF23;}
|
||||
.cython.score-63 {background-color: #FFFF22;}
|
||||
.cython.score-64 {background-color: #FFFF22;}
|
||||
.cython.score-65 {background-color: #FFFF22;}
|
||||
.cython.score-66 {background-color: #FFFF21;}
|
||||
.cython.score-67 {background-color: #FFFF21;}
|
||||
.cython.score-68 {background-color: #FFFF20;}
|
||||
.cython.score-69 {background-color: #FFFF20;}
|
||||
.cython.score-70 {background-color: #FFFF1f;}
|
||||
.cython.score-71 {background-color: #FFFF1f;}
|
||||
.cython.score-72 {background-color: #FFFF1f;}
|
||||
.cython.score-73 {background-color: #FFFF1e;}
|
||||
.cython.score-74 {background-color: #FFFF1e;}
|
||||
.cython.score-75 {background-color: #FFFF1e;}
|
||||
.cython.score-76 {background-color: #FFFF1d;}
|
||||
.cython.score-77 {background-color: #FFFF1d;}
|
||||
.cython.score-78 {background-color: #FFFF1c;}
|
||||
.cython.score-79 {background-color: #FFFF1c;}
|
||||
.cython.score-80 {background-color: #FFFF1c;}
|
||||
.cython.score-81 {background-color: #FFFF1c;}
|
||||
.cython.score-82 {background-color: #FFFF1b;}
|
||||
.cython.score-83 {background-color: #FFFF1b;}
|
||||
.cython.score-84 {background-color: #FFFF1b;}
|
||||
.cython.score-85 {background-color: #FFFF1a;}
|
||||
.cython.score-86 {background-color: #FFFF1a;}
|
||||
.cython.score-87 {background-color: #FFFF1a;}
|
||||
.cython.score-88 {background-color: #FFFF1a;}
|
||||
.cython.score-89 {background-color: #FFFF19;}
|
||||
.cython.score-90 {background-color: #FFFF19;}
|
||||
.cython.score-91 {background-color: #FFFF19;}
|
||||
.cython.score-92 {background-color: #FFFF19;}
|
||||
.cython.score-93 {background-color: #FFFF18;}
|
||||
.cython.score-94 {background-color: #FFFF18;}
|
||||
.cython.score-95 {background-color: #FFFF18;}
|
||||
.cython.score-96 {background-color: #FFFF18;}
|
||||
.cython.score-97 {background-color: #FFFF17;}
|
||||
.cython.score-98 {background-color: #FFFF17;}
|
||||
.cython.score-99 {background-color: #FFFF17;}
|
||||
.cython.score-100 {background-color: #FFFF17;}
|
||||
.cython.score-101 {background-color: #FFFF16;}
|
||||
.cython.score-102 {background-color: #FFFF16;}
|
||||
.cython.score-103 {background-color: #FFFF16;}
|
||||
.cython.score-104 {background-color: #FFFF16;}
|
||||
.cython.score-105 {background-color: #FFFF16;}
|
||||
.cython.score-106 {background-color: #FFFF15;}
|
||||
.cython.score-107 {background-color: #FFFF15;}
|
||||
.cython.score-108 {background-color: #FFFF15;}
|
||||
.cython.score-109 {background-color: #FFFF15;}
|
||||
.cython.score-110 {background-color: #FFFF15;}
|
||||
.cython.score-111 {background-color: #FFFF15;}
|
||||
.cython.score-112 {background-color: #FFFF14;}
|
||||
.cython.score-113 {background-color: #FFFF14;}
|
||||
.cython.score-114 {background-color: #FFFF14;}
|
||||
.cython.score-115 {background-color: #FFFF14;}
|
||||
.cython.score-116 {background-color: #FFFF14;}
|
||||
.cython.score-117 {background-color: #FFFF14;}
|
||||
.cython.score-118 {background-color: #FFFF13;}
|
||||
.cython.score-119 {background-color: #FFFF13;}
|
||||
.cython.score-120 {background-color: #FFFF13;}
|
||||
.cython.score-121 {background-color: #FFFF13;}
|
||||
.cython.score-122 {background-color: #FFFF13;}
|
||||
.cython.score-123 {background-color: #FFFF13;}
|
||||
.cython.score-124 {background-color: #FFFF13;}
|
||||
.cython.score-125 {background-color: #FFFF12;}
|
||||
.cython.score-126 {background-color: #FFFF12;}
|
||||
.cython.score-127 {background-color: #FFFF12;}
|
||||
.cython.score-128 {background-color: #FFFF12;}
|
||||
.cython.score-129 {background-color: #FFFF12;}
|
||||
.cython.score-130 {background-color: #FFFF12;}
|
||||
.cython.score-131 {background-color: #FFFF12;}
|
||||
.cython.score-132 {background-color: #FFFF11;}
|
||||
.cython.score-133 {background-color: #FFFF11;}
|
||||
.cython.score-134 {background-color: #FFFF11;}
|
||||
.cython.score-135 {background-color: #FFFF11;}
|
||||
.cython.score-136 {background-color: #FFFF11;}
|
||||
.cython.score-137 {background-color: #FFFF11;}
|
||||
.cython.score-138 {background-color: #FFFF11;}
|
||||
.cython.score-139 {background-color: #FFFF11;}
|
||||
.cython.score-140 {background-color: #FFFF11;}
|
||||
.cython.score-141 {background-color: #FFFF10;}
|
||||
.cython.score-142 {background-color: #FFFF10;}
|
||||
.cython.score-143 {background-color: #FFFF10;}
|
||||
.cython.score-144 {background-color: #FFFF10;}
|
||||
.cython.score-145 {background-color: #FFFF10;}
|
||||
.cython.score-146 {background-color: #FFFF10;}
|
||||
.cython.score-147 {background-color: #FFFF10;}
|
||||
.cython.score-148 {background-color: #FFFF10;}
|
||||
.cython.score-149 {background-color: #FFFF10;}
|
||||
.cython.score-150 {background-color: #FFFF0f;}
|
||||
.cython.score-151 {background-color: #FFFF0f;}
|
||||
.cython.score-152 {background-color: #FFFF0f;}
|
||||
.cython.score-153 {background-color: #FFFF0f;}
|
||||
.cython.score-154 {background-color: #FFFF0f;}
|
||||
.cython.score-155 {background-color: #FFFF0f;}
|
||||
.cython.score-156 {background-color: #FFFF0f;}
|
||||
.cython.score-157 {background-color: #FFFF0f;}
|
||||
.cython.score-158 {background-color: #FFFF0f;}
|
||||
.cython.score-159 {background-color: #FFFF0f;}
|
||||
.cython.score-160 {background-color: #FFFF0f;}
|
||||
.cython.score-161 {background-color: #FFFF0e;}
|
||||
.cython.score-162 {background-color: #FFFF0e;}
|
||||
.cython.score-163 {background-color: #FFFF0e;}
|
||||
.cython.score-164 {background-color: #FFFF0e;}
|
||||
.cython.score-165 {background-color: #FFFF0e;}
|
||||
.cython.score-166 {background-color: #FFFF0e;}
|
||||
.cython.score-167 {background-color: #FFFF0e;}
|
||||
.cython.score-168 {background-color: #FFFF0e;}
|
||||
.cython.score-169 {background-color: #FFFF0e;}
|
||||
.cython.score-170 {background-color: #FFFF0e;}
|
||||
.cython.score-171 {background-color: #FFFF0e;}
|
||||
.cython.score-172 {background-color: #FFFF0e;}
|
||||
.cython.score-173 {background-color: #FFFF0d;}
|
||||
.cython.score-174 {background-color: #FFFF0d;}
|
||||
.cython.score-175 {background-color: #FFFF0d;}
|
||||
.cython.score-176 {background-color: #FFFF0d;}
|
||||
.cython.score-177 {background-color: #FFFF0d;}
|
||||
.cython.score-178 {background-color: #FFFF0d;}
|
||||
.cython.score-179 {background-color: #FFFF0d;}
|
||||
.cython.score-180 {background-color: #FFFF0d;}
|
||||
.cython.score-181 {background-color: #FFFF0d;}
|
||||
.cython.score-182 {background-color: #FFFF0d;}
|
||||
.cython.score-183 {background-color: #FFFF0d;}
|
||||
.cython.score-184 {background-color: #FFFF0d;}
|
||||
.cython.score-185 {background-color: #FFFF0d;}
|
||||
.cython.score-186 {background-color: #FFFF0d;}
|
||||
.cython.score-187 {background-color: #FFFF0c;}
|
||||
.cython.score-188 {background-color: #FFFF0c;}
|
||||
.cython.score-189 {background-color: #FFFF0c;}
|
||||
.cython.score-190 {background-color: #FFFF0c;}
|
||||
.cython.score-191 {background-color: #FFFF0c;}
|
||||
.cython.score-192 {background-color: #FFFF0c;}
|
||||
.cython.score-193 {background-color: #FFFF0c;}
|
||||
.cython.score-194 {background-color: #FFFF0c;}
|
||||
.cython.score-195 {background-color: #FFFF0c;}
|
||||
.cython.score-196 {background-color: #FFFF0c;}
|
||||
.cython.score-197 {background-color: #FFFF0c;}
|
||||
.cython.score-198 {background-color: #FFFF0c;}
|
||||
.cython.score-199 {background-color: #FFFF0c;}
|
||||
.cython.score-200 {background-color: #FFFF0c;}
|
||||
.cython.score-201 {background-color: #FFFF0c;}
|
||||
.cython.score-202 {background-color: #FFFF0c;}
|
||||
.cython.score-203 {background-color: #FFFF0b;}
|
||||
.cython.score-204 {background-color: #FFFF0b;}
|
||||
.cython.score-205 {background-color: #FFFF0b;}
|
||||
.cython.score-206 {background-color: #FFFF0b;}
|
||||
.cython.score-207 {background-color: #FFFF0b;}
|
||||
.cython.score-208 {background-color: #FFFF0b;}
|
||||
.cython.score-209 {background-color: #FFFF0b;}
|
||||
.cython.score-210 {background-color: #FFFF0b;}
|
||||
.cython.score-211 {background-color: #FFFF0b;}
|
||||
.cython.score-212 {background-color: #FFFF0b;}
|
||||
.cython.score-213 {background-color: #FFFF0b;}
|
||||
.cython.score-214 {background-color: #FFFF0b;}
|
||||
.cython.score-215 {background-color: #FFFF0b;}
|
||||
.cython.score-216 {background-color: #FFFF0b;}
|
||||
.cython.score-217 {background-color: #FFFF0b;}
|
||||
.cython.score-218 {background-color: #FFFF0b;}
|
||||
.cython.score-219 {background-color: #FFFF0b;}
|
||||
.cython.score-220 {background-color: #FFFF0b;}
|
||||
.cython.score-221 {background-color: #FFFF0b;}
|
||||
.cython.score-222 {background-color: #FFFF0a;}
|
||||
.cython.score-223 {background-color: #FFFF0a;}
|
||||
.cython.score-224 {background-color: #FFFF0a;}
|
||||
.cython.score-225 {background-color: #FFFF0a;}
|
||||
.cython.score-226 {background-color: #FFFF0a;}
|
||||
.cython.score-227 {background-color: #FFFF0a;}
|
||||
.cython.score-228 {background-color: #FFFF0a;}
|
||||
.cython.score-229 {background-color: #FFFF0a;}
|
||||
.cython.score-230 {background-color: #FFFF0a;}
|
||||
.cython.score-231 {background-color: #FFFF0a;}
|
||||
.cython.score-232 {background-color: #FFFF0a;}
|
||||
.cython.score-233 {background-color: #FFFF0a;}
|
||||
.cython.score-234 {background-color: #FFFF0a;}
|
||||
.cython.score-235 {background-color: #FFFF0a;}
|
||||
.cython.score-236 {background-color: #FFFF0a;}
|
||||
.cython.score-237 {background-color: #FFFF0a;}
|
||||
.cython.score-238 {background-color: #FFFF0a;}
|
||||
.cython.score-239 {background-color: #FFFF0a;}
|
||||
.cython.score-240 {background-color: #FFFF0a;}
|
||||
.cython.score-241 {background-color: #FFFF0a;}
|
||||
.cython.score-242 {background-color: #FFFF0a;}
|
||||
.cython.score-243 {background-color: #FFFF0a;}
|
||||
.cython.score-244 {background-color: #FFFF0a;}
|
||||
.cython.score-245 {background-color: #FFFF0a;}
|
||||
.cython.score-246 {background-color: #FFFF09;}
|
||||
.cython.score-247 {background-color: #FFFF09;}
|
||||
.cython.score-248 {background-color: #FFFF09;}
|
||||
.cython.score-249 {background-color: #FFFF09;}
|
||||
.cython.score-250 {background-color: #FFFF09;}
|
||||
.cython.score-251 {background-color: #FFFF09;}
|
||||
.cython.score-252 {background-color: #FFFF09;}
|
||||
.cython.score-253 {background-color: #FFFF09;}
|
||||
.cython.score-254 {background-color: #FFFF09;}
|
||||
.cython .hll { background-color: #ffffcc }
|
||||
.cython { background: #f8f8f8; }
|
||||
.cython .c { color: #408080; font-style: italic } /* Comment */
|
||||
.cython .err { border: 1px solid #FF0000 } /* Error */
|
||||
.cython .k { color: #008000; font-weight: bold } /* Keyword */
|
||||
.cython .o { color: #666666 } /* Operator */
|
||||
.cython .cm { color: #408080; font-style: italic } /* Comment.Multiline */
|
||||
.cython .cp { color: #BC7A00 } /* Comment.Preproc */
|
||||
.cython .c1 { color: #408080; font-style: italic } /* Comment.Single */
|
||||
.cython .cs { color: #408080; font-style: italic } /* Comment.Special */
|
||||
.cython .gd { color: #A00000 } /* Generic.Deleted */
|
||||
.cython .ge { font-style: italic } /* Generic.Emph */
|
||||
.cython .gr { color: #FF0000 } /* Generic.Error */
|
||||
.cython .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||
.cython .gi { color: #00A000 } /* Generic.Inserted */
|
||||
.cython .go { color: #888888 } /* Generic.Output */
|
||||
.cython .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
|
||||
.cython .gs { font-weight: bold } /* Generic.Strong */
|
||||
.cython .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||
.cython .gt { color: #0044DD } /* Generic.Traceback */
|
||||
.cython .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
|
||||
.cython .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
|
||||
.cython .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
|
||||
.cython .kp { color: #008000 } /* Keyword.Pseudo */
|
||||
.cython .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
|
||||
.cython .kt { color: #B00040 } /* Keyword.Type */
|
||||
.cython .m { color: #666666 } /* Literal.Number */
|
||||
.cython .s { color: #BA2121 } /* Literal.String */
|
||||
.cython .na { color: #7D9029 } /* Name.Attribute */
|
||||
.cython .nb { color: #008000 } /* Name.Builtin */
|
||||
.cython .nc { color: #0000FF; font-weight: bold } /* Name.Class */
|
||||
.cython .no { color: #880000 } /* Name.Constant */
|
||||
.cython .nd { color: #AA22FF } /* Name.Decorator */
|
||||
.cython .ni { color: #999999; font-weight: bold } /* Name.Entity */
|
||||
.cython .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
|
||||
.cython .nf { color: #0000FF } /* Name.Function */
|
||||
.cython .nl { color: #A0A000 } /* Name.Label */
|
||||
.cython .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
|
||||
.cython .nt { color: #008000; font-weight: bold } /* Name.Tag */
|
||||
.cython .nv { color: #19177C } /* Name.Variable */
|
||||
.cython .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
|
||||
.cython .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.cython .mb { color: #666666 } /* Literal.Number.Bin */
|
||||
.cython .mf { color: #666666 } /* Literal.Number.Float */
|
||||
.cython .mh { color: #666666 } /* Literal.Number.Hex */
|
||||
.cython .mi { color: #666666 } /* Literal.Number.Integer */
|
||||
.cython .mo { color: #666666 } /* Literal.Number.Oct */
|
||||
.cython .sb { color: #BA2121 } /* Literal.String.Backtick */
|
||||
.cython .sc { color: #BA2121 } /* Literal.String.Char */
|
||||
.cython .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
|
||||
.cython .s2 { color: #BA2121 } /* Literal.String.Double */
|
||||
.cython .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
|
||||
.cython .sh { color: #BA2121 } /* Literal.String.Heredoc */
|
||||
.cython .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
|
||||
.cython .sx { color: #008000 } /* Literal.String.Other */
|
||||
.cython .sr { color: #BB6688 } /* Literal.String.Regex */
|
||||
.cython .s1 { color: #BA2121 } /* Literal.String.Single */
|
||||
.cython .ss { color: #19177C } /* Literal.String.Symbol */
|
||||
.cython .bp { color: #008000 } /* Name.Builtin.Pseudo */
|
||||
.cython .vc { color: #19177C } /* Name.Variable.Class */
|
||||
.cython .vg { color: #19177C } /* Name.Variable.Global */
|
||||
.cython .vi { color: #19177C } /* Name.Variable.Instance */
|
||||
.cython .il { color: #666666 } /* Literal.Number.Integer.Long */
|
||||
</style>
|
||||
<script>
|
||||
function toggleDiv(id) {
|
||||
theDiv = id.nextElementSibling
|
||||
if (theDiv.style.display != 'block') theDiv.style.display = 'block';
|
||||
else theDiv.style.display = 'none';
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body class="cython">
|
||||
<p><span style="border-bottom: solid 1px grey;">Generated by Cython 0.23.4</span></p>
|
||||
<p>
|
||||
<span style="background-color: #FFFF00">Yellow lines</span> hint at Python interaction.<br />
|
||||
Click on a line that starts with a "<code>+</code>" to see the C code that Cython generated for it.
|
||||
</p>
|
||||
<p>Raw output: <a href="python35_header.pxi">python35_header.pxi</a></p>
|
||||
<div class="cython"><pre class="cython line score-0"> <span class="">1</span>: <span class="k">cdef</span> <span class="kr">extern</span> <span class="k">from</span> <span class="s">"Python.h"</span><span class="p">:</span></pre>
|
||||
<pre class="cython line score-0"> <span class="">2</span>: <span class="k">ctypedef</span> <span class="n">extern</span> <span class="k">class</span> <span class="nc">builtins</span><span class="o">.</span><span class="n">Exception</span><span class="p">[</span><span class="nb">object</span> <span class="n">PyBaseExceptionObject</span><span class="p">]:</span></pre>
|
||||
<pre class="cython line score-0"> <span class="">3</span>: <span class="k">pass</span></pre>
|
||||
</div></body></html>
|
||||
@@ -0,0 +1,42 @@
|
||||
import sys
|
||||
from distutils.core import setup
|
||||
from distutils.extension import Extension
|
||||
from Cython.Compiler.Main import default_options
|
||||
default_options['emit_linenums'] = True
|
||||
from Cython.Build import cythonize
|
||||
from numpy import get_include
|
||||
|
||||
#runtime_library_dirs do not override LD_LIBRARY_PATH!
|
||||
|
||||
setup(
|
||||
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],
|
||||
language="c++",
|
||||
include_dirs=[ '/opt/gfa/python-3.5/latest/include/python3.5m',
|
||||
'/usr/local/epics/base/include',
|
||||
'/usr/local/epics/base/include/os/Linux',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include/boost',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-py35-gcc-7.3.0/include',
|
||||
'.', get_include()],
|
||||
library_dirs=[ '/usr/local/epics/base/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-py35-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/python-3.5/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
runtime_library_dirs=['/usr/local/epics/base/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-py35-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/python-3.5/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
libraries=['ca','Com','dl','cafe'])
|
||||
], annotate=True,
|
||||
compiler_directives={'embedsignature': False, 'language_level': 3,
|
||||
'c_string_type': 'str', 'c_string_encoding' : 'ascii',
|
||||
'py2_import': False, 'warn.unreachable': False,
|
||||
'remove_unreachable': False},
|
||||
compile_time_env={'PY_VERSION_HEX':sys.hexversion,
|
||||
'PY_EXT_C': True}
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,50 @@
|
||||
import sys
|
||||
from distutils.core import setup
|
||||
from distutils.extension import Extension
|
||||
from Cython.Compiler.Main import default_options
|
||||
default_options['emit_linenums'] = True
|
||||
from Cython.Build import cythonize
|
||||
from numpy import get_include
|
||||
|
||||
setup(
|
||||
ext_modules = cythonize([Extension('PyCafe',['PyCafe_sf.pyx'],
|
||||
language="c++",
|
||||
include_dirs=[ '/opt/gfa/python-3.5/latest/include/python3.5m',
|
||||
'/usr/local/epics/base/include',
|
||||
'/usr/local/epics/base/include/os/Linux',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include/boost',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-sf-py35-gcc-7.3.0/include',
|
||||
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/include',
|
||||
'/opt/gfa/zmq/curl-7.54.1/include',
|
||||
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/include',
|
||||
'.', get_include()],
|
||||
library_dirs=[ '/usr/local/epics/base/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-sf-py35-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
|
||||
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
|
||||
'/opt/gfa/zmq/curl-7.54.1/lib',
|
||||
'/opt/gfa/python-3.5/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
runtime_library_dirs=[
|
||||
'/usr/local/epics/base/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-sf-py35-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
|
||||
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
|
||||
'/opt/gfa/zmq/curl-7.54.1/lib',
|
||||
'/opt/gfa/python-3.5/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
libraries=['ca','Com','dl','cafe'])
|
||||
], annotate=True,
|
||||
compiler_directives={'embedsignature': False, 'language_level': 3,
|
||||
'c_string_type': 'str', 'c_string_encoding' : 'ascii',
|
||||
'py2_import': False, 'warn.unreachable': False,
|
||||
'remove_unreachable': False},
|
||||
compile_time_env={'PY_VERSION_HEX':sys.hexversion,
|
||||
'PY_EXT_C': True, 'BS_CAFE': True }
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,42 @@
|
||||
import sys
|
||||
from distutils.core import setup
|
||||
from distutils.extension import Extension
|
||||
from Cython.Compiler.Main import default_options
|
||||
default_options['emit_linenums'] = True
|
||||
from Cython.Build import cythonize
|
||||
from numpy import get_include
|
||||
|
||||
#runtime_library_dirs do not override LD_LIBRARY_PATH!
|
||||
|
||||
setup(
|
||||
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],
|
||||
language="c++",
|
||||
include_dirs=[ '/opt/gfa/python-3.7/latest/include/python3.7m',
|
||||
'/usr/local/epics/base/include',
|
||||
'/usr/local/epics/base/include/os/Linux',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include/boost',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-py37-gcc-7.3.0/include',
|
||||
'.', get_include()],
|
||||
library_dirs=[ '/usr/local/epics/base/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-py37-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/python-3.7/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
runtime_library_dirs=['/usr/local/epics/base/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-py37-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/python-3.7/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
libraries=['ca','Com','dl','cafe'])
|
||||
], annotate=True,
|
||||
compiler_directives={'embedsignature': False, 'language_level': 3,
|
||||
'c_string_type': 'str', 'c_string_encoding' : 'ascii',
|
||||
'py2_import': False, 'warn.unreachable': False,
|
||||
'remove_unreachable': False},
|
||||
compile_time_env={'PY_VERSION_HEX':sys.hexversion,
|
||||
'PY_EXT_C': True}
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,50 @@
|
||||
import sys
|
||||
from distutils.core import setup
|
||||
from distutils.extension import Extension
|
||||
from Cython.Compiler.Main import default_options
|
||||
default_options['emit_linenums'] = True
|
||||
from Cython.Build import cythonize
|
||||
from numpy import get_include
|
||||
|
||||
setup(
|
||||
ext_modules = cythonize([Extension('PyCafe',['PyCafe_sf.pyx'],
|
||||
language="c++",
|
||||
include_dirs=[ '/opt/gfa/python-3.7/latest/include/python3.7m',
|
||||
'/usr/local/epics/base/include',
|
||||
'/usr/local/epics/base/include/os/Linux',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include/boost',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-sf-py37-gcc-7.3.0/include',
|
||||
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/include',
|
||||
'/opt/gfa/zmq/curl-7.54.1/include',
|
||||
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/include',
|
||||
'.', get_include()],
|
||||
library_dirs=[ '/usr/local/epics/base/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-sf-py37-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
|
||||
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
|
||||
'/opt/gfa/zmq/curl-7.54.1/lib',
|
||||
'/opt/gfa/python-3.7/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
runtime_library_dirs=[
|
||||
'/usr/local/epics/base/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-sf-py37-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
|
||||
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
|
||||
'/opt/gfa/zmq/curl-7.54.1/lib',
|
||||
'/opt/gfa/python-3.7/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
libraries=['ca','Com','dl','cafe'])
|
||||
], annotate=True,
|
||||
compiler_directives={'embedsignature': False, 'language_level': 3,
|
||||
'c_string_type': 'str', 'c_string_encoding' : 'ascii',
|
||||
'py2_import': False, 'warn.unreachable': False,
|
||||
'remove_unreachable': False},
|
||||
compile_time_env={'PY_VERSION_HEX':sys.hexversion,
|
||||
'PY_EXT_C': True, 'BS_CAFE': True }
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,51 @@
|
||||
import sys
|
||||
from distutils.core import setup
|
||||
from distutils.extension import Extension
|
||||
from Cython.Compiler.Main import default_options
|
||||
default_options['emit_linenums'] = True
|
||||
from Cython.Build import cythonize
|
||||
from numpy import get_include
|
||||
|
||||
setup(
|
||||
ext_modules = cythonize([Extension('PyCafe',['PyCafe.pyx'],
|
||||
language="c++",
|
||||
include_dirs=[ '/opt/gfa/python-3.7/latest/include/python3.7m',
|
||||
'/usr/local/epics/base-7.0.4.1/include',
|
||||
'/usr/local/epics/base-7.0.4.1/include/os/Linux',
|
||||
'/usr/local/epics/base-7.0.4.1/include/compiler/gcc',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include',
|
||||
'/opt/gfa/cafe/boost/boost_1_61_0/include/boost',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-sls2-py37-gcc-7.3.0/include',
|
||||
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/include',
|
||||
'/opt/gfa/zmq/curl-7.54.1/include',
|
||||
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/include',
|
||||
'.', get_include()],
|
||||
library_dirs=[ '/usr/local/epics/base-7.0.4.1/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-sls2-py37-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
|
||||
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
|
||||
'/opt/gfa/zmq/curl-7.54.1/lib',
|
||||
'/opt/gfa/python-3.7/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
runtime_library_dirs=[
|
||||
'/usr/local/epics/base-7.0.4.1/lib/SL6-x86_64',
|
||||
'/opt/gfa/cafe/cpp/cafe-1.13.0-sls2-py37-gcc-7.3.0/lib/SL6-x86_64',
|
||||
'/opt/gfa/zmq/zeromq-4.2.3-gcc-6.3.0/lib',
|
||||
'/opt/gfa/zmsglog/json/jsoncpp-src-0.6.0-rc2/libs/linux-gcc-6.3.0',
|
||||
'/opt/gfa/zmq/curl-7.54.1/lib',
|
||||
'/opt/gfa/python-3.7/latest/lib',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib64',
|
||||
'/afs/psi.ch/sys/psi.x86_64_slp6/Programming/gcc/7.3.0/lib'
|
||||
],
|
||||
libraries=['ca','Com','dl','cafe'])
|
||||
], annotate=True,
|
||||
compiler_directives={'embedsignature': False, 'language_level': 3,
|
||||
'c_string_type': 'str', 'c_string_encoding' : 'ascii',
|
||||
'py2_import': False, 'warn.unreachable': False,
|
||||
'remove_unreachable': False},
|
||||
compile_time_env={'PY_VERSION_HEX':sys.hexversion,
|
||||
'PY_EXT_C': True, 'BS_CAFE': False }
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user