connectors/LPC/__init__.py
changeset 502 5343ae43f6d0
parent 448 8ef035de86de
child 508 73ecb803d8af
--- a/connectors/LPC/__init__.py	Thu Dec 10 12:31:42 2009 +0100
+++ b/connectors/LPC/__init__.py	Thu Dec 10 14:57:27 2009 +0100
@@ -19,6 +19,7 @@
 #License along with this library; if not, write to the Free Software
 #Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 import traceback
+import LPCObject
 
 
 def LPC_connector_factory(uri, pluginsroot):
@@ -26,62 +27,6 @@
     This returns the connector to LPC style PLCobject
     """
     pluginsroot.logger.write(_("Connecting to URI : %s\n")%uri)
-
-    servicetype, location = uri.split("://")
-    
-    # Try to get the proxy object
-    try :
-        # TODO: Open Serial Port
-        RemotePLCObjectProxy = LPCObject(pluginsroot) # LPC_PLCObject_Proxy
-    except Exception, msg:
-        pluginsroot.logger.write_error(_("Couldn't connect !\n"))
-        pluginsroot.logger.write_error(traceback.format_exc())
-        return None
-
-    def LPCCatcher(func, default=None):
-        """
-        A function that catch a pyserial exceptions, write error to logger
-        and return defaul value when it happen
-        """
-        def catcher_func(*args,**kwargs):
-            try:
-                return func(*args,**kwargs)
-            except Exception,e:
-                #pluginsroot.logger.write_error(traceback.format_exc())
-                pluginsroot.logger.write_error(str(e)+"\n")
-                pluginsroot._connector = None
-                return default
-        return catcher_func
-
-    # Check connection is effective. 
-    # lambda is for getattr of GetPLCstatus to happen inside catcher
-    if LPCCatcher(lambda:RemotePLCObjectProxy.GetPLCstatus())() == None:
-        pluginsroot.logger.write_error(_("Cannot get PLC status - connection failed.\n"))
-        return None
-
-
-    class LPCProxy:
-        """
-        A Serial proxy class to handle Beremiz Pyro interface specific behavior.
-        And to put LPC exception catcher in between caller and pyro proxy
-        """
-        def _LPCGetTraceVariables(self):
-            return self.RemotePLCObjectProxy.GetTraceVariables()
-        GetTraceVariables = LPCCatcher(_LPCGetTraceVariables,("Broken",None,None))
-
-        def _LPCGetPLCstatus(self):
-            return RemotePLCObjectProxy.GetPLCstatus()
-        GetPLCstatus = LPCCatcher(_LPCGetPLCstatus, "Broken")
-        
-        def __getattr__(self, attrName):
-            member = self.__dict__.get(attrName, None)
-            if member is None:
-                def my_local_func(*args,**kwargs):
-                    return RemotePLCObjectProxy.__getattr__(attrName)(*args,**kwargs)
-                member = LPCCatcher(my_local_func, None)
-                self.__dict__[attrName] = member
-            return member
-
-    return LPCProxy()
+    return LPCObject()