Subversion Repositories HomeAutomation

Rev

Rev 736 | Rev 746 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed

Rev 736 Rev 738
Line 4... Line 4...
4
# identifiable by its type and contents
4
# identifiable by its type and contents
5
#
5
#
6
###########################################################
6
###########################################################
7
 
7
 
8
class CanPkt:
8
class CanPkt:
-
 
9
   
-
 
10
    STANDARD_ID_MASK = 0x1FF
-
 
11
    EXTENDED_ID_MASK = 0x1FFFFFFF
-
 
12
    DATA_MASK = 0xFF
-
 
13
    DATA_LENGTH = 8
-
 
14
   
-
 
15
    nodeId = 0
-
 
16
    extended = True
-
 
17
    remote = False
-
 
18
    data = []
-
 
19
 
-
 
20
    def __init__( self, id, data, extended = True, remote = False ):
-
 
21
        if extended:
-
 
22
            self.nodeId = id & self.EXTENDED_ID_MASK
-
 
23
        else:
-
 
24
            self.nodeId = id & self.STANDARD_ID_MASK
-
 
25
        self.data = [val & self.DATA_MASK for val in data[:self.DATA_LENGTH]]
-
 
26
        self.extended = extended
-
 
27
        self.remote = remote
-
 
28
 
-
 
29
    def toString(self):
-
 
30
        strpkt = 'PKT ' + hex(self.nodeId)[2:] # '0x' is cut from can2serial link
-
 
31
        if self.extended:
-
 
32
            strpkt += ' 1'
-
 
33
        else:
-
 
34
            strpkt += ' 0'
-
 
35
        if self.remote:
-
 
36
            strpkt += ' 1'
-
 
37
        else:
-
 
38
            strpkt += ' 0'
-
 
39
        bytestrings = ''
-
 
40
        for byte in self.data:
-
 
41
            bytestrings = bytestrings + ' ' + str(byte)
-
 
42
        return (strpkt + bytestrings)
-
 
43
   
-
 
44
    @staticmethod
-
 
45
    def stringToCanPkt(self, str):
-
 
46
        """ Converts can message string to CanPkt class """
-
 
47
        strbyteslist = str.split(' ')
-
 
48
        nodeid = int('0x'+strbyteslist[1], 16)
-
 
49
        intvalues = [int(val, 10) for val in strbyteslist[2:]]
-
 
50
        extended = (intvalues[0] == 1)
-
 
51
        remote = (intvalues[1] == 1)
-
 
52
        pkt = CanPkt(nodeid, intvalues[2:], extended, remote)
-
 
53
        return pkt
-
 
54
 
9
    pass
55