blackbox/main.c

changeset 92
c57f43f25a5c
parent 91
e0738355b517
child 103
52fd4283cd2c
--- a/blackbox/main.c	Sat Dec 17 14:11:16 2011 +0100
+++ b/blackbox/main.c	Sat Dec 17 14:37:55 2011 +0100
@@ -42,6 +42,7 @@
     unsigned accel:4; // 4 bits last configured acceleration
     unsigned trackswitch:1; // 1bit bool
     unsigned canrefuel:1; // 1bit bool
+    unsigned unlimitedfuel:1; // 1bit bool
     uint16_t jumpstart_time, laps, fuel;
     u32 lap_time_start, lap_time;
 } cardata;
@@ -400,9 +401,9 @@
     tmp |=  (0b1000000000 | (controller << 6));
     // FUEL BIT GETS SET WHEN FUEL == 0,
     // THIS REQUIRES PHYSICAL CAR FUEL LEVEL SET TO ZERO BEFORE!
-    if ( ((PIN(SW_FUEL_PORT) & _BV(SW_FUEL)) != 0) | (slot[controller].fuel == 0)) tmp |= 1; // benzinstand aktiv - tankmodusschalter
+    if ( ((PIN(SW_FUEL_PORT) & _BV(SW_FUEL)) != 0) | (slot[controller].fuel == 0)) tmp |= 1;
     if (insert_queue(tmp, 9)) {
-        if (fuel_enabled) {
+        if ((fuel_enabled) && (slot[controller].unlimitedfuel == 0)) {
             if (speed != 0) {
                 // do the fuel calculation, regardless if fuel logic active or not
                 tmp = (uint8_t)(((slot[controller].accel * speed) + 1) / fuel_divisor);
@@ -485,6 +486,7 @@
         slot[i].seccnt = 0;
         slot[i].accel = 15; // full acceleration per default - TODO
         slot[i].canrefuel = 0;
+        if (i<4) slot[i].unlimitedfuel = 0; else slot[i].unlimitedfuel = 1;
         slot[i].lap_time_start.value = 0;
         slot[i].lap_time.value = 0;
     }
@@ -596,11 +598,8 @@
 
 int main(void)
 {
-
     uint8_t  packet_index = 1;
 
-
-
     init_hardware();
     reset_vars();
     LED(3, 1); // enable middle led == idle mode

mercurial