From cea2a94fc97e79897cdfd217be8250c075974a1a Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期日, 07 二月 2021 17:55:42 +0800 Subject: [PATCH] 坡起限制条件和手刹起步全阶段生效. --- lib/src/main/cpp/test_common/car_sensor.cpp | 90 +++++++++++---------------------------------- 1 files changed, 22 insertions(+), 68 deletions(-) diff --git a/lib/src/main/cpp/test_common/car_sensor.cpp b/lib/src/main/cpp/test_common/car_sensor.cpp index 173a1e5..3c462b4 100644 --- a/lib/src/main/cpp/test_common/car_sensor.cpp +++ b/lib/src/main/cpp/test_common/car_sensor.cpp @@ -15,7 +15,7 @@ #define MAX_SENSOR_NUM 32 static uint16_t gpioStore; -static int left_turn_signal, right_turn_signal; +static bool left_turn_signal, right_turn_signal; enum { SENSOR_SEATBELT, @@ -62,8 +62,7 @@ inline static int BX(int value); static void WriteCarStatus(uint16_t id, int value); -static void LRLightTimeout(union sigval sig); -static void ChangeLRLight(int light); + static void ConfirmTurnSigalLater(union sigval sig); static void flashBeamLightClose(union sigval sig); @@ -81,7 +80,7 @@ memset(&Sensor, 0, sizeof(Sensor)); - left_turn_signal = right_turn_signal = 0; + left_turn_signal = right_turn_signal = false; pthread_mutex_init(&sonser_mutex, NULL); pthread_mutex_init(&status_rw_mutex, NULL); @@ -245,42 +244,21 @@ } } -static void LRLightTimeout(union sigval sig) -{ - AppTimer_delete(LRLightTimeout); - 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) -{ - 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); -} - static void ConfirmTurnSigalLater(union sigval sig) { AppTimer_delete(ConfirmTurnSigalLater); - ChangeLRLight(sig.sival_int); + DEBUG("纭杞悜鐏� 宸� %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); + } } static void flashBeamLightClose(union sigval sig) @@ -293,43 +271,19 @@ DEBUG("鐘舵�佹敼鍙� %d = %d", id, value); switch (id) { case SENSOR_LEFT_TURN_SIGNAL: { - left_turn_signal = value; + left_turn_signal = (bool) (value > 0); - if (left_turn_signal) { - AppTimer_delete(ConfirmTurnSigalLater); - if (right_turn_signal) { - // 鍒ゅ畾涓哄弻闂� - 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); - } + AppTimer_delete(ConfirmTurnSigalLater); + + AppTimer_add(ConfirmTurnSigalLater, left_turn_signal? 100 : 1100); break; } case SENSOR_RIGHT_TURN_SIGNAL: { - right_turn_signal = value; + right_turn_signal = (bool) (value > 0); - if (right_turn_signal) { - AppTimer_delete(ConfirmTurnSigalLater); - if (left_turn_signal) { - // 鍒ゅ畾涓哄弻闂� - 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); - } + AppTimer_delete(ConfirmTurnSigalLater); + + AppTimer_add(ConfirmTurnSigalLater, right_turn_signal? 100 : 1100); break; } case SENSOR_FOG_LIGHT: { -- Gitblit v1.8.0