From 27fc91fbe8f88b6885356e68828cfe1ce1db7601 Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期三, 28 二月 2024 09:53:13 +0800 Subject: [PATCH] 坐标 --- lib/src/main/cpp/test_common/car_sensor.cpp | 132 +++++++++++++++++--------------------------- 1 files changed, 51 insertions(+), 81 deletions(-) diff --git a/lib/src/main/cpp/test_common/car_sensor.cpp b/lib/src/main/cpp/test_common/car_sensor.cpp index 1ee0721..cce53e4 100644 --- a/lib/src/main/cpp/test_common/car_sensor.cpp +++ b/lib/src/main/cpp/test_common/car_sensor.cpp @@ -10,6 +10,8 @@ #include "../jni_log.h" #include "../rtk_platform/platform.h" +using namespace std; + #define DEBUG(fmt, args...) LOGD("<car_sensor> <%s>: " fmt, __func__, ##args) #define MAX_SENSOR_NUM 32 @@ -45,8 +47,6 @@ SENSOR_SPEED }; - - static int CarStatus[CAR_STATUS_END]; static struct sensor_cfg { @@ -74,9 +74,9 @@ SensorNum = 0; memset(SensorConfig, 0, sizeof(SensorConfig)); - memset(CarStatus, 0, sizeof(CarStatus)); - CarStatus[DOOR] = DOOR_CLOSE; - CarStatus[GEAR] = GEAR_N; + for (int i = 0; i < CAR_STATUS_END; ++i) { + CarStatus[i] = -1; + } memset(&Sensor, 0, sizeof(Sensor)); @@ -118,36 +118,12 @@ // pthread_mutex_unlock(&sonser_mutex); } -void UpdateSensor(uint16_t gpio, uint16_t speed, uint16_t rpm) -{ - uint16_t chg = 0; - - sonser_mutex.lock(); - chg = gpioStore^gpio; - gpioStore = gpio; - sonser_mutex.unlock(); - - WriteCarStatus(OBD_SPEED, speed); - WriteCarStatus(ENGINE_RPM, rpm); - - for (int i = 0; i < SensorNum; ++i) { - if (chg & BV(SensorConfig[i].gpioId)) { - int level = 0; - - if (gpio & BV(SensorConfig[i].gpioId)) { - level = 1; - } - - if (level == SensorConfig[i].validLvl) { - SensorChanged(SensorConfig[i].funId, 1); - } else { - SensorChanged(SensorConfig[i].funId, 0); - } - } - } -} - -void UpdateSensor(const car_sensor_t *s) +/****************************************** + * 鍒濇寰楀埌鐏厜銆佹尅浣嶇瓑IO淇″彿锛屽悗缁鏍规嵁寤惰繜鍒ゆ柇 + * 寰楀埌杞悜鐏殑姝g‘鎯呭喌 + * @param s + */ +void UpdateSensorHw(const car_sensor_t *s) { WriteCarStatus(OBD_SPEED, s->speed); WriteCarStatus(ENGINE_RPM, s->engine); @@ -226,10 +202,11 @@ static void WriteCarStatus(uint16_t id, int value) { int old_value; - lock_guard<std::mutex> lock(status_rw_mutex); - old_value = CarStatus[id]; - CarStatus[id] = value; - + { + lock_guard<std::mutex> lock(status_rw_mutex); + old_value = CarStatus[id]; + CarStatus[id] = value; + } if (id != OBD_SPEED && id != ENGINE_RPM && old_value != value) { uint8_t buffer[6]; @@ -241,6 +218,10 @@ buffer[5] = BREAK_UINT32(value, 0); PlatformStatusChanged(SENSOR_CHANGE_EVT, buffer, 6); + } else if (id == OBD_SPEED) { + UpdateSensor(OBD_SPEED, value); + } else if (id == ENGINE_RPM) { + UpdateSensor(ENGINE_RPM, value); } } @@ -249,7 +230,7 @@ DEBUG("纭杞悜鐏� 宸� %d 鍙� %d", left_turn_signal, right_turn_signal); if (!left_turn_signal && !right_turn_signal) { - WriteCarStatus(TURN_SIGNAL_LAMP, OFF_LIGHT); + WriteCarStatus(TURN_SIGNAL_LAMP, LIGHT_OFF); } else if (left_turn_signal && right_turn_signal) { WriteCarStatus(TURN_SIGNAL_LAMP, HAZARD_LIGHTS); } else if (left_turn_signal) { @@ -261,12 +242,13 @@ static void flashBeamLightClose(apptimer_var_t val) { - WriteCarStatus(FLASH_BEAM_LAMP, OFF_LIGHT); + WriteCarStatus(FLASH_BEAM_LAMP, LIGHT_OFF); } static void SensorChanged(int id, int value) { DEBUG("鐘舵�佹敼鍙� %d = %d", id, value); + switch (id) { case SENSOR_LEFT_TURN_SIGNAL: { left_turn_signal = (bool) (value > 0); @@ -286,25 +268,25 @@ } case SENSOR_FOG_LIGHT: { if (value == 0) { - WriteCarStatus(FOG_LAMP, OFF_LIGHT); + WriteCarStatus(FOG_LAMP, LIGHT_OFF); } else { - WriteCarStatus(FOG_LAMP, FOG_LIGHT); + WriteCarStatus(FOG_LAMP, LIGHT_ON); } break; } case SENSOR_CLEARANCE_LIGHT: { if (value == 0) { - WriteCarStatus(CLEARANCE_LAMP, OFF_LIGHT); + WriteCarStatus(CLEARANCE_LAMP, LIGHT_OFF); } else { - WriteCarStatus(CLEARANCE_LAMP, CLEARANCE_LIGHT); + WriteCarStatus(CLEARANCE_LAMP, LIGHT_ON); } break; } case SENSOR_DIPPED_BEAM_LIGHT: { if (value == 0) { - WriteCarStatus(DIPPED_BEAM_LAMP, OFF_LIGHT); + WriteCarStatus(DIPPED_BEAM_LAMP, LIGHT_OFF); } else { - WriteCarStatus(DIPPED_BEAM_LAMP, DIPPED_BEAM_LIGHT); + WriteCarStatus(DIPPED_BEAM_LAMP, LIGHT_ON); } break; } @@ -312,17 +294,17 @@ static uint32_t t1 = 0; if (value == 0) { - WriteCarStatus(MAIN_BEAM_LAMP, OFF_LIGHT); + WriteCarStatus(MAIN_BEAM_LAMP, LIGHT_OFF); } else { - WriteCarStatus(MAIN_BEAM_LAMP, MAIN_BEAM_LIGHT); + WriteCarStatus(MAIN_BEAM_LAMP, LIGHT_ON); } if (value != 0) { t1 = AppTimer_GetTickCount(); } else if (AppTimer_GetTickCount() - t1 < D_SEC(3)) { // 3绉掑唴瀹屾垚浜伃锛岄棯鐏� - if (ReadCarStatus(FLASH_BEAM_LAMP) != FLASH_BEAM_LIGHT) { - WriteCarStatus(FLASH_BEAM_LAMP, FLASH_BEAM_LIGHT); + if (ReadCarStatus(FLASH_BEAM_LAMP) != LIGHT_ON) { + WriteCarStatus(FLASH_BEAM_LAMP, LIGHT_ON); } AppTimer_delete(flashBeamLightClose); AppTimer_add(flashBeamLightClose, D_SEC(2)); @@ -331,41 +313,41 @@ } case SENSOR_SEATBELT: { if (value == 0) { - WriteCarStatus(SEATBELT, EJECT_SEATBELT); + WriteCarStatus(SEATBELT, EJECT); } else { - WriteCarStatus(SEATBELT, INSERT_SEATBELT); + WriteCarStatus(SEATBELT, INSERT); } break; } case SENSOR_ENGINE_START: { if (value == 0) { - WriteCarStatus(ENGINE_START, ENGINE_START_INACTIVE); + WriteCarStatus(ENGINE_START, INACTIVE); } else { - WriteCarStatus(ENGINE_START, ENGINE_START_ACTIVE); + WriteCarStatus(ENGINE_START, ACTIVE); } break; } case SENSOR_BREAK: { if (value == 0) { - WriteCarStatus(BREAK, BREAK_INACTIVE); + WriteCarStatus(BRAKE, INACTIVE); } else { - WriteCarStatus(BREAK, BREAK_ACTIVE); + WriteCarStatus(BRAKE, ACTIVE); } break; } case SENSOR_BREAK2: { if (value == 0) { - WriteCarStatus(SECOND_BREAK, BREAK_INACTIVE); + WriteCarStatus(SECOND_BRAKE, INACTIVE); } else { - WriteCarStatus(SECOND_BREAK, BREAK_ACTIVE); + WriteCarStatus(SECOND_BRAKE, ACTIVE); } break; } case SENSOR_HANDBREAK: { if (value == 0) { - WriteCarStatus(HAND_BREAK, BREAK_INACTIVE); + WriteCarStatus(HAND_BRAKE, INACTIVE); } else { - WriteCarStatus(HAND_BREAK, BREAK_ACTIVE); + WriteCarStatus(HAND_BRAKE, ACTIVE); } break; } @@ -379,48 +361,36 @@ } case SENSOR_SURROUND_CAR_1: { if (value == 0) { - WriteCarStatus(SURROUND_CAR_1, SURROUND_CAR_INACTIVE); + WriteCarStatus(SURROUND_CAR_1, INACTIVE); } else { - WriteCarStatus(SURROUND_CAR_1, SURROUND_CAR_ACTIVE); + WriteCarStatus(SURROUND_CAR_1, ACTIVE); } break; } case SENSOR_SURROUND_CAR_2: { if (value == 0) { - WriteCarStatus(SURROUND_CAR_2, SURROUND_CAR_INACTIVE); + WriteCarStatus(SURROUND_CAR_2, INACTIVE); } else { - WriteCarStatus(SURROUND_CAR_2, SURROUND_CAR_ACTIVE); + WriteCarStatus(SURROUND_CAR_2, ACTIVE); } break; } case SENSOR_SURROUND_CAR_3: { if (value == 0) { - WriteCarStatus(SURROUND_CAR_3, SURROUND_CAR_INACTIVE); + WriteCarStatus(SURROUND_CAR_3, INACTIVE); } else { - WriteCarStatus(SURROUND_CAR_3, SURROUND_CAR_ACTIVE); + WriteCarStatus(SURROUND_CAR_3, ACTIVE); } break; } case SENSOR_SURROUND_CAR_4: { if (value == 0) { - WriteCarStatus(SURROUND_CAR_4, SURROUND_CAR_INACTIVE); + WriteCarStatus(SURROUND_CAR_4, INACTIVE); } else { - WriteCarStatus(SURROUND_CAR_4, SURROUND_CAR_ACTIVE); + WriteCarStatus(SURROUND_CAR_4, ACTIVE); } break; } -// case SENSOR_SHIFT_N: -// case SENSOR_SHIFT_1: -// case SENSOR_SHIFT_2: -// case SENSOR_SHIFT_3: -// case SENSOR_SHIFT_4: -// case SENSOR_SHIFT_5: -// case SENSOR_SHIFT_R: { -// if (value != 0) { -// WriteCarStatus(GEAR, id - SENSOR_SHIFT_N + GEAR_N); -// } -// break; -// } default: return; } -- Gitblit v1.8.0