connectors/LPC/LPCProto.py
author laurent
Wed, 17 Nov 2010 08:30:35 +0100
changeset 566 657900299557
parent 563 c74a37d156df
child 571 427bf9130d12
permissions -rw-r--r--
Fix bug in LPCBeremiz that use input retrieve and publish code for ouput with the same location
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     1
import serial
453
923d036dfa90 LPC connector enhancements
edouard
parents: 448
diff changeset
     2
import exceptions
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     3
from threading import Lock
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     4
545
627e5c636a4f Refactored LPC connector for new bootloader and application modes
Lolitech
parents: 536
diff changeset
     5
class LPCProtoError(exceptions.Exception):
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     6
        """Exception class"""
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     7
        def __init__(self, msg):
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     8
                self.msg = msg
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
     9
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    10
        def __str__(self):
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    11
                return "LPC communication error ! " + str(self.msg)
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    12
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    13
class LPCProto:
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    14
    def __init__(self, port, rate, timeout):
453
923d036dfa90 LPC connector enhancements
edouard
parents: 448
diff changeset
    15
        # serialize access lock
923d036dfa90 LPC connector enhancements
edouard
parents: 448
diff changeset
    16
        self.TransactionLock = Lock()
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    17
        # open serial port
453
923d036dfa90 LPC connector enhancements
edouard
parents: 448
diff changeset
    18
#        self.serialPort = serial.Serial( port, rate, timeout = timeout )
923d036dfa90 LPC connector enhancements
edouard
parents: 448
diff changeset
    19
        # Debugging serial stuff
563
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    20
        self.serialPort = serial.Serial( port, rate, timeout = timeout )
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    21
#        class myser:
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    22
#            def read(self_,cnt):
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    23
#                res = self._serialPort.read(cnt)
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    24
#                if len(res) > 16:
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    25
#                    print "Recv :", map(hex,map(ord,res[:16])), "[...]"
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    26
#                else:
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    27
#                    print "Recv :", map(hex,map(ord,res))
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    28
#                    
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    29
#                return res
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    30
#            def write(self_, str):
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    31
#                if len(str) > 16:
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    32
#                    print "Send :", map(hex,map(ord,str[:16])), "[...]"
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    33
#                else:
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    34
#                    print "Send :", map(hex,map(ord,str))
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    35
#                self._serialPort.write(str)
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    36
#            def flush(self_):
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    37
#                self._serialPort.flush()
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    38
#        self.serialPort = myser()
453
923d036dfa90 LPC connector enhancements
edouard
parents: 448
diff changeset
    39
        # start with empty
448
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    40
        self.serialPort.flush()
8ef035de86de Some rough copy'n'paste to pave path for an LPC connector
ed
parents:
diff changeset
    41
    
563
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    42
    def __del__(self):
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    43
        if self.serialPort:
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    44
            self.serialPort.close()
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    45
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    46
    def close(self):
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    47
        self.serialPort.close()
c74a37d156df Better serial comm handling in LPC connector
Lolitech
parents: 545
diff changeset
    48
        self.serialPort = None