+void on_event(const char *event, struct json_object *object){
+ HMI_DEBUG("wm", "event:%s", event);
+
+ // If receive low can signal
+ if (strstr(event, "low-can")) {
+ wm::LowCanClient *lcc = &(g_afb_instance->lcc_);
+ wm::App *app = &(g_afb_instance->app);
+
+ // Analyze low can signal
+ const char* signal_name = lcc->analyzeCanSignal(object);
+
+ // If car info is updated, set event name
+ const char *can_event = nullptr;
+ if (strstr(signal_name, lcc->kSignalName_[lcc->SignalNoParkingBrake])) {
+ HMI_DEBUG("wm", "Parking Brake state is changed");
+
+ // Set event
+ if (lcc->getCurrentParkingBrakeState()) {
+ can_event = "parking_brake_on";
+ }
+ else {
+ can_event = "parking_brake_off";
+ }
+ }
+ else if (strstr(signal_name, lcc->kSignalName_[lcc->SignalNoAccelPedalPos])) {
+ // Update accel pedal position
+ app->setAccelPedalPos(lcc->getCurrentAccelPedalPosition());
+
+ if (lcc->isChangedAccelPedalState()) {
+ HMI_DEBUG("wm", "Accelerator Pedal state is changed");
+
+ // Set event
+ if (lcc->getCurrentAccelPedalState()) {
+ can_event = "accel_pedal_on";
+ }
+ else {
+ can_event = "accel_pedal_off";
+ }
+ }
+ }
+ else if (strstr(signal_name, lcc->kSignalName_[lcc->SignalNoHeadlame])) {
+ HMI_DEBUG("wm", "Headlamp state is changed");
+
+ // Set event
+ if (lcc->getCurrentHeadlampState()) {
+ can_event = "headlamp_on";
+ }
+ else {
+ can_event = "headlamp_off";
+ }
+ }
+ else if (strstr(signal_name, lcc->kSignalName_[lcc->SignalNoLightstatusBrake])) {
+ HMI_DEBUG("wm", "Lightstatus Brake state is changed");
+
+ // Set event
+ if (lcc->getCurrentLightstatusBrakeState()) {
+ can_event = "lightstatus_brake_on";
+ }
+ else {
+ can_event = "lightstatus_brake_off";
+ }
+ }
+
+ // Allocate window resource
+ if (nullptr != can_event) {
+ g_afb_instance->app.allocateWindowResource(can_event,
+ nullptr, nullptr,
+ [](const char* errmsg){
+ if (errmsg != nullptr) {
+ HMI_ERROR("wm", errmsg);
+ }
+ });
+ }
+ }
+}
+