X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FFordExperiments.py;h=15e59b62bf46dd103524b5fcae1b31994c61575c;hp=5d04842da9097171b7d4bf7e1e2a3066dc5c2de2;hb=779339271ee691248b6353094ca93de04b8ce75a;hpb=4fb8c2681589e061df26c889e5e5888c255e0fcb diff --git a/client/FordExperiments.py b/client/FordExperiments.py index 5d04842..15e59b6 100644 --- a/client/FordExperiments.py +++ b/client/FordExperiments.py @@ -356,7 +356,45 @@ class FordExperiments(experiments): # spit new value for 1 second while (time.time()-starttime < 10): self.multiPacketSpit(packet0rts=True) + + def setEngineTemp(self,temp): + self.client.serInit() + self.spitSetup(500) + + self.addFilter([1056, 1056, 1056,1056,1056,1056]) + self.client.rxpacket() + self.client.rxpacket() + self.client.rxpacket() + SIDlow = (1056 & 0x07) << 5; # get SID bits 2:0, rotate them to bits 7:5 + SIDhigh = (1056 >> 3) & 0xFF; # get SID bits 10:3, rotate them to bits 7:0 + + startTime = time.time() + #while((time.time() - startTime) < 10): + packet = None; + + # catch a packet and check its db4 value + while (packet == None): + packet=self.client.rxpacket(); + + + newTemp = int(math.ceil(level/1.8 + 22)) + #print "Fake MPH = 1.617(%d)-63.5 = %d" %(newSpeed, mph) + + + newPacket = [SIDhigh, SIDlow, 0x00,0x00, # pad out EID regs + 0x08, # bit 6 must be set to 0 for data frame (1 for RTR) + # lower nibble is DLC + newTemp,ord(packet[6]),ord(packet[7]),ord(packet[8]),ord(packet[9]),ord(packet[10]),ord(packet[11]),ord(packet[12])] + + # load new packet into TXB0 and check time + self.multiPacketSpit(packet0=newPacket, packet0rts=True) + starttime = time.time() + + # spit new value for 1 second + while (time.time()-starttime < 10): + self.multiPacketSpit(packet0rts=True) + def overHeatEngine(self): self.client.serInit() self.spitSetup(500) @@ -842,66 +880,50 @@ class FordExperiments(experiments): # NOW THE FUN STUFF!!!!! - music = wave.open("../../contrib/ted/beethovensfifth.wav", 'r'); + music = wave.open("../../contrib/ted/beethovensfifth.wav.wav", 'r'); print "number of frames: %d " %music.getnframes() print "number of channels: %d " %music.getnchannels() print "sample width: %d " %music.getsampwidth() print "framerate: %d " %music.getframerate() print "compression: %s " %music.getcompname() - length = music.getnframes() - pos = music.tell() - print " NOW NOW NOW NOW NOW NOW NOW NOW NOW" - while(pos < music.getnframes()): - runningaverage = 0 + numFramesToRead = music.getframerate()*.1 # grab .1s of audio + + while(1): + + runningSum = 0 - pos = music.tell() - sample = music.readframes(2300) #approximately .05 seconds of audio --> 7133184/44100/.1 - #print "NEXT FRAME" + sample = music.readframes(numFramesToRead) # grab .1s of audio length = len(sample) - #print length for i in range(0, length,4): - runningaverage += ord(sample[i])#ord(sample[i]) - runningaverage += ord(sample[i+2]) - - avg = runningaverage/(length / 4)/2 - #print avg + runningSum += ord(sample[i]) #average the dual-channel + runningSum += ord(sample[i+2]) - - #print avg-120 - val = (40 + 5*(avg-120)) + avg = runningSum/(length / 2) # we used 2 of every 4 frames, so divide length by 2 + + val = (40 + 5*(avg-120)) # normalize to speedometer range of values print "speedometerVal = %f " %val; - print "speed = %f" %(1.617*val-63.5) + print "speed = %f" %(1.617*val-63.5) # speed we're trying to display - if (val > 255): + if (val > 255): # ensure we don't run off acceptable range val = 255 elif (val < 0): val = 0 - newPacket[9] = int(val) + newPacket[9] = int(val) # write it to the packet # load new packet into TXB0 and check time self.multiPacketSpit(packet0=newPacket, packet0rts=True) starttime = time.time() # spit new value for 1 second - while (time.time()-starttime < .05): + while (time.time()-starttime < .1): self.multiPacketSpit(packet0rts=True) -#for foo in byte: -# print "%d" %ord(foo) - -#39.27 -#113 - - - - - # read in 26 frames # average them # normalize to our range of values (conversion 1.6167*x-63.5 @@ -913,6 +935,24 @@ class FordExperiments(experiments): #sample width: 2 --> 2 bytes per sample #framerate: 44100 + def engineDiagnostic(self, data): + + self.addFilter([513, 513, 513,513]) + + startTime = tT.time() + while((tT.time() - startTime ) < 15): + packet = None; + + #catch a packet to decode + while (packet == None): + packet=self.client.rxpacket(); + + rpm = 64.5 * ord(packet[5]) - 61.88 + mph = 1.617 * ord(packet[9]) - 63.5 + + data.put("Engine RPM: %d Current Speed: %d mph", %(rpm, mph)) + time.sleep(.5) +