Commit 5061fa12 authored by Sergio Poppi's avatar Sergio Poppi
Browse files

LO_LP container release.

parent ffa9e4f7
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ class CommandLine:
          print msg
          self.sock=None


   def __del__(self):
       pass
   
@@ -180,7 +179,7 @@ class CommandLine:
   
   def close(self):
     
       self.sock.disconnect()
       self.sock.close()

   def query(self,cmd):
       try:
+30 −9
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ from Acspy.Common.TimeHelper import getTimeStamp
from maciErrType import CannotGetComponentEx
from ACSErrTypeCommonImpl import CORBAProblemExImpl
from LocalOscillatorImpl.devios import amplitudeDevIO,frequencyDevIO,isLockedDevIO
import Acspy.Util.ACSCorba

import Receivers
import ComponentErrorsImpl
@@ -69,7 +70,7 @@ import ComponentErrors
from LocalOscillatorImpl import CommandLine
from IRAPy import logger

IP, PORT = "192.168.200.149", 5025 #real hw
#IP, PORT = "192.168.201.149", 5025 #real hw

 
class LocalOscillator(Receivers__POA.LocalOscillator, CharacteristicComponent, ContainerServices, ComponentLifecycle):
@@ -80,19 +81,32 @@ class LocalOscillator(Receivers__POA.LocalOscillator, CharacteristicComponent, C
      self.cl=CommandLine.CommandLine() 
      self.freq=0.  
      self.power=0.
#
      
# ___oOo___
   def cleanUp(self):
      
      pass
      self.cl.close()
   
   
   def initialize(self):
       self.cl.configure(IP,PORT)
       name= self.getName()
       dal = Acspy.Util.ACSCorba.cdb()
       dao=dal.get_DAO_Servant("alma/"+name)
       IP=  dao.get_string("IP")
       PORT = int(dao.get_double("PORT"))
       
       msg = self.cl.configure(IP,PORT)
       if msg != 'OK' :
              reason = "cannot get Synthetizer IP %s component: %s" %(IP,msg)
              logger.logError(reason)
              exc = ComponentErrorsImpl.SocketErrorExImpl()
              exc.setData('reason',msg)
              raise exc.getComponentErrorsEx()
       

       addProperty(self, 'frequency', devio_ref=frequencyDevIO(self.cl))
       addProperty(self, 'amplitude', devio_ref=amplitudeDevIO(self.cl))
       addProperty(self, 'isLocked', devio_ref=isLockedDevIO(self.cl))
       addProperty(self, 'isLocked', devio_ref=isLockedDevIO(self,self.cl))
       self.cl.configure(IP,PORT)
   
   def set(self,rf_power,rf_freq):
@@ -101,9 +115,12 @@ class LocalOscillator(Receivers__POA.LocalOscillator, CharacteristicComponent, C
        self.cl.setFrequency(rf_freq)
        self.freq=rf_freq
        self.power=rf_power
        logger.logNotice('SYNT FREQ  set to %f ' %self.freq)
        logger.logNotice('SYNT POWER set to %f ' %self.power)

     except CommandLine.CommandLineError,ex :
          
        logger.logError(ex)
        logger.logError(ex,message)

       
   
@@ -128,3 +145,7 @@ class LocalOscillator(Receivers__POA.LocalOscillator, CharacteristicComponent, C
   def rfoff(self):
    
       pass    
   
   def getInternalFrequency(self):
       return self.freq
   
 No newline at end of file
+55 −6
Original line number Diff line number Diff line
from ACSImpl.DevIO import DevIO
from math import fabs
from CommandLine import CommandLineError
from IRAPy import logger

SYNTH_TOLLERANCE = 1.

class GenericDevIO(DevIO):
    def __init__(self, value=0):
@@ -22,21 +27,65 @@ class amplitudeDevIO(DevIO):
        self.value = value
                                    
class frequencyDevIO(DevIO):
    '''
       frequency read from the synth.
       
    ''' 
    def __init__(self, cl,value=0):
        DevIO.__init__(self,value)
        self.cl=cl
    def read(self):
        value=self.cl.getFrequency()
        try:
           msg,value=self.cl.getFrequency()
           return value
        except CommandLineError, ex:
                success = False
                msg = ex.message if ex.message else 'unexpected exception'
                answer = 'Error - %s' %(ex.getReason() if hasattr(ex, 'getReason') else msg)
                logger.logError(answer)
                return 0
        
        except Exception, ex:
                success = False
                msg = ex.message if ex.message else 'unexpected exception'
                answer = 'Error - %s' %(ex.getReason() if hasattr(ex, 'getReason') else msg)
                logger.logError(answer)
                return 0

    def write(self, value):
        self.value = value
class isLockedDevIO(DevIO):
    def __init__(self, cl,value=0):
        DevIO.__init__(self, value)
    '''
      This checks if the Synthetizer is actually set  to the set frequecy 
       
    ''' 
    
    def __init__(self, component,commandline,value=0):
        DevIO.__init__(self, value)
        self.cl=commandline
        self.impl=component
    def read(self):
        return self.value
        try:
           component_frequency=self.impl.getInternalFrequency()  #read freq from component
           msg,synth_frequency=self.cl.getFrequency() #read freq from synth
           offset=fabs(component_frequency-synth_frequency)
           if offset <= SYNTH_TOLLERANCE:
               return 1
           else:
               return 0
        except CommandLineError, ex:
                success = False
                msg = ex.message if ex.message else 'unexpected exception'
                answer = 'Error - %s' %(ex.getReason() if hasattr(ex, 'getReason') else msg)
                logger.logError(answer)
                return 0
        
        except Exception, ex:
                success = False
                msg = ex.message if ex.message else 'unexpected exception'
                answer = 'Error - %s' %(ex.getReason() if hasattr(ex, 'getReason') else msg)
                logger.logError(answer)
                return 0
             
    def write(self, value):
        self.value = value
+25 −0
Original line number Diff line number Diff line
import time
import unittest2
from ComponentErrors import ComponentErrorsEx, ComponentErrorsEx
from Acspy.Clients.SimpleClient import PySimpleClient
from LocalOscillatorImpl import CommandLine

class TestCommandLine(unittest2.TestCase):


      def setUp(self):
         client = PySimpleClient()
         self.lo = client.getComponent('RECEIVERS/LO_LP')
         

      def test_get(self):
         self.lo.set(13,2000)
         power,freq=self.lo.get()
         self.assertEqual(2000,freq)
         
 



if __name__ == '__main__':
    unittest2.main()