bool DeviceProxy::SendResponse(unsigned short id, unsigned long cnt, const void* recvData, int recvDataLength) { CriticalSection::ScopedLocker locker(m_criSecConnect); m_curCommand.id = id; switch(id) { case RESULT_GET_DEVICE_INFO: return SendDeviceInfo(cnt, recvData, recvDataLength); break; case RESULT_GET_CIS_CORRECTION_TABLE: return SendCISCorrectionTable(cnt, recvData, recvDataLength); break; case RESULT_SET_TIME: return SendSetTime(cnt, recvData, recvDataLength); break; case RESULT_ECHO: return SendEcho(cnt, recvData, recvDataLength); break; case RESULT_UPGRADE: return SendUpgrade(cnt, recvData, recvDataLength); break; case RESULT_UPGRADE_DATA: return SendUpgradeData(cnt, recvData, recvDataLength); break; case RESULT_UPDATE_DEBUG_STATE: return SendUpgradeDebugState(cnt, recvData, recvDataLength); break; case RESULT_RESTART: return SendRestart(cnt, recvData, recvDataLength); break; case RESULT_SET_IR_PARAMETERS: return SendSetIRParameters(cnt, recvData, recvDataLength); break; case RESULT_GET_IR_VALUES: return SendGetIRValues(cnt, recvData, recvDataLength); break; case RESULT_UPDATE_IR_PARAMETERS: return SendUpdateIRParameters(cnt, recvData, recvDataLength); break; case RESULT_START_MOTOR: return SendStartMotor(cnt, recvData, recvDataLength); break; case RESULT_START_RUN_CASH_DETECT: return SendStartRunCashDetect(cnt, recvData, recvDataLength); default: return false; break; } }
/** The main entry point. */ int main(int argc, char *argv[]) { char *temp; int x; enum { ACTION_RUN, ACTION_RESTART, ACTION_EXIT, ACTION_RELOAD, ACTION_PARSE } action; StartDebug(); /* Get the name of the user's local configuration file. */ temp = getenv("HOME"); if(temp) { const size_t temp_len = strlen(temp); const size_t config_len = sizeof(CONFIG_FILE); configPath = Allocate(temp_len + config_len); memcpy(configPath, temp, temp_len); memcpy(&configPath[temp_len], CONFIG_FILE, config_len); } else { configPath = CopyString(CONFIG_FILE); } /* Parse command line options. */ action = ACTION_RUN; for(x = 1; x < argc; x++) { if(!strcmp(argv[x], "-v")) { DisplayAbout(); DoExit(0); } else if(!strcmp(argv[x], "-h")) { DisplayHelp(); DoExit(0); } else if(!strcmp(argv[x], "-p")) { action = ACTION_PARSE; } else if(!strcmp(argv[x], "-restart")) { action = ACTION_RESTART; } else if(!strcmp(argv[x], "-exit")) { action = ACTION_EXIT; } else if(!strcmp(argv[x], "-reload")) { action = ACTION_RELOAD; } else if(!strcmp(argv[x], "-display") && x + 1 < argc) { displayString = argv[++x]; } else if(!strcmp(argv[x], "-f") && x + 1 < argc) { Release(configPath); configPath = CopyString(argv[++x]); } else { printf("unrecognized option: %s\n", argv[x]); DisplayHelp(); DoExit(1); } } switch(action) { case ACTION_PARSE: Initialize(); ParseConfig(configPath); DoExit(0); case ACTION_RESTART: SendRestart(); DoExit(0); case ACTION_EXIT: SendExit(); DoExit(0); case ACTION_RELOAD: SendReload(); DoExit(0); default: break; } #if defined(HAVE_SETLOCALE) && defined(ENABLE_NLS) setlocale(LC_ALL, ""); #endif #ifdef HAVE_GETTEXT bindtextdomain("jwm", LOCALEDIR); textdomain("jwm"); #endif /* The main loop. */ StartupConnection(); do { isRestarting = shouldRestart; shouldExit = 0; shouldRestart = 0; shouldReload = 0; /* Prepare JWM components. */ Initialize(); /* Parse the configuration file. */ ParseConfig(configPath); /* Start up the JWM components. */ Startup(); /* The main event loop. */ EventLoop(); /* Shutdown JWM components. */ Shutdown(); /* Perform any extra cleanup. */ Destroy(); } while(shouldRestart); ShutdownConnection(); /* If we have a command to execute on shutdown, run it now. */ if(exitCommand) { execl(SHELL_NAME, SHELL_NAME, "-c", exitCommand, NULL); Warning(_("exec failed: (%s) %s"), SHELL_NAME, exitCommand); DoExit(1); } else { DoExit(0); } /* Control shoud never get here. */ return -1; }