Example #1
0
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;
}