-
- #### ON-CHIP FILTERING
- if(standardid != None):
- if( comment == None):
- comment = ""
- self.client.MCPreqstatConfiguration();
- self.client.poke8(0x60,0x26); # set RXB0 CTRL register to ONLY accept STANDARD messages with filter match (RXM1=0, RMX0=1, BUKT=1)
- self.client.poke8(0x20,0xFF); #set buffer 0 mask 1 (SID 10:3) to FF
- self.client.poke8(0x21,0xE0); #set buffer 0 mask 2 bits 7:5 (SID 2:0) to 1s
- if(len(standardid)>2):
- self.client.poke8(0x70,0x20); # set RXB1 CTRL register to ONLY accept STANDARD messages with filter match (RXM1=0, RMX0=1)
- self.client.poke8(0x24,0xFF); #set buffer 1 mask 1 (SID 10:3) to FF
- self.client.poke8(0x25,0xE0); #set buffer 1 mask 2 bits 7:5 (SID 2:0) to 1s
-
- for filter,ID in enumerate(standardid):
-
- if (filter==0):
- RXFSIDH = 0x00;
- RXFSIDL = 0x01;
- elif (filter==1):
- RXFSIDH = 0x04;
- RXFSIDL = 0x05;
- elif (filter==2):
- RXFSIDH = 0x08;
- RXFSIDL = 0x09;
- elif (filter==3):
- RXFSIDH = 0x10;
- RXFSIDL = 0x11;
- elif (filter==4):
- RXFSIDH = 0x14;
- RXFSIDL = 0x15;
- else:
- RXFSIDH = 0x18;
- RXFSIDL = 0x19;
-
- #### split SID into different regs
- SIDlow = (ID & 0x07) << 5; # get SID bits 2:0, rotate them to bits 7:5
- SIDhigh = (ID >> 3) & 0xFF; # get SID bits 10:3, rotate them to bits 7:0
-
- #write SID to regs
- self.client.poke8(RXFSIDH,SIDhigh);
- self.client.poke8(RXFSIDL, SIDlow);
-
- if (verbose == True):
- print "Filtering for SID %d (0x%02xh) with filter #%d"%(ID, ID, filter);
- comment += ("f%d" %(ID))
-