void* Display::run_display(void* arg) { Display* self = (Display*)arg; while(1) { switch(self->state) { case AVERAGE: self->displayAvgSpeed(self->calculations->get_average_speed()); self->displayCurrSpeed(self->calculations->get_current_speed()); self->updateDisplay(self->unit,self->tenth,self->isFraction,self->port_u, self->port_t, 0); self->updateDisplay(self->unit_c,self->tenth_c, self->isFraction_c, self->portCurr_u, self->portCurr_t, 0); break; case DISTANCE: self->displayTripDistance(self->calculations->get_distance()); self->updateDisplay(self->unit_c,self->tenth_c, self->isFraction_c, self->portCurr_u, self->portCurr_t, 0); self->updateDisplay(self->unit,self->tenth,self->isFraction,self->port_u, self->port_t, 0); break; case DURATION: self->displayTripTime(self->calculations->get_duration()); self->updateDisplay(self->unit_c,self->tenth_c, self->isFraction_c, self->portCurr_u, self->portCurr_t, 1); self->updateDisplay(self->unit,self->tenth,self->isFraction,self->port_u, self->port_t, 0); break; case SPEED_SCALE: self->displaySpeedScale(); self->updateDisplay(self->unit,self->tenth,self->isFraction,self->port_u, self->port_t, 0); break; case WHEEL_SIZE: self->displayWheelSize(self->calculations->get_wheel_size()); self->updateDisplay(self->unit_c,self->tenth_c, self->isFraction_c, self->portCurr_u, self->portCurr_t, 0); self->updateDisplay(self->unit,self->tenth,self->isFraction,self->port_u, self->port_t, 0); break; default: break; } } return NULL; }