Unverified Commit ea99ffcb authored by Giuseppe Carboni's avatar Giuseppe Carboni Committed by GitHub
Browse files

Merge branch 'master' into feature-med-c-band-srv

parents 58290465 87dc57a1
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -14,6 +14,7 @@ Common/Libraries/SlaLibrary
Common/Clients/CaltoolClient/src/calibrationtool_ui.py
Common/Clients/CaltoolClient/src/calibrationtool_ui.py
Common/Clients/CaltoolClient/src/calibrationtool_ui.pye
Common/Clients/CaltoolClient/src/calibrationtool_ui.pye
Common/Errors/AntennaErrors/idl/AntennaErrors.idl
Common/Errors/AntennaErrors/idl/AntennaErrors.idl
Common/Errors/ActiveSurfaceErrors/idl/ASErrors.idl
Common/Errors/BackendsErrors/idl/BackendsErrors.idl
Common/Errors/BackendsErrors/idl/BackendsErrors.idl
Common/Errors/ClientErrors/idl/ClientErrors.idl
Common/Errors/ClientErrors/idl/ClientErrors.idl
Common/Errors/ComponentErrors/idl/ComponentErrors.idl
Common/Errors/ComponentErrors/idl/ComponentErrors.idl
@@ -31,6 +32,7 @@ Common/Interfaces/AntennaInterface/idl/Mount.idl
Common/Interfaces/AntennaInterface/idl/OTF.idl
Common/Interfaces/AntennaInterface/idl/OTF.idl
Common/Interfaces/AntennaInterface/idl/Observatory.idl
Common/Interfaces/AntennaInterface/idl/Observatory.idl
Common/Interfaces/AntennaInterface/idl/SkySource.idl
Common/Interfaces/AntennaInterface/idl/SkySource.idl
Common/Interfaces/ActiveSurfaceInterface/idl/ActiveSurfaceCommon.idl
Common/Interfaces/CommonInterface/idl/AntennaDefinitions.idl
Common/Interfaces/CommonInterface/idl/AntennaDefinitions.idl
Common/Interfaces/CommonInterface/idl/BackendsDefinitions.idl
Common/Interfaces/CommonInterface/idl/BackendsDefinitions.idl
Common/Interfaces/CommonInterface/idl/ManagmentDefinitions.idl
Common/Interfaces/CommonInterface/idl/ManagmentDefinitions.idl
@@ -39,11 +41,12 @@ Common/Interfaces/CommonInterface/idl/ReceiversDefinitions.idl
Common/Interfaces/ManagmentInterface/idl/CustomLogger.idl
Common/Interfaces/ManagmentInterface/idl/CustomLogger.idl
Common/Interfaces/ReceiversInterface/idl/DewarPositionerDefinitions.idl
Common/Interfaces/ReceiversInterface/idl/DewarPositionerDefinitions.idl
Common/Interfaces/XBackendInterface/idl/XBackends.idl
Common/Interfaces/XBackendInterface/idl/XBackends.idl
Common/Interfaces/ActiveSurfaceInterface/idl/ActiveSurfaceCommon.idl
Common/Misc/PMUpdate/src/PMUpdate_gui.py
Common/Misc/PMUpdate/src/PMUpdate_gui.py
Medicina/Interfaces/MedicinaActiveSurfaceInterface/idl/MedicinaActiveSurfaceBoss.idl
Noto/Errors/NotoActiveSurfaceErrors/idl/ASErrors.idl
Noto/Errors/NotoActiveSurfaceErrors/idl/ASErrors.idl
Noto/Interfaces/NotoActiveSurfaceInterface/idl/NotoActiveSurfaceBoss.idl
Noto/Interfaces/NotoActiveSurfaceInterface/idl/NotoActiveSurfaceBoss.idl
SRT/Clients/SRTActiveSurfaceGUIClient/include/SRTActiveSurfaceGUI.h
SRT/Clients/SRTActiveSurfaceGUIClient/include/SRTActiveSurfaceGUI.h
SRT/Clients/SRTActiveSurfaceGUIClient/src/moc_SRTActiveSurfaceCore.cpp
SRT/Clients/SRTActiveSurfaceGUIClient/src/moc_SRTActiveSurfaceCore.cpp
SRT/Clients/SRTActiveSurfaceGUIClient/src/moc_SRTActiveSurfaceGUIui.cpp
SRT/Clients/SRTActiveSurfaceGUIClient/src/moc_SRTActiveSurfaceGUIui.cpp
SRT/Errors/SRTActiveSurfaceErrors/idl/ASErrors.idl
SRT/Interfaces/SRTActiveSurfaceInterface/idl/SRTActiveSurfaceBoss.idl
SRT/Interfaces/SRTActiveSurfaceInterface/idl/SRTActiveSurfaceBoss.idl
+39 −26
Original line number Original line Diff line number Diff line
@@ -4,56 +4,39 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/
and this project adheres to [Semantic Versioning](http://semver.org/


## we keep track of the changes related to the release mentioned at the section header

## [discos1.0] 07-11-2018
## [discos1.0] 07-11-2018
### Added
### Added

    issue #261 - Added startup procedure scripts also for Noto and Medicina. The startup command is 'discos --start'. Also command line scripts are now avialble 'discosup' and 'discosdown'. The console can be start with 'discosConsole --start'.
    issue #261 - Added startup procedure scripts also for Noto and Medicina. The startup command is 'discos --start'. Also command line scripts are now avialble 'discosup' and 'discosdown'. The console can be start with 'discosConsole --start'.

    issue #325 - Added command 'dmed=<config>' to control the Medicina DMed (IF distributor). The device only allows to setup a set of programmable attenuators in order to control the singal levels. Argument 'config' selects which configuration to apply between a set of predefined one.
    issue #325 - Added command 'dmed=<config>' to control the Medicina DMed (IF distributor). The device only allows to setup a set of programmable attenuators in order to control the singal levels. Argument 'config' selects which configuration to apply between a set of predefined one.

    issue #323 - The metClient moved to common part as it is now the general client for weather stations. Also the autopark wind threshold is now read from configuration instead of being hardcoded.
    issue #323 - The metClient moved to common part as it is now the general client for weather stations. Also the autopark wind threshold is now read from configuration instead of being hardcoded.

    issue #324 - Full support for CHC receiver at Medicina telescope now added. The receiver will be available under two diffent configurations: 1.2GHz and 150MHz bandwidth. The respective setup are achieved by issuing the following procedures "SETUPCHC" and "SETUPCHCL".
    issue #324 - Full support for CHC receiver at Medicina telescope now added. The receiver will be available under two diffent configurations: 1.2GHz and 150MHz bandwidth. The respective setup are achieved by issuing the following procedures "SETUPCHC" and "SETUPCHCL".

    issue #361 - Written the PyCalMux component and integrated into the Noto line. Station procedures now execute the 'calmux=<configuration>' script in order to commute to the TotalPower noise calibration channel.
    issue #361 - Written the PyCalMux component and integrated into the Noto line. Station procedures now execute the 'calmux=<configuration>' script in order to commute to the TotalPower noise calibration channel.

    issue #368 - Added a 'calmux' command to the OperatorInput commands list. Internally it calls the 'setup' method of the PyCalmux component.
    issue #368 - Added a 'calmux' command to the OperatorInput commands list. Internally it calls the 'setup' method of the PyCalmux component.

    issue #369 - Now the Noto StationProcedures perform a default setup to the CalMux device letting it set the calibration noise mark coming from TotalPower as the default one.
    issue #369 - Now the Noto StationProcedures perform a default setup to the CalMux device letting it set the calibration noise mark coming from TotalPower as the default one.

    issue #419 - Completed integration and configuration of new primary focus receiver SXL, in Noto.
    issue #419 - Completed integration and configuration of new primary focus receiver SXL, in Noto.


### Changed
### Changed

    issue #316 - Several related commits. The operation releated to the Medicina K band receivers now relies on a new component directly derived from the SRT one. Large part of the code is shared between the two servants.
    issue #316 - Several related commits. The operation releated to the Medicina K band receivers now relies on a new component directly derived from the SRT one. Large part of the code is shared between the two servants.

    issue #301 - Noto Weather station has now a generic interface. In this way the MeteoClient can be used in Noto as wll as Medicina and SRT.
    issue #301 - Noto Weather station has now a generic interface. In this way the MeteoClient can be used in Noto as wll as Medicina and SRT.


### Fixed
### Fixed

    issue #366 - Now the PyCalmux component is kept alive after it gets instanced for the first time in order to avoid setting the default values to the controlled device every time the component is retrieved from some outside code/program.
    issue #366 - Now the PyCalmux component is kept alive after it gets instanced for the first time in order to avoid setting the default values to the controlled device every time the component is retrieved from some outside code/program.

    issue #367 - The PyCalmux component now uses a smarter way to open a socket to the CalMux device in order to avoid raising unwanted socket errors.
    issue #367 - The PyCalmux component now uses a smarter way to open a socket to the CalMux device in order to avoid raising unwanted socket errors.




## [discos1.0.2] 01-08-2019
## [discos1.0.2] 01-08-2019
### Added
### Added
### Changed
### Changed

    issue #423 - The SRT Active Surface now is monitored by 8 threads (the same threads that perform its initialization). The USDs statuses are updated inside these threads (roughly once every 15 seconds). The `usdStatus4GUI` method now returns the last read status of the given USD instead of interrogating the hardware in real time. The changes brought to the SRT Active Surface allowed its GUI to be improved. Since now it asks for the last known status of every USD without interrogating the hardware in real time, the thread is able to go from USD to USD in 10ms instead of 100ms. A complete loop of the USDs now lasts less than 15 seconds, the UI therefore appears much more responsive to the users, allowing them to send commands to the AS earlier than before (the startup time of the whole AS is approximately the same, but the UI catches up more quickly when the ASBoss is ready).
    issue #423 - The SRT Active Surface now is monitored by 8 threads (the same threads that perform its initialization). The USDs statuses are updated inside these threads (roughly once every 15 seconds). The `usdStatus4GUI` method now returns the last read status of the given USD instead of interrogating the hardware in real time. The changes brought to the SRT Active Surface allowed its GUI to be improved. Since now it asks for the last known status of every USD without interrogating the hardware in real time, the thread is able to go from USD to USD in 10ms instead of 100ms. A complete loop of the USDs now lasts less than 15 seconds, the UI therefore appears much more responsive to the users, allowing them to send commands to the AS earlier than before (the startup time of the whole AS is approximately the same, but the UI catches up more quickly when the ASBoss is ready).

    issue #404 - Minor fixes were introduced in the SRT test CDB.
    issue #404 - Minor fixes were introduced in the SRT test CDB.

    feature - The TimeTaggedCircularArray class is now thread safe.
    feature - The TimeTaggedCircularArray class is now thread safe.


### Fixed
### Fixed

    issue #431 - The AntennaBoss WatchingThread is now free to read updated values from the mount component without starving. This was tested in the SRT environment with the ACU simulator. No tests were carried on in the Medicina/Noto environments, but due to the different socket nature of the ACU, this should not be an issue. In a simulated environment, a time gap in the coordinates set happens roughly once every 100000 readings (during source tracking).
    issue #431 - The AntennaBoss WatchingThread is now free to read updated values from the mount component without starving. This was tested in the SRT environment with the ACU simulator. No tests were carried on in the Medicina/Noto environments, but due to the different socket nature of the ACU, this should not be an issue. In a simulated environment, a time gap in the coordinates set happens roughly once every 100000 readings (during source tracking).

    issue #411 - The WeatherStation component `getData` method now returns the last known set of weather parameters, without interrogating the hardware every time it was called. Previously, having N clients calling this method resulted in having N times the socket busy. One of the clients was for example the Refraction component, which introduced additional latencies and time gaps into the AntennaBoss WatchingThread.
    issue #411 - The WeatherStation component `getData` method now returns the last known set of weather parameters, without interrogating the hardware every time it was called. Previously, having N clients calling this method resulted in having N times the socket busy. One of the clients was for example the Refraction component, which introduced additional latencies and time gaps into the AntennaBoss WatchingThread.

    issue #382 - The Refraction `getCorrection` method now returns a VALUE of 0 when the antenna is pointing to the zenith (or when the elvation is encoded with more than 90 degrees). Previously, the method returned a POINTER equal to 0, which surprisingly never caused any issue other than flooding the jlog with a warning message.
    issue #382 - The Refraction `getCorrection` method now returns a VALUE of 0 when the antenna is pointing to the zenith (or when the elvation is encoded with more than 90 degrees). Previously, the method returned a POINTER equal to 0, which surprisingly never caused any issue other than flooding the jlog with a warning message.

    issue #402 - Fixed an issue in the ReceiversBossTui that was preventing the UI to find any derotator in the system.
    issue #402 - Fixed an issue in the ReceiversBossTui that was preventing the UI to find any derotator in the system.


## [discos1.0.3] 25-10-2019
## [discos1.0.3] 25-10-2019
@@ -82,15 +65,45 @@ and this project adheres to [Semantic Versioning](http://semver.org/
    issue #433 - limited refraction correction values to a meaningful range in order to avoid flooding the jlog with warning messages whenever the elevation is close to 90 degrees
    issue #433 - limited refraction correction values to a meaningful range in order to avoid flooding the jlog with warning messages whenever the elevation is close to 90 degrees
    issue #502 - removed last service daemon reference from Manager.xml io SRT production line
    issue #502 - removed last service daemon reference from Manager.xml io SRT production line
    
    
## [discos1.0.5] - 

## [discos1.0.5] - 09-03-2020
## Added
## Added
    issue #504 - added credits clause (regarding INAF data ownership) to fits files headers
    issue #504 - added credits clause (regarding INAF data ownership) to fits files headers
   issue #518 - KBand receivers cryo temperature read wrongly with connection problems. More information:
    issue #518 - KBand receivers cryo temperature read wrongly with connection problems. More information: https://github.com/discos/discos/issues/518#issuecomment-590838480
    https://github.com/discos/discos/issues/518#issuecomment-590838480
    issue #533 - New Fitszilla version 1.21 online. The user offsets related keywords added to the primary header.
   issue #530 - New Fitszilla versione 1.21 online. The subscan offsets related keywords added to the primary header.
    issue #556 - Added API to send emails to local system administrators. This feature is now exploted when a servo system oscillation is detected at Noto and Medicina
    issue #556 - Added API to send emails to local system administrators. This feature is now exploted when a servo system oscillation is detected at Noto and Medicina
    issue #595 - Added ifdist command to use IF Distributor (for Nt telescope) from operator input.
## Fixed
## Fixed
    issue #518 - In case of communication error we set a dummy value (100000) for the temperature properties, and the related timestamp keeps the value of the last communication timestamp.
    issue #518 - In case of communication error we set a dummy value (100000) for the temperature properties, and the related timestamp keeps the value of the last communication timestamp.
    issue #525 - When in LOCAL mode the receivers can turn on/off the noise mark and LNAs. There is no more MNG_FAILURE logging in case of LOCAL mode: only the LOCAL/REMOTE status (during component activation) and the change of status (LOCAL to REMOTE and viceversa) are written to the logfile.
    issue #525 - When in LOCAL mode the receivers can turn on/off the noise mark and LNAs. There is no more MNG_FAILURE logging in case of LOCAL mode: only the LOCAL/REMOTE status (during component activation) and the change of status (LOCAL to REMOTE and viceversa) are written to the logfile.
## Changed  
## Changed  
    issue #545 - Oscillation checks enabled for Mc and Nt telescopes, this setting is now under control of a CDB argument
    issue #545 - Oscillation checks enabled for Mc and Nt telescopes, this setting is now under control of a CDB argument

## [discos1.0.6] - 09-02-2022
## Added
    issue #655 - ACU Component for Noto and Medicina is now capable to prevent seldom mode changes coming from ACU reset
    issue #653 - added a couple of scriptsto ease vnc conection from remote a file copying. The scripts support 
                 linux and macos
	issue #588 - added the control of the new Noto subreflector and primary focus receiver box servo system.     
    issue #758 - Sardara enabled for Medicina
    
## Fixed
    issue #448 - Added Sky Offsets to calibration tool client
    issue #585 - Fixed misshandled schedule with NULL as backend (Dry Run)
## Changed
    issues #481, #484, #486, #487, #491, #493, #497. SRT Active Surface module has been improved in order to speed up its booting time and optimize its overall behavior
	 issue #604 - The control software will not allow anymore that a schedule, belonging to another project, could be run. In that case a warning message is sent to user console
	              and the execution aborted.
	              
## [Next Release] - 
## Added
    issue #625 - Added Medicina Active Surface. Both component and GUIs were implemented.
    issue #791 - Nodding added for TotalPower and Sardara components via the `enable` command. This command can only be issued from a schedule and not via the operatorInput CLI.
                 The syntax for the command is the following: `enable=X;Y` with X and Y representing the 2 feeds the user would like to use for the Nodding observation.
                 This command must be placed in the <schedule_name>.bck file in order to work properly.
    issue #619 - Active surface components are now capable of changing look-up tables on the fly via the `asSetLUT` command

## Fixed
## Changed
	issue #689 - The dataset provided by weather station has been enlarged by the wind direction. The correctponding RAL 'wx' command will noe provided wind direction readout, as well
    issue #621 - The maximum number of chars of the schedule file name is now 37 (extension included). This is done for fits file and archive issue with the lenght of the schedule name.
+17 −3
Original line number Original line Diff line number Diff line
@@ -68,7 +68,8 @@ class MyWorker(QThread):
                self.newsubscan=0L
                self.newsubscan=0L
                self.oldrecordingstatus=False
                self.oldrecordingstatus=False
                self.newrecordingstatus=False
                self.newrecordingstatus=False
                
                self.azimuthOffset=self.boss._get_azimuthOffset()
                self.elevationOffset=self.boss._get_elevationOffset()
                
                
                
                
        def run (self):
        def run (self):
@@ -125,6 +126,12 @@ class MyWorker(QThread):
                        (device,compl13)=self.device.get_sync()
                        (device,compl13)=self.device.get_sync()
                        self.emit(Qt.SIGNAL("device"),str(device))
                        self.emit(Qt.SIGNAL("device"),str(device))
                        self.emit(Qt.SIGNAL("scanAxis"),scanaxis)
                        self.emit(Qt.SIGNAL("scanAxis"),scanaxis)
                        (azOffset,_)=self.azimuthOffset.get_sync()
                        (elOffset,_)=self.elevationOffset.get_sync()

                        self.emit(Qt.SIGNAL("azoffset"),str(azOffset/math.pi*180))
                        self.emit(Qt.SIGNAL("eloffset"),str(elOffset/math.pi*180))



                        rec= self.caltool.isRecording()
                        rec= self.caltool.isRecording()
                        if rec==True:  
                        if rec==True:  
@@ -265,6 +272,13 @@ class Application(Qt.QDialog,calibrationtool_ui.Ui_CalibrationToolDialog):
		self.connect(self.thread,Qt.SIGNAL("device"),self.deviceIdLineEdit.setText)
		self.connect(self.thread,Qt.SIGNAL("device"),self.deviceIdLineEdit.setText)
		self.connect(self.thread,Qt.SIGNAL("isRecording"),self.isRecording)
		self.connect(self.thread,Qt.SIGNAL("isRecording"),self.isRecording)
		self.connect(self.thread,Qt.SIGNAL("scanAxis"),self.scanAxis)
		self.connect(self.thread,Qt.SIGNAL("scanAxis"),self.scanAxis)
                self.connect(self.thread,Qt.SIGNAL("eloffset"),self.elOffsetlineEdit.setText)
                self.connect(self.thread,Qt.SIGNAL("azoffset"),self.azOffsetlineEdit.setText)





                       
                       
	@pyqtSlot(Qt.QObject,name="isRecording")
	@pyqtSlot(Qt.QObject,name="isRecording")
	def isRecording(self,rec):
	def isRecording(self,rec):
@@ -329,7 +343,7 @@ class Application(Qt.QDialog,calibrationtool_ui.Ui_CalibrationToolDialog):
def usage():
def usage():
	print "calibrationtoolclient [component name]"
	print "calibrationtoolclient [component name]"
	print
	print
	print "If no component name is provided, the default "+DEFAULT_COMPONENT+" will be used" 
	print "If no component name is provided, the default MANAGEMENT/CalibrationTool will be used" 


def main(args):
def main(args):
	sys.tracebacklimit=0
	sys.tracebacklimit=0
@@ -347,7 +361,7 @@ def main(args):
			sys.exit()
			sys.exit()


	if len(args)==0:
	if len(args)==0:
		componentname='default'
		componentname='MANAGEMENT/CalibrationTool'
	else:
	else:
		componentname=args[0]
		componentname=args[0]
  
  
+150 −17
Original line number Original line Diff line number Diff line
@@ -6,8 +6,8 @@
   <rect>
   <rect>
    <x>0</x>
    <x>0</x>
    <y>0</y>
    <y>0</y>
    <width>954</width>
    <width>998</width>
    <height>572</height>
    <height>726</height>
   </rect>
   </rect>
  </property>
  </property>
  <property name="windowTitle">
  <property name="windowTitle">
@@ -76,7 +76,7 @@
    <rect>
    <rect>
     <x>527</x>
     <x>527</x>
     <y>40</y>
     <y>40</y>
     <width>401</width>
     <width>415</width>
     <height>51</height>
     <height>51</height>
    </rect>
    </rect>
   </property>
   </property>
@@ -99,8 +99,8 @@
    <rect>
    <rect>
     <x>560</x>
     <x>560</x>
     <y>100</y>
     <y>100</y>
     <width>371</width>
     <width>381</width>
     <height>371</height>
     <height>381</height>
    </rect>
    </rect>
   </property>
   </property>
   <property name="frameShape">
   <property name="frameShape">
@@ -110,9 +110,9 @@
    <property name="geometry">
    <property name="geometry">
     <rect>
     <rect>
      <x>0</x>
      <x>0</x>
      <y>0</y>
      <y>10</y>
      <width>408</width>
      <width>408</width>
      <height>351</height>
      <height>361</height>
     </rect>
     </rect>
    </property>
    </property>
    <layout class="QGridLayout" name="gridLayout_3">
    <layout class="QGridLayout" name="gridLayout_3">
@@ -131,7 +131,7 @@
        </size>
        </size>
       </property>
       </property>
       <property name="text">
       <property name="text">
        <string>Name</string>
        <string>Source</string>
       </property>
       </property>
      </widget>
      </widget>
     </item>
     </item>
@@ -297,7 +297,7 @@
        </size>
        </size>
       </property>
       </property>
       <property name="text">
       <property name="text">
        <string>HPBW(arcmim)</string>
        <string>HPBW (arcmin)</string>
       </property>
       </property>
      </widget>
      </widget>
     </item>
     </item>
@@ -425,7 +425,7 @@
        </size>
        </size>
       </property>
       </property>
       <property name="text">
       <property name="text">
        <string>Offset (K)</string>
        <string>Tsys (K)</string>
       </property>
       </property>
      </widget>
      </widget>
     </item>
     </item>
@@ -542,7 +542,7 @@
     <x>20</x>
     <x>20</x>
     <y>100</y>
     <y>100</y>
     <width>541</width>
     <width>541</width>
     <height>431</height>
     <height>581</height>
    </rect>
    </rect>
   </property>
   </property>
   <property name="frameShape">
   <property name="frameShape">
@@ -554,8 +554,14 @@
   <layout class="QVBoxLayout" name="verticalLayout">
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
    <item>
     <widget class="QLabel" name="label_10">
     <widget class="QLabel" name="label_10">
      <property name="font">
       <font>
        <weight>75</weight>
        <bold>true</bold>
       </font>
      </property>
      <property name="text">
      <property name="text">
       <string>Current Subscan</string>
       <string>Ongoing Subscan</string>
      </property>
      </property>
      <property name="alignment">
      <property name="alignment">
       <set>Qt::AlignCenter</set>
       <set>Qt::AlignCenter</set>
@@ -605,8 +611,14 @@
    </item>
    </item>
    <item>
    <item>
     <widget class="QLabel" name="label_9">
     <widget class="QLabel" name="label_9">
      <property name="font">
       <font>
        <weight>75</weight>
        <bold>true</bold>
       </font>
      </property>
      <property name="text">
      <property name="text">
       <string>Last Subscan</string>
       <string>Completed Subscan</string>
      </property>
      </property>
      <property name="alignment">
      <property name="alignment">
       <set>Qt::AlignCenter</set>
       <set>Qt::AlignCenter</set>
@@ -619,9 +631,9 @@
   <property name="geometry">
   <property name="geometry">
    <rect>
    <rect>
     <x>560</x>
     <x>560</x>
     <y>470</y>
     <y>610</y>
     <width>371</width>
     <width>381</width>
     <height>61</height>
     <height>71</height>
    </rect>
    </rect>
   </property>
   </property>
   <property name="frameShape">
   <property name="frameShape">
@@ -634,7 +646,7 @@
    <property name="geometry">
    <property name="geometry">
     <rect>
     <rect>
      <x>0</x>
      <x>0</x>
      <y>10</y>
      <y>20</y>
      <width>401</width>
      <width>401</width>
      <height>34</height>
      <height>34</height>
     </rect>
     </rect>
@@ -665,12 +677,133 @@
    </property>
    </property>
   </widget>
   </widget>
  </widget>
  </widget>
  <widget class="QFrame" name="frame_3">
   <property name="geometry">
    <rect>
     <x>560</x>
     <y>480</y>
     <width>381</width>
     <height>131</height>
    </rect>
   </property>
   <property name="frameShape">
    <enum>QFrame::Box</enum>
   </property>
   <widget class="QLabel" name="label_6">
    <property name="geometry">
     <rect>
      <x>10</x>
      <y>10</y>
      <width>121</width>
      <height>21</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <weight>75</weight>
      <bold>true</bold>
     </font>
    </property>
    <property name="text">
     <string>Sky Offsets</string>
    </property>
   </widget>
   <widget class="QWidget" name="gridLayoutWidget">
    <property name="geometry">
     <rect>
      <x>0</x>
      <y>40</y>
      <width>408</width>
      <height>71</height>
     </rect>
    </property>
    <layout class="QGridLayout" name="gridLayout">
     <item row="0" column="0">
      <widget class="QLabel" name="label_4">
       <property name="sizePolicy">
        <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
         <horstretch>0</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
       <property name="minimumSize">
        <size>
         <width>100</width>
         <height>22</height>
        </size>
       </property>
       <property name="text">
        <string>Azimuth (Deg)</string>
       </property>
      </widget>
     </item>
     <item row="0" column="1">
      <widget class="QLineEdit" name="azOffsetlineEdit">
       <property name="minimumSize">
        <size>
         <width>94</width>
         <height>22</height>
        </size>
       </property>
       <property name="maximumSize">
        <size>
         <width>150</width>
         <height>26</height>
        </size>
       </property>
       <property name="readOnly">
        <bool>true</bool>
       </property>
      </widget>
     </item>
     <item row="1" column="0">
      <widget class="QLabel" name="label_5">
       <property name="sizePolicy">
        <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
         <horstretch>0</horstretch>
         <verstretch>0</verstretch>
        </sizepolicy>
       </property>
       <property name="minimumSize">
        <size>
         <width>100</width>
         <height>22</height>
        </size>
       </property>
       <property name="text">
        <string>Elevation (Deg)</string>
       </property>
      </widget>
     </item>
     <item row="1" column="1">
      <widget class="QLineEdit" name="elOffsetlineEdit">
       <property name="minimumSize">
        <size>
         <width>94</width>
         <height>22</height>
        </size>
       </property>
       <property name="maximumSize">
        <size>
         <width>150</width>
         <height>26</height>
        </size>
       </property>
       <property name="readOnly">
        <bool>true</bool>
       </property>
      </widget>
     </item>
    </layout>
   </widget>
  </widget>
 </widget>
 </widget>
 <customwidgets>
 <customwidgets>
  <customwidget>
  <customwidget>
   <class>QwtPlot</class>
   <class>QwtPlot</class>
   <extends>QFrame</extends>
   <extends>QFrame</extends>
   <header>qwt_plot.h</header>
   <header>qwt_plot.h</header>
   <container>1</container>
  </customwidget>
  </customwidget>
 </customwidgets>
 </customwidgets>
 <resources/>
 <resources/>
+30 −0
Original line number Original line Diff line number Diff line
@@ -416,6 +416,36 @@ def help(command):
        print 'e.g. > help(setupCCB)'
        print 'e.g. > help(setupCCB)'
        print 'help() (without argument) lists all the available commands'
        print 'help() (without argument) lists all the available commands'



def ifdist():
    """
    ifdist=input,pol,att
    allowed values for input:
        1 input1 
        2 input2 

    allowed value for pol for input1
        0 nessun ingresso selezionato
        1 ricevitore in vertex Right Pol
        2 ricevitore L Right Pol
        3 ricevitore X Right Pol
        4 ricevitore S Right Pol
        5 spare1
        6 spare2

    allowed value for pol for input2
        0 nessun ingresso selezionato
        1 ricevitore in vertex Left Pol
        2 ricevitore L Left Pol
        3 ricevitore X Left Pol
        4 ricevitore S Left Pol
        5 ricevitore S Right Pol (per oss. geo)
        6 spare1

    allowed values for att:
        from 0 to 63, each step is 0.5 dB
    """

def initialize():
def initialize():
    """
    """
    initialize=code 
    initialize=code 
Loading