static void shutdown(JNIEnv *env, jobject source, jboolean reload) { log_debug("Shutdown requested (reload is %d)", reload); if (reload == TRUE) main_reload(); else main_shutdown(); }
static void failed(JNIEnv *env, jobject source, jstring message) { if (message) { const char *msg = (*env)->GetStringUTFChars(env, message, NULL); log_error("Failed %s", msg ? msg : "(null)"); if (msg) (*env)->ReleaseStringUTFChars(env, message, msg); } else log_error("Failed requested"); main_shutdown(); }
int mal_client_netlnk_callback(const int fd, const void *data_p) { int netlnk_msg = -1; modem_client_t *modem_client_p = (modem_client_t *)data_p; (void)fd; if (modem_client_p) { netlnk_socket_recv(fd, &netlnk_msg); if (netlnk_msg == MODEM_RESET_IND) { CN_LOG_D("received modem reset indication!!"); /* Request process termination */ main_shutdown(); /* Return -1 as modem reset indication is received */ return -1; } } return TRUE; }
int main(int argc, char** argv) { TPCANMsg msg; int ret; std::string nodeName = std::string("gripper_control"); //si ottiene il singleton per la gestione del task maintask = WF::Task::GetInstance(); if (maintask->CreateAsync(MAINTASK_NAME, WF_TASK_TYPE_USER, MAINTASK_PRIORITY) != WF_RV_OK){ std::cerr << "Could not initialize " << MAINTASK_NAME << std::endl; exit(-1); } Controller *gripper_control = new Controller(argc, argv, nodeName); ret = maintask->WaitRunning(); if (ret != WF_RV_OK){ KAL::DebugConsole::Write(LOG_LEVEL_ERROR, MAINTASK_NAME, "WaitRunning fallita. (valore ritorno %d)", ret); main_shutdown(); return WF_RV_FAIL; } maintask->GotoHard(); int canRet; // Main loop while (maintask->Continue() && !gripper_control->GLOBALSTOP){ //KAL::DebugConsole::Write(LOG_LEVEL_INFO, MAINTASK_NAME, "Waiting for CAN packets..."); canRet = gripper_control->receive_can_msg(msg); #ifdef VM_TEST maintask->Sleep(WF_TIME_ONE_S); #endif //KAL::DebugConsole::Write(LOG_LEVEL_INFO, MAINTASK_NAME, "Exit from schedHelper_.Receive."); if (canRet == WF_RV_FAIL) { KAL::DebugConsole::Write(LOG_LEVEL_WARNING, MAINTASK_NAME,"Inconsistent CAN msg lenght"); main_shutdown(); return WF_RV_FAIL; } else { //KAL::DebugConsole::Write(LOG_LEVEL_INFO, MAINTASK_NAME, "Packet Received."); if (canRet == WF_RV_SHUTDOWN) { if (maintask->IsKilled() == true) { KAL::DebugConsole::Write(LOG_LEVEL_WARNING, MAINTASK_NAME, "System is killing down, forcibly closing."); main_shutdown(); return WF_RV_FAIL; } if (maintask->ShuttingDown() == true) { KAL::DebugConsole::Write(LOG_LEVEL_WARNING, MAINTASK_NAME, "System is shutting down, gracefully closing."); main_shutdown(); return WF_RV_OK; } } else { //KAL::DebugConsole::Write(LOG_LEVEL_INFO, MAINTASK_NAME, "CAN msg Received ID = %03X TYPE = %02X LEN = %d DATA = %02X %02X %02X %02X %02X %02X %02X %02X", tmpCANMsg.msg.ID, tmpCANMsg.msg.MSGTYPE, tmpCANMsg.msg.LEN, tmpCANMsg.msg.DATA[0], tmpCANMsg.msg.DATA[1], tmpCANMsg.msg.DATA[2], tmpCANMsg.msg.DATA[3], tmpCANMsg.msg.DATA[4], tmpCANMsg.msg.DATA[5], tmpCANMsg.msg.DATA[6], tmpCANMsg.msg.DATA[7]); gripper_control->process_message(msg); //} else KAL::DebugConsole::Write(LOG_LEVEL_WARNING,MAINTASK_NAME,"Inconsistent CAN msg lenght"); } } }//while (maintask->Continue() && !GLOBALSTOP) delete gripper_control; main_shutdown(); kill(0,SIGQUIT); maintask->Exit(); return 0; }