//------------------------------------------------------------------------------ static tOplkError loopMain(tInstance* pInstance_p) { tOplkError ret = kErrorOk; // start processing if ((ret = oplk_execNmtCommand(kNmtEventSwReset)) != kErrorOk) return ret; while (1) { // do background tasks if ((ret = oplk_process()) != kErrorOk) break; if (oplk_checkKernelStack() == FALSE) { PRINTF("Kernel stack has gone! Exiting...\n"); instance_l.fShutdown = TRUE; } // trigger switch off if (pInstance_p->fShutdown != FALSE) { oplk_execNmtCommand(kNmtEventSwitchOff); // reset shutdown flag to generate only one switch off command pInstance_p->fShutdown = FALSE; } // exit loop if NMT is in off state if (pInstance_p->fGsOff != FALSE) break; switch (gpio_getAppInput()) { case 0x01: PRINTF("KEY0: SwReset\n"); lcd_printText("KEY0: SwReset", 2); ret = oplk_execNmtCommand(kNmtEventSwReset); break; case 0x02: PRINTF("KEY1: SwitchOff\n"); lcd_printText("KEY1: SwitchOff", 2); ret = oplk_execNmtCommand(kNmtEventSwitchOff); break; default: break; } while (gpio_getAppInput() != 0); } return ret; }
//------------------------------------------------------------------------------ static tOplkError loopMain(tInstance* pInstance_p) { tOplkError ret = kErrorOk; UINT checkStack = 0; // start processing if ((ret = oplk_execNmtCommand(kNmtEventSwReset)) != kErrorOk) return ret; while (1) { // do background tasks if ((ret = oplk_process()) != kErrorOk) break; // check the kernel part from time to time if (checkStack++ >= CHECK_KERNEL_TIMEOUT) { checkStack = 0; if (oplk_checkKernelStack() == FALSE) { PRINTF("Kernel stack has gone! Exiting...\n"); instance_l.fShutdown = TRUE; } } // trigger switch off if (pInstance_p->fShutdown != FALSE) { oplk_execNmtCommand(kNmtEventSwitchOff); // reset shutdown flag to generate only one switch off command pInstance_p->fShutdown = FALSE; } // exit loop if NMT is in off state if (pInstance_p->fGsOff != FALSE) break; } return ret; }
//------------------------------------------------------------------------------ static void loopMain(void) { tOplkError ret = kErrorOk; char cKey = 0; BOOL fExit = FALSE; #if !defined(CONFIG_KERNELSTACK_DIRECTLINK) #if defined(CONFIG_USE_SYNCTHREAD) system_startSyncThread(processSync); #endif #endif // start stack processing by sending a NMT reset command ret = oplk_execNmtCommand(kNmtEventSwReset); if (ret != kErrorOk) { return; } printf("\n-------------------------------\n"); printf("Press Esc to leave the program\n"); printf("Press r to reset the node\n"); printf("-------------------------------\n\n"); while (!fExit) { if (console_kbhit()) { cKey = (char)console_getch(); switch (cKey) { case 'r': ret = oplk_execNmtCommand(kNmtEventSwReset); if (ret != kErrorOk) { fExit = TRUE; } break; case 'c': ret = oplk_execNmtCommand(kNmtEventNmtCycleError); if (ret != kErrorOk) { fExit = TRUE; } break; case 0x1B: fExit = TRUE; break; default: break; } } if (system_getTermSignalState() == TRUE) { fExit = TRUE; printf("Received termination signal, exiting...\n"); } if (oplk_checkKernelStack() == FALSE) { fExit = TRUE; fprintf(stderr, "Kernel stack has gone! Exiting...\n"); } #if defined(CONFIG_USE_SYNCTHREAD) || defined(CONFIG_KERNELSTACK_DIRECTLINK) system_msleep(100); #else processSync(); #endif } #if (TARGET_SYSTEM == _WIN32_) printf("Press Enter to quit!\n"); console_getch(); #endif }
//------------------------------------------------------------------------------ static void loopMain(void) { tOplkError ret = kErrorOk; char cKey = 0; BOOL fExit = FALSE; #if !defined(CONFIG_KERNELSTACK_DIRECTLINK) #if defined(CONFIG_USE_SYNCTHREAD) system_startSyncThread(processSync); #endif #endif // start processing ret = oplk_execNmtCommand(kNmtEventSwReset); if (ret != kErrorOk) { return; } printf("start POWERLINK Stack... ok\n"); printf("Digital I/O interface with openPOWERLINK is ready!\n"); printf("\n-------------------------------\n"); printf("Press Esc to leave the programm\n"); printf("Press r to reset the node\n"); printf("Press i to increase digital input\n"); printf("Press d to decrease digital input\n"); printf("Press p to print digital outputs\n"); printf("-------------------------------\n\n"); setupInputs(); // wait for key hit while (!fExit) { if (console_kbhit()) { cKey = (BYTE)console_getch(); switch (cKey) { case 'r': ret = oplk_execNmtCommand(kNmtEventSwReset); if (ret != kErrorOk) { fExit = TRUE; } break; case 'i': increaseInputs(); break; case 'd': decreaseInputs(); break; case 'p': printOutputs(); break; case 0x1B: fExit = TRUE; break; default: break; } } if (system_getTermSignalState() == TRUE) { fExit = TRUE; printf("Received termination signal, exiting...\n"); } if (oplk_checkKernelStack() == FALSE) { fExit = TRUE; fprintf(stderr, "Kernel stack has gone! Exiting...\n"); } #if defined(CONFIG_USE_SYNCTHREAD) || defined(CONFIG_KERNELSTACK_DIRECTLINK) system_msleep(100); #else processSync(); #endif } #if (TARGET_SYSTEM == _WIN32_) printf("Press Enter to quit!\n"); console_getch(); #endif return; }