X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Flow_can_client.cpp;h=451fa24f7588c84322413a7d1ecf8b0e3b576335;hb=f73c5f5ff5cd4b424eed1a757c7bc8d3e34ec0e9;hp=23a39e2f12757cdd7578a31aaed7ee5123accb21;hpb=55be85ed4bdfea6fc037d781b8cd8f58487718d1;p=apps%2Fagl-service-windowmanager.git diff --git a/src/low_can_client.cpp b/src/low_can_client.cpp index 23a39e2..451fa24 100644 --- a/src/low_can_client.cpp +++ b/src/low_can_client.cpp @@ -15,8 +15,8 @@ */ -#include "json_helper.hpp" #include "low_can_client.hpp" +#include "json_helper.hpp" #include "hmi-debug.h" extern "C" { @@ -29,12 +29,15 @@ namespace wm { LowCanClient::LowCanClient() : vehicle_speed_(0), trans_gear_pos_(0), - park_brake_status_(TRUE), + parking_brake_status_(TRUE), headlamp_status_(FALSE), + prv_parking_brake_state_("parking_brake_on"), + crr_parking_brake_state_("parking_brake_on"), prv_car_state_("car_stop"), crr_car_state_("car_stop"), prv_lamp_state_("lamp_off"), crr_lamp_state_("lamp_off"), + is_changed_parking_brake_state_(false), is_changed_car_state_(false), is_changed_lamp_state_(false) { @@ -102,10 +105,10 @@ void LowCanClient::analyzeCanSignal(struct json_object *object) { else if (strstr(name, "parking_brake_status")) { HMI_DEBUG("wm:lcc", "Receive parking brake status"); // Update parking gear status - json_bool park_brake = jh::getBoolFromJson(object, "value"); - if (this->park_brake_status_ != park_brake) { - this->park_brake_status_ = park_brake; - HMI_DEBUG("wm:lcc", "Update parking brake status:%d", this->park_brake_status_); + json_bool parking_brake = jh::getBoolFromJson(object, "value"); + if (this->parking_brake_status_ != parking_brake) { + this->parking_brake_status_ = parking_brake; + HMI_DEBUG("wm:lcc", "Update parking brake status:%d", this->parking_brake_status_); } } else if (strstr(name, "headlamp_status")) { @@ -118,8 +121,17 @@ void LowCanClient::analyzeCanSignal(struct json_object *object) { } } + // Update parking brake state + if (this->parking_brake_status_) { + this->crr_parking_brake_state_ = "parking_brake_on"; + } + else { + this->crr_parking_brake_state_ = "parking_brake_off"; + } + HMI_DEBUG("wm:lcc", "Current parking brake state:%s", this->crr_parking_brake_state_.c_str()); + // Update car state - if ((0 == this->vehicle_speed_) || (true == this->park_brake_status_)) { + if ((0 == this->vehicle_speed_) || (true == this->parking_brake_status_)) { this->crr_car_state_ = "car_stop"; } else { @@ -136,6 +148,15 @@ void LowCanClient::analyzeCanSignal(struct json_object *object) { } HMI_DEBUG("wm:lcc", "Current lamp state:%s", this->crr_lamp_state_.c_str()); + // If parking brake state is changed, + // backup current state for previous state and set flag + if (this->prv_parking_brake_state_ != this->crr_parking_brake_state_) { + HMI_DEBUG("wm:lcc", "Parking Brake state is changed: %s -> %s", + this->prv_parking_brake_state_.c_str(), this->crr_parking_brake_state_.c_str()); + this->prv_parking_brake_state_ = this->crr_parking_brake_state_; + this->is_changed_parking_brake_state_ = true; + } + // If car state is changed, // backup current state for previous state and set flag if (this->prv_car_state_ != this->crr_car_state_) { @@ -155,6 +176,13 @@ void LowCanClient::analyzeCanSignal(struct json_object *object) { } } +bool LowCanClient::isChangedParkingBrakeState() { + HMI_DEBUG("wm:lcc", "Call"); + + // Return changed flag + return this->is_changed_parking_brake_state_; +} + bool LowCanClient::isChangedCarState() { HMI_DEBUG("wm:lcc", "Call"); @@ -169,6 +197,16 @@ bool LowCanClient::isChangedLampState() { return this->is_changed_lamp_state_; } +const char* LowCanClient::getCurrentParkingBrakeState() { + HMI_DEBUG("wm:lcc", "Call"); + + // Clear changed flag + this->is_changed_parking_brake_state_ = false; + + // Return current parking brake state + return this->crr_parking_brake_state_.c_str(); +} + const char* LowCanClient::getCurrentCarState() { HMI_DEBUG("wm:lcc", "Call");