X-Git-Url: http://git.rot13.org//?p=goodfet;a=blobdiff_plain;f=client%2FGoodFETMCPCAN.py;fp=client%2FGoodFETMCPCAN.py;h=d99e07c29654f11d1febff6a7608e4d087a70620;hp=8785fed088a7d7b4b5df5655a256f2bdfb762c15;hb=c1945b6830167f16f8e37b55cab3935283d7d2cc;hpb=52173271faa5f60f9167ca379324511be8107aed diff --git a/client/GoodFETMCPCAN.py b/client/GoodFETMCPCAN.py index 8785fed..d99e07c 100644 --- a/client/GoodFETMCPCAN.py +++ b/client/GoodFETMCPCAN.py @@ -245,6 +245,45 @@ class GoodFETMCPCAN(GoodFETSPI): ]); print "about to transmit:" + self.packet2str(data[2:len(data)]); + + def simpleParse(self,packet): + dataPt = ord(packet[0]); + dataPt2 = ord(packet[1]); + # check if we have a standard frame, the msb of the second + # nibble will be 1. otherwise it is an extended rame + stdCheck = dataPt2 & 0x0f + if( stdCheck == 16 ): + #arb id is first byte + 3 msb of the 2nd byte + dataPt = dataPt<<3 | dataPt2>>5 + print "Standard Packet \n Arb ID: "+("%d"%dataPt) + else: + #arb id is first byte + 3 msb + 2 lsb of 2nd byte + + # 3rd byte + 4th byte + dataPt = dataPt<<3 | dataPt2>>5 + dataPt = dataPt<<2 | (dataPt2 & 0x03) + dataPt = dataPt<<8 | ord(packet[2]) + dataPt = dataPt<<8 | ord(packet[3]) + print "Extended Data Frame \n Arb ID: "+("%d"%dataPt) + + #find the dataLength + dataPt5 = packet[4] + dataLength = dataPt5 & 0x0e + print "Data Length: "+("%d"%dataLength) + # Print the data packet + print "Data:" + # Temporary, until correct packets are read + if( dataLength > 8 ): + dataLength = 8 + toprint = self.pcket2str(packet[5:12]) + print toprint + # For reading correct packets + # if (dataLength > 8 ): + # print "Acceptable Length Exceeded" + # Data length value should never exceed 8 + # else: + # toprint = self.pcket2str(packet[5:(5+dataLength)]) + # print toprint + def txpacket(self,packet): """Transmits a packet through one of the outbound buffers. As usual, the packet should begin with SIDH.