fctom1215
2021-02-07 20bd5ec5a7f859c0f98f13ef62b906b1c781e51b
lib/src/main/cpp/test_common/car_sensor.cpp
@@ -225,11 +225,13 @@
static void WriteCarStatus(uint16_t id, int value)
{
    int old_value;
    pthread_mutex_lock(&status_rw_mutex);
    old_value = CarStatus[id];
    CarStatus[id] = value;
    pthread_mutex_unlock(&status_rw_mutex);
    if (id != OBD_SPEED && id != ENGINE_RPM) {
    if (id != OBD_SPEED && id != ENGINE_RPM && old_value != value) {
        uint8_t buffer[6];
        buffer[0] = HI_UINT16(id);
@@ -246,13 +248,29 @@
static void LRLightTimeout(union sigval sig)
{
    AppTimer_delete(LRLightTimeout);
    WriteCarStatus(TURN_SIGNAL_LAMP, OFF_LIGHT);
    if (!left_turn_signal && !right_turn_signal) {
        WriteCarStatus(TURN_SIGNAL_LAMP, OFF_LIGHT);
    } else if (left_turn_signal && right_turn_signal) {
        WriteCarStatus(TURN_SIGNAL_LAMP, HAZARD_LIGHTS);
    } else if (left_turn_signal) {
        WriteCarStatus(TURN_SIGNAL_LAMP, LEFT_TURN_LIGHT);
    } else {
        WriteCarStatus(TURN_SIGNAL_LAMP, RIGHT_TURN_LIGHT);
    }
}
static void ChangeLRLight(int light)
{
    WriteCarStatus(TURN_SIGNAL_LAMP, light);
    DEBUG("ChangeLRLight %d %d", left_turn_signal, right_turn_signal);
    if (!left_turn_signal && !right_turn_signal) {
        WriteCarStatus(TURN_SIGNAL_LAMP, OFF_LIGHT);
    } else if (left_turn_signal && right_turn_signal) {
        WriteCarStatus(TURN_SIGNAL_LAMP, HAZARD_LIGHTS);
    } else if (left_turn_signal) {
        WriteCarStatus(TURN_SIGNAL_LAMP, LEFT_TURN_LIGHT);
    } else {
        WriteCarStatus(TURN_SIGNAL_LAMP, RIGHT_TURN_LIGHT);
    }
    AppTimer_delete(LRLightTimeout);
    AppTimer_add(LRLightTimeout, 1500);
@@ -281,10 +299,16 @@
                AppTimer_delete(ConfirmTurnSigalLater);
                if (right_turn_signal) {
                    // 判定为双闪
                    ChangeLRLight(HAZARD_LIGHTS);
                    AppTimer_add(ConfirmTurnSigalLater, 500, HAZARD_LIGHTS);
                } else {
                    AppTimer_add(ConfirmTurnSigalLater, 200, LEFT_TURN_LIGHT);
                }
            } else {
                AppTimer_delete(ConfirmTurnSigalLater);
                if (right_turn_signal)
                    AppTimer_add(ConfirmTurnSigalLater, 1500, RIGHT_TURN_LIGHT);
                else
                    AppTimer_add(ConfirmTurnSigalLater, 1500, OFF_LIGHT);
            }
            break;
        }
@@ -295,10 +319,16 @@
                AppTimer_delete(ConfirmTurnSigalLater);
                if (left_turn_signal) {
                    // 判定为双闪
                    ChangeLRLight(HAZARD_LIGHTS);
                    AppTimer_add(ConfirmTurnSigalLater, 500, HAZARD_LIGHTS);
                } else {
                    AppTimer_add(ConfirmTurnSigalLater, 200, RIGHT_TURN_LIGHT);
                }
            } else {
                AppTimer_delete(ConfirmTurnSigalLater);
                if (left_turn_signal)
                    AppTimer_add(ConfirmTurnSigalLater, 1500, LEFT_TURN_LIGHT);
                else
                    AppTimer_add(ConfirmTurnSigalLater, 1500, OFF_LIGHT);
            }
            break;
        }