X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=client%2FFordExperiments.py;h=4461acd7257ab15a53930ff6ff225eaa5cf1e528;hb=4a8d380999698852164f09801cdbc8346f5a42e8;hp=2c9268b556792e59d7eefbdd62d155563e6e2c83;hpb=2b486a8af6f4bff2dd9782c556284c9a419e4043;p=goodfet diff --git a/client/FordExperiments.py b/client/FordExperiments.py index 2c9268b..4461acd 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) @@ -629,7 +667,11 @@ class FordExperiments(experiments): self.client.rxpacket() SIDlow = (513 & 0x07) << 5; # get SID bits 2:0, rotate them to bits 7:5 SIDhigh = (513 >> 3) & 0xFF; # get SID bits 10:3, rotate them to bits 7:0 - + + SID2 = (1056 & 0x07) << 5; + SID2high = (1056 >>3) & 0xFF; + packet_odometer = [SID2high, SID2, 0 ,0,8, 65, 0, 32, 120, 0, 0, 1, 247] + startTime = time.time() #while((time.time() - startTime) < 10): @@ -662,8 +704,10 @@ class FordExperiments(experiments): # spit new value for 1 second while (time.time()-starttime < 10): - self.multiPacketSpit(packet0rts=True) - + #self.multiPacketSpit(packet0rts=True) + odomFuzz = random.randint(1,254) + packet_odometer[6] = odomFuzz + self.multiPacketSpit(packet0=newPacket, packet1 =packet_odometer,packet0rts = True, packet1rts=True) def speedometerHack(self, inputs): @@ -706,6 +750,7 @@ class FordExperiments(experiments): # spit new value for 1 second while (time.time()-starttime < 1): + self.multiPacketSpit(packet0rts=True) def rpmToByteValue(self, rpm): @@ -842,7 +887,7 @@ class FordExperiments(experiments): # NOW THE FUN STUFF!!!!! - music = wave.open("../../contrib/ted/beethovensfifth.wav.wav", 'r'); + music = wave.open("../../contrib/ted/beethovensfifth.wav", 'r'); print "number of frames: %d " %music.getnframes() print "number of channels: %d " %music.getnchannels() print "sample width: %d " %music.getsampwidth() @@ -850,13 +895,15 @@ class FordExperiments(experiments): print "compression: %s " %music.getcompname() - numFramesToRead = music.getframerate()*.1 # grab .1s of audio - + numFramesToRead = music.getframerate()*.05 # grab .1s of audio + sampNum = 0 + avgprev = 0 + avg = 0 while(1): - + avgprev = avg runningSum = 0 - sample = music.readframes(numFramesToRead) # grab .1s of audio + sample = music.readframes(int(numFramesToRead)) # grab .1s of audio length = len(sample) @@ -864,9 +911,12 @@ class FordExperiments(experiments): runningSum += ord(sample[i]) #average the dual-channel runningSum += ord(sample[i+2]) - avg = runningSum/(length / 2) # we used 2 of every 4 frames, so divide length by 2 + avg = math.fabs(runningSum/(length /2) -127) # we used 2 of every 4 frames, so divide length by 2 + if( sampNum > 0): + avg = (avg+avgprev)/2 + sampNum = 1 - val = (40 + 5*(avg-120)) # normalize to speedometer range of values + val = int(avg*15 + 40) # normalize to speedometer range of values print "speedometerVal = %f " %val; print "speed = %f" %(1.617*val-63.5) # speed we're trying to display @@ -897,13 +947,14 @@ class FordExperiments(experiments): #sample width: 2 --> 2 bytes per sample #framerate: 44100 - def engineDiagnostic(self, data): - - self.addFilter([513, 513, 513,513]) + def engineDiagnostic(self, data): + self.client.serInit() + self.spitSetup(500) + self.addFilter([513, 513, 513,513,513,513]) - startTime = tT.time() + startTime = tT.time() while((tT.time() - startTime ) < 15): - packet = None; + packet = None; #catch a packet to decode while (packet == None): @@ -911,8 +962,8 @@ class FordExperiments(experiments): 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)) + print "putting data in" + data.put("Engine RPM: %d Current Speed: %d mph\n"%(rpm, mph)) time.sleep(.5)