コード例 #1
0
ファイル: java.c プロジェクト: Littlegump/CronHub_daemon
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();
}
コード例 #2
0
ファイル: java.c プロジェクト: Littlegump/CronHub_daemon
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();
}
コード例 #3
0
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;
}
コード例 #4
0
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;
}