Modify for restriction role
[apps/agl-service-windowmanager.git] / src / low_can_client.cpp
index 23a39e2..43d8cfc 100644 (file)
@@ -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");