if flags==0:
print "Warning: Requesting to send no buffer.";
- if self.MCPcanstat()>>5!=0:
- print "Warning: currently in %s mode. NOT in normal mode! May not transmit." %self.MCPcanstatstr();
self.SPItrans([0x80|flags]);
def writetxbuffer(self,packet,packbuf=0):
"""Writes the transmit buffer."""
self.SPItrans([0x40|(packbuf<<1)]+packet);
- #READ BACK BUFFER 0 to check what we're about to send out
- data=self.SPItrans([0x03, 0x31,
- 0x00,0x00, #SID
- 0x00,0x00, #EID
- 0x00, #DLC
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00
- ]);
- print "about to transmit:" + self.packet2str(data[2:len(data)]);
-
def simpleParse(self,packet):
dataPt = ord(packet[0]);
For now, only TXB0 is supported."""
self.writetxbuffer(packet,0);
-
- #self.SPItrans([0x81]);
self.MCPrts(TXB0=True);
toprint=toprint+("%02x "%ord(bar))
return toprint;
- def packet2parsed(self,data):
+
+ ## This code could be drastica
+ def packet2parsedstr(self,data):
dp1 = ord(data[0])
dp2 = ord(data[1])
dp5 = ord(data[4])
#converts the CAN message to a string
msg="";
- for bar in data:
- msg=msg+("%02x"%ord(bar))
- packet = {'msg':msg}
+
#get the ide bit. allows us to check to see if we have an extended
#frame
- packet['ide'] = (dp2 & 0x0f)>>3
+ ide = (dp2 & 0x0f)>>3
#we have an extended frame
- if( packet['ide'] != 0):
+ if( ide != 0):
#get lower nibble, last 2 bits
eId = dp2 & 0x03
eId = eId<<8 | ord(data[2])
- packet['eID'] = eId<<8 | ord(data[3])
- packet['rtr'] = dp5>>6 & 0x01
+ eId = eId<<8 | ord(data[3])
+ rtr = dp5>>6 & 0x01
+ eIDmsg = " eID: %06d" %(eId)
+ rtrmsg = " rtr: %d" % (rtr)
else:
- packet['rtr'] = dp2>>4 & 0x01
-
- #error check, 2nd msb of the lower nibble of byte 2 should be 0
- if( (dp2 & 0x04) == 4 ):
- packet['error'] = 1
- #error check an always 0 bit
- if( (dp5 & 0xf0) == 240):
- packet['error'] = 1
+ rtr = dp2>>4 & 0x01
+ eIDmsg = ""
+ rtrmsg = " rtr: %d"%(rtr)
# Create the standard ID. from the message
- packet['sID'] = dp1<<3 | dp2>>5
-
-
+ sID = dp1<<3 | dp2>>5
length = dp5 & 0x0f
- packet['length'] = length
-
- if( length > 8):
- packet['error'] = 1
#generate the data section
+ dbmsg = ""
for i in range(0,length):
- idx = 5+i
- dbidx = 'db%d' % i
- packet[dbidx] = data[idx]
- return packet
+ idx = 5 + i
+ dbmsg += " %03d"%ord(data[idx])
+ msg = "sID: %04d"%sID
+ msg += eIDmsg + rtrmsg
+ msg += " length: %d"%(length)
+ msg += dbmsg
+
+ return msg
def peek8(self,adr):
# TXRTSCTRL = x0D
-
\ No newline at end of file
+