Skip to content
Snippets Groups Projects
Unverified Commit 97f713ab authored by Giuseppe Carboni's avatar Giuseppe Carboni Committed by GitHub
Browse files

Integration of new SRT LDO derotators into centos_7_compatibility branch (#925)

* Moved some method from GenericDerotator to SRTKBandDerotator

The methods were not generic, they were specific methods of the old SRTKBandDerotator decommissioned interface.
These methods are not even called by the DewarPositioner component, therefore it was safe to remove them from the GenericDerotator interface.

* Moved another unused method

* Updated GenericDerotator interface

* Fix #865, fix #869, updated SRTMinorServo component

The component now handles correctly a SETUP command.
The component is also capable of commanding the gregorian air blade with the 'setGregorianAirBladeStatus' command.
A few bugs were fixed here and there.
This branch MUST be tested with the real hardware before merging it onto the centos_7_compatibility branch.

* Fixed small bug

* Removed redundant script

* Uploading files in order to test a clean repository

* Updated PyDewarPositioner for Python 3

* First LDO Derotators working implementation

This commit also brings some clean up inside the SRT test CDB.
All the stuff that is not used in the production environment has been moved out of the production and test environment and into the Outdated CDB.

* KBand derotator updates

* Moved SRTDerotators out of SRTMinorServoBossCore

Each derotator now has its thread for updating its status
parent e311ab51
No related branches found
No related tags found
No related merge requests found
Showing
with 239 additions and 522 deletions
......@@ -43,10 +43,7 @@ module Receivers {
* <h3>Methods</h3>:
* <ul>
* <li>setup(): allow the derotator to be ready to move</li>
* <li>powerOff(): switch the power amplifier off </li>
* <li>setPosition(): set the derotator position</li>
* <li>setSpeed(): set the derotator speed, in rpm</li>
* <li>getSpeed(): get the derotator speed, in rpm</li>
* <li>getActPosition(): return the actPosition value</li>
* <li>getCmdPosition(): return the cmdPosition value</li>
* <li>getPositionFromHistory(t): return the the derotator position at
......@@ -61,7 +58,8 @@ module Receivers {
* <li>isSlewing(): return true when the derotator is moving</li>
* </ul>
*/
interface GenericDerotator : ACS::CharacteristicComponent {
interface GenericDerotator
{
/**
* This property returns the sensor encoder position in the user
......@@ -125,14 +123,6 @@ module Receivers {
);
/** Switch the power amplifier off
*
* @throw CORBA::SystemException
* @throw ComponentErrors::ComponentErrorsEx
*/
void powerOff() raises (ComponentErrors::ComponentErrorsEx);
/**
* @return the actPosition property value
*
......@@ -147,6 +137,17 @@ module Receivers {
);
/**
* This method loads a position that has to be tracked by the derotator
* @param point_time an ACS::Time object indicating the time associated with the coordinates to be tracked.
* Only the start time is sent to the derotator and the points after are always spaced by the same amount of time from one another.
* It is still necessary to fill this field in order to associate a time to the coordinates inside the component.
* @param position the position to track at the given time
* @param restart flag that says the given point is the first of a new trajectory
*/
void loadTrackingPoint(in ACS::Time point_time, in double position, in boolean restart) raises (DerotatorErrors::DerotatorErrorsEx);
/**
* @return the cmdPosition property value
*
......@@ -178,32 +179,6 @@ module Receivers {
double getPositionFromHistory(in ACS::Time t) raises (ComponentErrors::ComponentErrorsEx);
/**
* Set the derotator speed
*
* @arg speed speed in rpm
* @throw ComponentErrors::ComponentErrorsEx,
* @throw DerotatorErrors::DerotatorErrorsEx
*/
void setSpeed(in unsigned long speed) raises (
ComponentErrors::ComponentErrorsEx,
DerotatorErrors::DerotatorErrorsEx
);
/**
* Get the derotator speed
*
* @return the derotator speed in rpm
* @throw ComponentErrors::ComponentErrorsEx,
* @throw DerotatorErrors::DerotatorErrorsEx
*/
unsigned long getSpeed() raises (
ComponentErrors::ComponentErrorsEx,
DerotatorErrors::DerotatorErrorsEx
);
/**
* Return the maximum position value allowed.
* @throw CORBA::SystemException
......
......@@ -25,6 +25,7 @@
<!--xs:attribute name="actionThreadStackSize" type="xs:unsignedLong" use="optional" default="1024" />
<xs:attribute name="monitoringThreadStackSize" type="xs:unsignedLong" use="optional" default="2048" /-->
<xs:attribute name="UpdatingTime" type="xs:double" use="required" />
<xs:attribute name="TrackingLeadTime" type="xs:double" use="required" />
<xs:attribute name="RewindingSleepTime" type="xs:double" use="required" />
<xs:attribute name="RewindingTimeout" type="xs:double" use="required" />
<xs:attribute name="DefaultConfiguration" type="xs:string" use="required" />
......
......@@ -11,6 +11,7 @@ class CDBConf(object):
componentAttributes = (
'UpdatingTime',
'TrackingLeadTime',
'RewindingSleepTime',
'RewindingTimeout',
'DefaultConfiguration',
......
"""This module implements the position generators"""
"""This module implements the position calculation functions"""
import datetime
import time
from math import sin, cos, tan, atan2, degrees
from math import sin, cos, tan, atan2, degrees, isclose
from IRAPy import logger
from Acspy.Common.TimeHelper import getTimeStamp
class PosGenerator(object):
def __init__(self, zdtimeout=5):
self.zdtimeout = zdtimeout # Timeout in case of zero division error
def __init__(self, updatingTime, trackingLeadTime):
self.updatingTime = updatingTime
self.trackingLeadTime = trackingLeadTime
self.mapping = {
'parallactic': {
'getAngleFunction': PosGenerator.getParallacticAngle,
......@@ -24,101 +25,74 @@ class PosGenerator(object):
def goto(self, iStaticPos):
yield iStaticPos
# TODO: refactoring required, in order to put all the parallactic and
# galacticParallactic common code in one place
def parallactic(self, source, siteInfo):
def parallactic(self, source, siteInfo, t):
"""Return the parallactic angle"""
try:
latitude = siteInfo['latitude']
except (KeyError, TypeError) as ex:
raise PosGeneratorError('cannot get the latitude: %s' %ex.message)
except Exception as ex:
raeson = 'unexpected exception getting the site latitude'
logger.logNotice(raeson)
raise PosGeneratorError(raeson)
latitude = PosGenerator.getLatitude(siteInfo)
last_zerodiv_time = datetime.datetime.now()
while True:
try:
t = getTimeStamp().value + 1*10*6 # 100 ms in the future
coordinates = source.getApparentCoordinates(t) # Values in radians
az, el = coordinates[:2] # The first two elements are (az, el)
position = PosGenerator.getParallacticAngle(latitude, az, el)
yield position
last_zerodiv_time = datetime.datetime.now()
except ZeroDivisionError:
logger.logWarning('zero division error computing the parallactic angle')
zerodiv_time = datetime.datetime.now() - last_zerodiv_time
if zerodiv_time.seconds >= self.zdtimeout:
raeson = 'zero division for more than %ds' %self.zdtimeout
logger.logError(raeson)
raise PosGeneratorError(raeson)
else:
time.sleep(0.5)
continue
except GeneratorExit: # Required in Python 2.5:
# http://www.algorithm.co.il/blogs/programming/generatorexit-another-reason-to-upgrade-to-python-2-6/
raise
return position
except Exception as ex:
raeson = 'cannot get the %s (az, el) values' %source._get_name()
logger.logNotice('%s: %s' %(raeson, ex.message))
logger.logNotice('%s: %s' %(raeson, ex))
raise PosGeneratorError(raeson)
def galacticParallactic(self, source, siteInfo):
def galacticParallactic(self, source, siteInfo, t):
"""Return the galactic parallactic angle"""
try:
latitude = siteInfo['latitude']
except (KeyError, TypeError) as ex:
raise PosGeneratorError('cannot get the latitude: %s' %ex.message)
except Exception as ex:
raeson = 'unexpected exception getting the site latitude'
logger.logNotice(raeson)
raise PosGeneratorError(raeson)
latitude = PosGenerator.getLatitude(siteInfo)
last_zerodiv_time = datetime.datetime.now()
while True:
try:
t = getTimeStamp().value + 1*10*6 # 100 ms in the future
coordinates = source.getApparentCoordinates(t) # Values in radians
az, el, ra, dec = coordinates[:4]
pg = PosGenerator.getGalacticParallacticAngle(latitude, az, el, ra, dec)
yield pg
last_zerodiv_time = datetime.datetime.now()
except ZeroDivisionError:
logger.logWarning('zero division error computing the galactic parallactic angle')
zerodiv_time = datetime.datetime.now() - last_zerodiv_time
if zerodiv_time.seconds >= self.zdtimeout:
raeson = 'zero division for more than %ds' %self.zdtimeout
logger.logError(raeson)
raise PosGeneratorError(raeson)
else:
time.sleep(0.5)
continue
except GeneratorExit: # Required in Python 2.5:
# http://www.algorithm.co.il/blogs/programming/generatorexit-another-reason-to-upgrade-to-python-2-6/
raise
position = PosGenerator.getGalacticParallacticAngle(latitude, az, el, ra, dec)
return position
except Exception as ex:
raeson = 'cannot get the %s (az, el) values' %source._get_name()
logger.logNotice('%s: %s' %(raeson, ex.message))
logger.logNotice('%s: %s' %(raeson, ex))
raise PosGeneratorError(raeson)
@staticmethod
def getLatitude(siteInfo):
"""Return the site latitude"""
try:
return siteInfo['latitude']
except (KeyError, TypeError) as ex:
raise PosGeneratorError('cannot get the latitude: %s' %ex)
except Exception as ex:
raeson = 'unexpected exception getting the site latitude'
logger.logNotice(raeson)
raise PosGeneratorError(raeson)
@staticmethod
def getParallacticAngle(latitude, az, el):
"""Arguments in radians"""
p = atan2(-sin(az), tan(latitude)*cos(el) - sin(el)*cos(az))
return degrees(p)
denominator = tan(latitude) * cos(el) - sin(el) * cos(az)
# Avoid division by zero and keep continuity
if isclose(denominator, 0, abs_tol=1e-10):
return -90.0 if sin(az) > 0 else 90.0
return degrees(atan2(-sin(az), denominator))
@staticmethod
def getGalacticAngle(ra, dec):
"""Arguments in radians"""
# North celestial pole coordinates in equatorial celestial frame (j200)
# North celestial pole coordinates in equatorial celestial frame (j2000)
# ncp = ('12 51 26.28', '27 07 41.7')
# ra0 = ephem.hours(ncp[0])
# dec0 = ephem.degrees(ncp[1])
ra0 = 3.3660332687500043
dec0 = 0.47347728280415174
g = atan2(sin(ra-ra0), cos(dec)*tan(dec0) - sin(dec)*cos(ra-ra0))
return degrees(g)
denominator = cos(dec) * tan(dec0) - sin(dec) * cos(ra-ra0)
# Avoid division by zero and keep continuity
if isclose(denominator, 0, abs_tol=1e-10):
return 90.0 if sin(ra-ra0) > 0 else -90.0
return degrees(atan2(sin(ra-ra0), denominator))
@staticmethod
def getGalacticParallacticAngle(latitude, az, el, ra, dec):
......@@ -130,4 +104,3 @@ class PosGenerator(object):
class PosGeneratorError(Exception):
pass
......@@ -25,7 +25,9 @@ class Positioner(object):
The `cdbconf` parameter is a CDBConf instance.
"""
self.conf = cdbconf
self.posgen = PosGenerator()
self.updatingTime = int(float(self.conf.getAttribute('UpdatingTime')) * 10**7)
self.trackingLeadTime = int(float(self.conf.getAttribute('TrackingLeadTime')) * 10**7)
self.posgen = PosGenerator(self.updatingTime, self.trackingLeadTime)
self._setDefault()
......@@ -57,12 +59,11 @@ class Positioner(object):
self.is_setup = True
time.sleep(0.4) # Give the device the time to accomplish the setup
self.control.updateScanInfo({'iStaticPos': setupPosition})
self._start(self.posgen.goto, setupPosition)
time.sleep(0.1) # Give the thread the time to finish
self._setPosition(setupPosition)
except (DerotatorErrors.PositioningErrorEx, DerotatorErrors.CommunicationErrorEx) as ex:
raise PositionerError("cannot set the position: %s" %ex.message)
raise PositionerError("cannot set the position: %s" %ex)
except Exception as ex:
raise PositionerError(ex.message)
raise PositionerError(ex)
finally:
Positioner.generalLock.release()
......@@ -120,7 +121,7 @@ class Positioner(object):
# Set the initialPosition, in order to add it to the dynamic one
self.control.user_position = position
except Exception as ex:
raise PositionerError('cannot set the position: %s' %ex.message)
raise PositionerError('cannot set the position: %s' %ex)
def _setPosition(self, position):
......@@ -130,11 +131,11 @@ class Positioner(object):
self.device.setPosition(self.control.target)
except (DerotatorErrors.PositioningErrorEx, DerotatorErrors.CommunicationErrorEx) as ex:
raeson = "cannot set the %s position" %self.device._get_name()
logger.logError('%s: %s' %(raeson, ex.message))
logger.logError('%s: %s' %(raeson, ex))
raise PositionerError(raeson)
except Exception as ex:
raeson = "unknown exception setting the %s position" %self.device._get_name()
logger.logError('%s: %s' %(raeson, ex.message))
logger.logError('%s: %s' %(raeson, ex))
raise PositionerError(raeson)
else:
raise OutOfRangeError("position %.2f out of range {%.2f, %.2f}"
......@@ -179,22 +180,20 @@ class Positioner(object):
dParallacticPos=0,
rewindingOffset=0,
)
self._start(self.posgen.goto, position)
self._setPosition(position)
self.control.mustUpdate = False
else:
posgen = getattr(self.posgen, functionName)
angle_mapping = self.posgen.mapping[functionName]
getAngleFunction = self.posgen.mapping[functionName]['getAngleFunction']
coordinateFrame = self.posgen.mapping[functionName]['coordinateFrame']
lat = self.siteInfo['latitude']
try:
if coordinateFrame == 'horizontal':
iParallacticPos = getAngleFunction(lat, az, el)
elif coordinateFrame == 'equatorial':
iParallacticPos = getAngleFunction(lat, az, el, ra, dec)
else:
raise PositionerError('coordinate frame %s unknown' %coordinateFrame)
except ZeroDivisionError:
raise NotAllowedError('zero division error computing p(%.2f, %.2f)' %(az, el))
self.control.setScanInfo(
axis=axis,
......@@ -204,15 +203,19 @@ class Positioner(object):
dParallacticPos=0,
rewindingOffset=0,
)
self._start(posgen, self.source, self.siteInfo)
self._start(
posgen,
self.source,
self.siteInfo
)
self.control.mustUpdate = True
except Exception as ex:
raise PositionerError('configuration problem: %s' %ex.message)
raise PositionerError('configuration problem: %s' %ex)
finally:
Positioner.generalLock.release()
def _updatePosition(self, posgen, vargs):
def _updatePosition(self, posgen, source, siteInfo):
try:
self.control.isRewindingRequired = False
self.control.isRewinding = False
......@@ -229,20 +232,48 @@ class Positioner(object):
else:
isOptimized = False
for position in posgen(*vargs):
new_trajectory = True
while True:
if self.control.stop:
break
else:
try:
if new_trajectory:
t = getTimeStamp().value + self.trackingLeadTime
position = posgen(source, siteInfo, t)
Pis = self.control.scanInfo['iStaticPos'] + self.control.scanInfo['rewindingOffset']
Pip = self.control.scanInfo['iParallacticPos']
Pdp = 0 if posgen.__name__ == 'goto' else (position - Pip)
Pdp = position - Pip
target = Pis + Pdp if isOptimized else Pis + Pip + Pdp
self.control.scanInfo.update({'dParallacticPos': Pdp})
self._setPosition(target) # _setPosition() will add the offset
time.sleep(float(self.conf.getAttribute('UpdatingTime')))
self.control.target = target + self.control.offset
if self.device.getMinLimit() < self.control.target < self.device.getMaxLimit():
try:
self.device.loadTrackingPoint(t, self.control.target, new_trajectory)
new_trajectory = False
t += self.updatingTime
except (DerotatorErrors.PositioningErrorEx, DerotatorErrors.CommunicationErrorEx) as ex:
raeson = "cannot set the %s position" %self.device._get_name()
logger.logError('%s: %s' %(raeson, ex))
raise PositionerError(raeson)
except Exception as ex:
raeson = "unknown exception setting the %s position" %self.device._get_name()
logger.logError('%s: %s' %(raeson, ex))
raise PositionerError(raeson)
else:
raise OutOfRangeError("position %.2f out of range {%.2f, %.2f}"
%(self.control.target, self.device.getMinLimit(), self.device.getMaxLimit()))
# We calculate the time to sleep
# Next point of the trajectory - TrackingLeadTime - now
# slightly less than UpdatingTime
# The resulting cycle should be around
# TrackingLeadTime seconds before the next point
time_to_sleep = max(0, t - self.trackingLeadTime - getTimeStamp().value)
time.sleep(float(time_to_sleep) / 10**7)
except OutOfRangeError as ex:
logger.logInfo(ex.message)
new_trajectory = True
logger.logInfo(ex)
self.control.isRewindingRequired = True
if self.control.modes['rewinding'] == 'AUTO':
try:
......@@ -250,7 +281,7 @@ class Positioner(object):
except Exception as ex:
# In case of wrong autoRewindingSteps
self.control.isRewindingRequired = True
logger.logError('cannot rewind: %s' %ex.message)
logger.logError('cannot rewind: %s' %ex)
break
else:
if self.control.modes['rewinding'] == 'MANUAL':
......@@ -262,16 +293,16 @@ class Positioner(object):
else:
logger.logError('wrong rewinding mode: %s' %self.control.modes['rewinding'])
except Exception as ex:
logger.logError(ex.message)
logger.logError(ex)
break
self.control.mustUpdate = False
except KeyboardInterrupt:
logger.logInfo('stopping Positioner._updatePosition() due to KeyboardInterrupt')
except AttributeError as ex:
logger.logError('Positioner._updatePosition(): attribute error')
logger.logDebug('Positioner._updatePosition(): %s' %ex.message)
logger.logDebug('Positioner._updatePosition(): %s' %ex)
except PositionerError as ex:
logger.logError('Positioner._updatePosition(): %s' %ex.message)
logger.logError('Positioner._updatePosition(): %s' %ex)
except Exception as ex:
logger.logError('unexcpected exception in Positioner._updatePosition(): %s' %ex)
finally:
......@@ -315,7 +346,7 @@ class Positioner(object):
self.control.isRewindingRequired = False
except Exception as ex:
self.control.isRewindingRequired = True
raise PositionerError(ex.message)
raise PositionerError(ex)
finally:
self.control.isRewinding = False
Positioner.rewindingLock.release()
......@@ -417,7 +448,7 @@ class Positioner(object):
try:
Positioner.generalLock.acquire()
self.control.updateScanInfo({'iStaticPos': parkPosition})
self._start(self.posgen.goto, parkPosition)
self._setPosition(parkPosition)
finally:
Positioner.generalLock.release()
time.sleep(0.5) # Wait the thread stops before to set the defaults
......@@ -466,7 +497,7 @@ class Positioner(object):
Positioner.generalLock.acquire()
self.stopUpdating()
self.control.updateScanInfo({'iStaticPos': position})
self._start(self.posgen.goto, position)
self._setPosition(position)
finally:
Positioner.generalLock.release()
......@@ -481,7 +512,7 @@ class Positioner(object):
else:
self.stopUpdating()
actPosition = self.getPosition()
self._start(self.posgen.goto, actPosition)
self._setPosition(actPosition)
def clearOffset(self):
......@@ -569,17 +600,17 @@ class Positioner(object):
def clearAutoRewindingSteps(self):
self.control.autoRewindingSteps = None
def _start(self, posgen, *vargs):
def _start(self, posgen, source, siteInfo):
"""Start a new process that computes and sets the position"""
if self.isSetup():
# self.stopUpdating() # Raise a PositionerError if the process stills alive
self.t = ContainerServices.ContainerServices().getThread(
name=posgen.__name__,
target=self._updatePosition,
args=(posgen, vargs)
args=(posgen, source, siteInfo)
)
self.t.start()
time.sleep(0.10) # In case of goto, take the time to command the position
# time.sleep(0.10) # In case of goto, take the time to command the position
else:
raise NotAllowedError('not configured: a setConfiguration() is required')
......@@ -613,12 +644,12 @@ class Positioner(object):
try:
status_obj = self.device._get_status()
except Exception as ex:
raise PositionerError('cannot get the device status property: %s' %ex.message)
raise PositionerError('cannot get the device status property: %s' %ex)
try:
device_status, compl = status_obj.get_sync()
except Exception as ex:
raise PositionerError('cannot get the device status value: %s' %ex.message)
raise PositionerError('cannot get the device status value: %s' %ex)
if compl.code:
raise PositionerError('the device status value is not valid')
......@@ -641,7 +672,7 @@ class Positioner(object):
try:
binrepr = Status.dec2bin(device_status, 6) # A string of 6 values
except Exception as ex:
raise PositionerError('error in Status.dec2bin(): %s' %ex.message)
raise PositionerError('error in Status.dec2bin(): %s' %ex)
po, f, ce, nr, s, w = [bool(int(item)) for item in reversed(binrepr)]
if po:
......@@ -665,7 +696,7 @@ class Positioner(object):
except NotAllowedError as ex:
return '000000' # Not ready
except Exception as ex:
logger.logError(ex.message)
logger.logError(ex)
return '100000' # Failure
finally:
Positioner.generalLock.release()
......
<?xml version='1.0' encoding='ISO-8859-1'?>
<!--
- History:
-
-->
<Component xmlns="urn:schemas-cosylab-com:Component:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Name="NoiseGenerator"
Code="NoiseGeneratorImpl"
Type="IDL:alma/Backends/NoiseGenerator:1.0"
Container="NoiseGeneratorContainer"
Default="false"
KeepAliveTime="-1"
ImplLang="cpp"
/>
<?xml version='1.0' encoding='ISO-8859-1'?>
<!--
- History:
-
-->
<Component xmlns="urn:schemas-cosylab-com:Component:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Name="XBackends"
Code="XBackendsImpl"
Type="IDL:alma/Backends/XBackends:1.0"
Container="XContainer"
ImplLang="cpp"
/>
<!--"BackendsContainer"-->
......@@ -5,11 +5,10 @@
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Name="PFP"
Code="SRTProgramTrackMinorServoImpl"
Name="DR_GFR1"
Code="SRTDerotatorImpl"
ImplLang="cpp"
Type="IDL:alma/MinorServo/SRTProgramTrackMinorServo:1.0"
Type="IDL:alma/MinorServo/SRTDerotator:1.0"
Container="MinorServoContainer"
Default="true"
Default="false"
/>
......@@ -10,5 +10,5 @@
ImplLang="cpp"
Type="IDL:alma/MinorServo/SRTGenericMinorServo:1.0"
Container="MinorServoContainer"
Default="true"
Default="false"
/>
......@@ -10,5 +10,5 @@
ImplLang="cpp"
Type="IDL:alma/MinorServo/SRTGenericMinorServo:1.0"
Container="MinorServoContainer"
Default="true"
Default="false"
/>
......@@ -10,6 +10,5 @@
ImplLang="cpp"
Type="IDL:alma/MinorServo/SRTProgramTrackMinorServo:1.0"
Container="MinorServoContainer"
Default="true"
Default="false"
/>
<?xml version='1.0' encoding='ISO-8859-1'?>
<!--
- History:
-
-->
<Component xmlns="urn:schemas-cosylab-com:Component:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Name="LO_LP"
Code="LocalOscillatorSimImpl.LocalOscillator"
Type="IDL:alma/Receivers/LocalOscillator:1.0"
Container="LocalOscillatorLPContainer"
KeepAliveTime="10"
Default="false"
ImplLang="py"
/>
<?xml version='1.0' encoding='ISO-8859-1'?>
<!--
- History:
-
-->
<Component xmlns="urn:schemas-cosylab-com:Component:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Name="LPBandReceiver"
Code="SRTLPBandReceiverImpl"
Type="IDL:alma/Receivers/SRTLPBand:1.0"
Container="SRTLPBandContainer"
KeepAliveTime="-1"
Default="false"
ImplLang="cpp"
/>
<?xml version="1.0" encoding="ISO-8859-1"?>
<Container
xmlns="urn:schemas-cosylab-com:Container:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:log="urn:schemas-cosylab-com:LoggingConfig:1.0"
Timeout="30.0"
UseIFR="true"
ManagerRetry="10"
ImplLang="cpp"
Recovery="false">
<Autoload>
<cdb:e string="baci" />
</Autoload>
<LoggingConfig
centralizedLogger="Log"
minLogLevel="5"
minLogLevelLocal="5"
dispatchPacketSize="0"
immediateDispatchLevel="8"
flushPeriodSeconds="1"
>
</LoggingConfig>
</Container>
<?xml version="1.0" encoding="ISO-8859-1"?>
<Container xmlns="urn:schemas-cosylab-com:Container:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:log="urn:schemas-cosylab-com:LoggingConfig:1.0"
ImplLang="py"
Timeout="30.0"
UseIFR="true"
ManagerRetry="10"
Recovery="false">
<Autoload>
<cdb:e string="baci" />
</Autoload>
<LoggingConfig
centralizedLogger="Log"
minLogLevel="5"
minLogLevelLocal="5"
dispatchPacketSize="0"
immediateDispatchLevel="8"
flushPeriodSeconds="1"
>
</LoggingConfig>
</Container>
<?xml version="1.0" encoding="UTF-8"?>
<!--
* Author Infos
* ============
* Name: Marco Buttu
* E-mail: mbuttu@oa-cagliari.inaf.it
* Personal Web: http://www.pypeople.com/
-->
<Container xmlns="urn:schemas-cosylab-com:Container:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:log="urn:schemas-cosylab-com:LoggingConfig:1.0"
Timeout="30.0"
UseIFR="true"
ManagerRetry="10"
ImplLang="py"
Recovery="false">
<Autoload>
<cdb:e string="baci" />
</Autoload>
<LoggingConfig
centralizedLogger="Log"
minLogLevel="5"
minLogLevelLocal="5"
dispatchPacketSize="0"
immediateDispatchLevel="8"
flushPeriodSeconds="1"
>
</LoggingConfig>
</Container>
<?xml version="1.0" encoding="UTF-8"?>
<!--
* Author Infos
* ============
* Name: Marco Buttu
* E-mail: mbuttu@oa-cagliari.inaf.it
* Personal Web: http://www.pypeople.com/
-->
<Container xmlns="urn:schemas-cosylab-com:Container:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:log="urn:schemas-cosylab-com:LoggingConfig:1.0"
Timeout="30.0"
UseIFR="true"
ManagerRetry="10"
ImplLang="cpp"
Recovery="false">
<Autoload>
<cdb:e string="baci" />
</Autoload>
<LoggingConfig
centralizedLogger="Log"
minLogLevel="5"
minLogLevelLocal="5"
dispatchPacketSize="0"
immediateDispatchLevel="8"
flushPeriodSeconds="1"
>
</LoggingConfig>
</Container>
<?xml version="1.0" encoding="ISO-8859-1"?>
<Container
xmlns="urn:schemas-cosylab-com:Container:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:log="urn:schemas-cosylab-com:LoggingConfig:1.0"
Timeout="30.0"
UseIFR="true"
ManagerRetry="10"
ImplLang="cpp"
Recovery="false">
<Autoload>
<cdb:e string="baci" />
</Autoload>
<LoggingConfig
centralizedLogger="Log"
minLogLevel="5"
minLogLevelLocal="5"
dispatchPacketSize="0"
immediateDispatchLevel="8"
flushPeriodSeconds="1"
>
</LoggingConfig>
</Container>
<?xml version="1.0" encoding="ISO-8859-1"?>
<Container xmlns="urn:schemas-cosylab-com:Container:1.0"
xmlns:cdb="urn:schemas-cosylab-com:CDB:1.0"
xmlns:baci="urn:schemas-cosylab-com:BACI:1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:log="urn:schemas-cosylab-com:LoggingConfig:1.0"
ImplLang="py"
Timeout="30.0"
UseIFR="true"
ManagerRetry="10"
Recovery="false">
<Autoload>
<cdb:e string="baci" />
</Autoload>
<LoggingConfig
centralizedLogger="Log"
minLogLevel="5"
minLogLevelLocal="5"
dispatchPacketSize="0"
immediateDispatchLevel="8"
flushPeriodSeconds="1"
>
</LoggingConfig>
</Container>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment