| | |
| | | } SensorConfig[MAX_SENSOR_NUM]; |
| | | static int SensorNum = 0; |
| | | |
| | | static car_sensor_t Sensor; |
| | | static pthread_mutex_t sonser_mutex = PTHREAD_MUTEX_INITIALIZER; |
| | | static pthread_mutex_t status_rw_mutex = PTHREAD_MUTEX_INITIALIZER; |
| | | |
| | | 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); |
| | |
| | | memset(SensorConfig, 0, sizeof(SensorConfig)); |
| | | |
| | | memset(CarStatus, 0, sizeof(CarStatus)); |
| | | |
| | | memset(&Sensor, 0, sizeof(Sensor)); |
| | | |
| | | left_turn_signal = right_turn_signal = 0; |
| | | flashMainBeamCnt = 0; |
| | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | void UpdateSensor(const car_sensor_t *s) |
| | | { |
| | | WriteCarStatus(OBD_SPEED, s->speed); |
| | | WriteCarStatus(ENGINE_RPM, s->engine); |
| | | |
| | | if (s->leftTurnLamp != Sensor.leftTurnLamp && s->leftTurnLamp != '#') { |
| | | SensorChanged(SENSOR_LEFT_TURN_SIGNAL, BX(s->leftTurnLamp)); |
| | | } |
| | | if (s->rightTurnLamp != Sensor.leftTurnLamp && s->rightTurnLamp != '#') { |
| | | SensorChanged(SENSOR_RIGHT_TURN_SIGNAL, BX(s->rightTurnLamp)); |
| | | } |
| | | if (s->fogLamp != Sensor.fogLamp && s->fogLamp != '#') { |
| | | SensorChanged(SENSOR_FOG_LIGHT, BX(s->fogLamp)); |
| | | } |
| | | if (s->clearanceLamp != Sensor.clearanceLamp && s->clearanceLamp != '#') { |
| | | SensorChanged(SENSOR_CLEARANCE_LIGHT, BX(s->clearanceLamp)); |
| | | } |
| | | if (s->dippedBeamLamp != Sensor.dippedBeamLamp && s->dippedBeamLamp != '#') { |
| | | SensorChanged(SENSOR_DIPPED_BEAM_LIGHT, BX(s->dippedBeamLamp)); |
| | | } |
| | | if (s->mainBeamLamp != Sensor.leftTurnLamp && s->mainBeamLamp != '#') { |
| | | SensorChanged(SENSOR_MAIN_BEAM_LIGHT, BX(s->mainBeamLamp)); |
| | | } |
| | | if (s->seatBelt != Sensor.seatBelt && s->seatBelt != '#') { |
| | | SensorChanged(SENSOR_SEATBELT, BX(s->seatBelt)); |
| | | } |
| | | if (s->key != Sensor.key && s->key != '#') { |
| | | SensorChanged(SENSOR_ENGINE_START, s->key == 3? 1 : 0); |
| | | } |
| | | if (s->mainBreak != Sensor.mainBreak && s->mainBreak != '#') { |
| | | SensorChanged(SENSOR_BREAK, BX(s->mainBreak)); |
| | | } |
| | | if (s->assBreak != Sensor.assBreak && s->assBreak != '#') { |
| | | SensorChanged(SENSOR_BREAK2, BX(s->assBreak)); |
| | | } |
| | | if (s->handBreak != Sensor.handBreak && s->handBreak != '#') { |
| | | SensorChanged(SENSOR_HANDBREAK, BX(s->handBreak)); |
| | | } |
| | | if (s->lock != Sensor.lock && s->lock != '#') { |
| | | SensorChanged(SENSOR_DOOR, BX(s->lock)); |
| | | } |
| | | if (s->surround1 != Sensor.surround1 && s->surround1 != '#') { |
| | | SensorChanged(SENSOR_SURROUND_CAR_1, BX(s->surround1)); |
| | | } |
| | | if (s->surround2 != Sensor.surround2 && s->surround2 != '#') { |
| | | SensorChanged(SENSOR_SURROUND_CAR_2, BX(s->surround2)); |
| | | } |
| | | if (s->surround3 != Sensor.surround3 && s->surround3 != '#') { |
| | | SensorChanged(SENSOR_SURROUND_CAR_3, BX(s->surround3)); |
| | | } |
| | | if (s->surround4 != Sensor.surround4 && s->surround4 != '#') { |
| | | SensorChanged(SENSOR_SURROUND_CAR_4, BX(s->surround4)); |
| | | } |
| | | if (s->gear != Sensor.gear && s->gear != '#') { |
| | | SensorChanged(GEAR, GEAR_N + s->gear); |
| | | } |
| | | |
| | | Sensor = *s; |
| | | } |
| | | |
| | | int ReadCarStatus(uint16_t id) |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | inline static int BX(int value) |
| | | { |
| | | return (value == 1) ? 1 : 0; |
| | | } |