コード例 #1
0
  virtual void init()
  {
    if (mInotifyFd == -1)
    {
      mInotifyFd = inotify_init1(IN_CLOEXEC);
      if (mInotifyFd == -1)
      {
        rtLogWarn("hotplug disabled: %s", getSystemError(errno).c_str());
      }
      else
      {
        rtLogDebug("initializing inotify, adding watch: %s", kDevInput);
        mWatchFd = inotify_add_watch(mInotifyFd, kDevInput, (IN_DELETE | IN_CREATE));
        if (mWatchFd == -1)
        {
          rtLogWarn("hotplug disabled: %s", getSystemError(errno).c_str());
        }
        else
        {
          rtLogDebug("adding change notify descriptor: %d to poll list", mInotifyFd);
          pollfd p;
          p.fd = mInotifyFd;
          p.events = (POLLIN | POLLERR);
          p.revents = 0;
          mFds.push_back(p);
        }
      }
    }

    registerDevices(getKeyboardDevices());
    registerDevices(getMouseDevices());
  }
コード例 #2
0
int cn7500_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/epics/iocs/va-bakeout-01";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 30, recordTypeNames, rtl);
    registerDevices(pbase, 98, deviceSupportNames, devsl);
    registerDrivers(pbase, 2, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_streamRegistrar)();
    (*pvar_func_drvAsynIPPortRegisterCommands)();
    (*pvar_func_drvAsynIPServerPortRegisterCommands)();
    (*pvar_func_drvAsynSerialPortRegisterCommands)();
    (*pvar_func_snccn7500Registrar)();
    (*pvar_func_tempCompareRegistrar)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #3
0
    int dg535_registerRecordDeviceDriver(DBBASE *pbase)
    {
        const char *bldTop = "/home/rory/Desktop/epics/dg535";
        const char *envTop = getenv("TOP");

        if (envTop && strcmp(envTop, bldTop)) {
            printf("Warning: IOC is booting with TOP = \"%s\"\n"
                   "          but was built with TOP = \"%s\"\n",
                   envTop, bldTop);
        }

        if (!pbase) {
            printf("pdbbase is NULL; you must load a DBD file first.\n");
            return -1;
        }

        registerRecordTypes(pbase, 30, recordTypeNames, rtl);
        registerDevices(pbase, 98, deviceSupportNames, devsl);
        registerDrivers(pbase, 2, driverSupportNames, drvsl);
        (*pvar_func_asSub)();
        (*pvar_func_helloRegister)();
        (*pvar_func_initTraceRegister)();
        (*pvar_func_drvAsynSerialPortRegisterCommands)();
        (*pvar_func_asynRegister)();
        (*pvar_func_asynInterposeFlushRegister)();
        (*pvar_func_asynInterposeEosRegister)();
        (*pvar_func_streamRegistrar)();
        (*pvar_func_register_func_mySubInit)();
        (*pvar_func_register_func_mySubProcess)();
        (*pvar_func_register_func_myAsubInit)();
        (*pvar_func_register_func_myAsubProcess)();
        iocshRegisterVariable(vardefs);
        return 0;
    }
コード例 #4
0
int streamApp_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/home/ABTLUS/andrei.pereira/apps/sD_example";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 28, recordTypeNames, rtl);
    registerDevices(pbase, 56, deviceSupportNames, devsl);
    registerDrivers(pbase, 1, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_drvAsynSerialPortRegisterCommands)();
    (*pvar_func_drvAsynIPPortRegisterCommands)();
    (*pvar_func_drvAsynIPServerPortRegisterCommands)();
    (*pvar_func_vxi11RegisterCommands)();
    (*pvar_func_streamRegistrar)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #5
0
int oneWire_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/home/hxu1/diagnostics/di-driver/oneWire";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 30, recordTypeNames, rtl);
    registerDevices(pbase, 94, deviceSupportNames, devsl);
    registerDrivers(pbase, 2, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_streamRegistrar)();
    (*pvar_func_drvAsynIPPortRegisterCommands)();
    (*pvar_func_drvAsynIPServerPortRegisterCommands)();
    (*pvar_func_register_func_aSubConvertDS2438Init)();
    (*pvar_func_register_func_aSubConvertDS2438Page0)();
    (*pvar_func_register_func_aSubConvertDS2438Page6)();
    (*pvar_func_register_func_aSubConvertDS18B20Init)();
    (*pvar_func_register_func_aSubConvertDS18B20Proc)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #6
0
int mtrSim_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/home/arkilic/pyBL/motorSim";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 31, recordTypeNames, rtl);
    registerDevices(pbase, 87, deviceSupportNames, devsl);
    registerDrivers(pbase, 2, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_motorUtilRegister)();
    (*pvar_func_motorRegister)();
    (*pvar_func_asynMotorControllerRegister)();
    (*pvar_func_motorSimRegister)();
    (*pvar_func_motorSimDriverRegister)();
    (*pvar_func_save_restoreRegister)();
    (*pvar_func_dbrestoreRegister)();
    (*pvar_func_asInitHooksRegister)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #7
0
int test_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/usr/local/epics/modules/asyn4-23";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 29, recordTypeNames, rtl);
    registerDevices(pbase, 82, deviceSupportNames, devsl);
    registerDrivers(pbase, 1, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_drvAsynSerialPortRegisterCommands)();
    (*pvar_func_drvAsynIPPortRegisterCommands)();
    (*pvar_func_drvAsynIPServerPortRegisterCommands)();
    (*pvar_func_asynExampleRegister)();
    (*pvar_func_echoDriverRegister)();
    (*pvar_func_addrChangeDriverRegister)();
    (*pvar_func_interposeInterfaceRegister)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #8
0
int PUC_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/home/igor/frontend_puc/merged/sllp_epics";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 29, recordTypeNames, rtl);
    registerDevices(pbase, 81, deviceSupportNames, devsl);
    registerDrivers(pbase, 1, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_devFrontendConfigure_RegisterCommands)();
    (*pvar_func_drvAsynIPPortRegisterCommands)();
    (*pvar_func_drvAsynIPServerPortRegisterCommands)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #9
0
int s7plc_registerRecordDeviceDriver(DBBASE *pbase)
{
    registerDevices(pbase, 15, deviceSupportNames, devsl);
    registerDrivers(pbase, 1, driverSupportNames, drvsl);
    (*pvar_func_s7plcRegister)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #10
0
 void Kernel::initialize(const std::string &configPath) {
     registerDrivers();
     registerScriptLangs();
     loadConfig(configPath);
     m_archBackend->connect();
     registerModules();
     registerDevices();
     registerTasks();
 }
コード例 #11
0
int marCCDApp_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/epics/iocs/areaDetectorR1-9-1";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 38, recordTypeNames, rtl);
    registerDevices(pbase, 90, deviceSupportNames, devsl);
    registerDrivers(pbase, 1, driverSupportNames, drvsl);
    (*pvar_func_marCCD_ADRegister)();
    (*pvar_func_asSub)();
    (*pvar_func_parseRegister)();
    (*pvar_func_NDStdArraysRegister)();
    (*pvar_func_NDFileNetCDFRegister)();
    (*pvar_func_NDFileTIFFRegister)();
    (*pvar_func_NDFileJPEGRegister)();
    (*pvar_func_NDFileNexusRegister)();
    (*pvar_func_NDFileHDF5Register)();
    (*pvar_func_NDFileNullRegister)();
    (*pvar_func_NDROIRegister)();
    (*pvar_func_NDProcessRegister)();
    (*pvar_func_NDStatsRegister)();
    (*pvar_func_NDTransformRegister)();
    (*pvar_func_NDOverlayRegister)();
    (*pvar_func_NDColorConvertRegister)();
    (*pvar_func_subAveRegister)();
    (*pvar_func_interpRegister)();
    (*pvar_func_arrayTestRegister)();
    (*pvar_func_saveDataRegistrar)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_save_restoreRegister)();
    (*pvar_func_dbrestoreRegister)();
    (*pvar_func_asInitHooksRegister)();
    (*pvar_func_NDFileMagickRegister)();
    (*pvar_func_drvAsynIPPortRegisterCommands)();
    (*pvar_func_drvAsynIPServerPortRegisterCommands)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #12
0
int hvCaen_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/home/tracker/pelle/epics/svt-epics/svt-mpod-epics/example";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 38, recordTypeNames, rtl);
    registerDevices(pbase, 113, deviceSupportNames, devsl);
    registerDrivers(pbase, 2, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_CAENx527ConfigureCreateRegister)();
    (*pvar_func_CAENx527DbLoadRecordsRegister)();
    (*pvar_func_LVMPOD_TestCrateRegister)();
    (*pvar_func_LVMPOD_InitCrateRegister)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_pvHistoryRegister)();
    (*pvar_func_drvScalerSoftRegister)();
    (*pvar_func_femtoRegistrar)();
    (*pvar_func_Scaler974Register)();
    (*pvar_func_drvMPODRegister)();
    (*pvar_func_drvGlobalMPODRegister)();
    (*pvar_func_subAveRegister)();
    (*pvar_func_interpRegister)();
    (*pvar_func_arrayTestRegister)();
    (*pvar_func_save_restoreRegister)();
    (*pvar_func_dbrestoreRegister)();
    (*pvar_func_asInitHooksRegister)();
    (*pvar_func_configMenuRegistrar)();
    (*pvar_func_detUsePrefixRegister)();
    (*pvar_func_detConfigureCrateRegister)();
    (*pvar_func_detDbLoadRecordsRegister)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #13
0
int MOTIONIOC_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/epics/iocs/op-vlspgm/MONO";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 39, recordTypeNames, rtl);
    registerDevices(pbase, 111, deviceSupportNames, devsl);
    registerDrivers(pbase, 3, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_saveDataRegistrar)();
    (*pvar_func_subAveRegister)();
    (*pvar_func_interpRegister)();
    (*pvar_func_arrayTestRegister)();
    (*pvar_func_save_restoreRegister)();
    (*pvar_func_dbrestoreRegister)();
    (*pvar_func_asInitHooksRegister)();
    (*pvar_func_streamRegistrar)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_motorUtilRegister)();
    (*pvar_func_motorRegister)();
    (*pvar_func_asynMotorControllerRegister)();
    (*pvar_func_drvAsynIPPortRegisterCommands)();
    (*pvar_func_drvAsynIPServerPortRegisterCommands)();
    (*pvar_func_pmacAsynIPPortRegister)();
    (*pvar_func_pmacAsynMotorRegister)();
    (*pvar_func_drvAsynSerialPortRegisterCommands)();
    (*pvar_func_iocshSystemCommand)();
    (*pvar_func_register_func_rebootProc)();
    (*pvar_func_register_func_scanMonInit)();
    (*pvar_func_register_func_scanMon)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #14
0
int vmux_registerRecordDeviceDriver(DBBASE *pbase)
{
    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }
    registerRecordTypes(pbase, 27, recordTypeNames, rtl);
    registerDevices(pbase, 96, deviceSupportNames, devsl);
    registerDrivers(pbase, 2, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_streamRegistrar)();
    (*pvar_func_VMUX_asynFifoRegistrar)();
    (*pvar_func_VMUX_iocshFuncRegistrar)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #15
0
int seqSoftIoc_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/usr/local/epics/modules/seq-2.1.10";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 28, recordTypeNames, rtl);
    registerDevices(pbase, 40, deviceSupportNames, devsl);
    (*pvar_func_asSub)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #16
0
int cb7024_registerRecordDeviceDriver(DBBASE *pbase)
{
    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }
    registerRecordTypes(pbase, 27, recordTypeNames, rtl);
    registerDevices(pbase, 96, deviceSupportNames, devsl);
    registerDrivers(pbase, 2, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_streamRegistrar)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_drvAsynIPPortRegisterCommands)();
    (*pvar_func_drvAsynIPServerPortRegisterCommands)();
    (*pvar_func_drvAsynSerialPortRegisterCommands)();
    (*pvar_func_register_func_CB7024_funcSyncChannelOutputs)();
    (*pvar_func_register_func_CB7024_funcIdle)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #17
0
int BPM_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/home/igor/IOCtest/BPM_epics";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 28, recordTypeNames, rtl);
    registerDevices(pbase, 46, deviceSupportNames, devsl);
    (*pvar_func_asSub)();
    (*pvar_func_connRegister)();
    iocshRegisterVariable(vardefs);
    return 0;
}
int stanfordSR570_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/home/swilkins/Repos/iocs/stanfordSR570";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 30, recordTypeNames, rtl);
    registerDevices(pbase, 104, deviceSupportNames, devsl);
    registerDrivers(pbase, 2, driverSupportNames, drvsl);
    (*pvar_func_asSub)();
    (*pvar_func_caPutLogRegister)();
    (*pvar_func_asynRegister)();
    (*pvar_func_asynInterposeFlushRegister)();
    (*pvar_func_asynInterposeEosRegister)();
    (*pvar_func_streamRegistrar)();
    (*pvar_func_drvAsynIPPortRegisterCommands)();
    (*pvar_func_drvAsynIPServerPortRegisterCommands)();
    (*pvar_func_iocshSystemCommand)();
    (*pvar_func_save_restoreRegister)();
    (*pvar_func_dbrestoreRegister)();
    (*pvar_func_asInitHooksRegister)();
    (*pvar_func_register_func_rebootProc)();
    (*pvar_func_register_func_scanMonInit)();
    (*pvar_func_register_func_scanMon)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #19
0
int softIoc_registerRecordDeviceDriver(DBBASE *pbase)
{
    const char *bldTop = "/home/bilal/TARLA/epics/base/base-3.14.12.4";
    const char *envTop = getenv("TOP");

    if (envTop && strcmp(envTop, bldTop)) {
        printf("Warning: IOC is booting with TOP = \"%s\"\n"
               "          but was built with TOP = \"%s\"\n",
               envTop, bldTop);
    }

    if (!pbase) {
        printf("pdbbase is NULL; you must load a DBD file first.\n");
        return -1;
    }

    registerRecordTypes(pbase, 28, recordTypeNames, rtl);
    registerDevices(pbase, 40, deviceSupportNames, devsl);
    (*pvar_func_asSub)();
    (*pvar_func_dlloadRegistar)();
    (*pvar_func_iocshSystemCommand)();
    iocshRegisterVariable(vardefs);
    return 0;
}
コード例 #20
0
// main function for provisioning client using C-level provisioning API
int main()
{
    // initialize provisioning client
    if(initProvisionClient())
    {
        OIC_LOG(ERROR, TAG, "ProvisionClient init error");
        goto PMCLT_ERROR;
    }

    // main loop for provisioning manager
    int mn_num = 0;
    for( ; ; )
    {
        printf("\n");
        printMenu();
        printf(">> Enter Menu Number: ");
        for(int ret=0; 1!=ret; )
        {
            ret = scanf("%d", &mn_num);
            for( ; 0x20<=getchar(); );  // for removing overflow garbages
                                        // '0x20<=code' is character region
        }
        printf("\n");
        switch(mn_num)
        {
        case _10_DISCOV_ALL_DEVS_:
            if(discoverAllDevices())
            {
                OIC_LOG(ERROR, TAG, "_10_DISCOV_ALL_DEVS_: error");
            }
            break;
        case _11_DISCOV_UNOWN_DEVS_:
            if(discoverUnownedDevices())
            {
                OIC_LOG(ERROR, TAG, "_11_DISCOV_UNOWN_DEVS_: error");
            }
            break;
        case _12_DISCOV_OWN_DEVS_:
            if(discoverOwnedDevices())
            {
                OIC_LOG(ERROR, TAG, "_12_DISCOV_OWN_DEVS_: error");
            }
            break;
        case _20_REGIST_DEVS_:
            if(registerDevices())
            {
                OIC_LOG(ERROR, TAG, "_20_REGIST_DEVS_: error");
            }
            break;
        case _30_PROVIS_PAIR_DEVS_:
            if(provisionPairwise())
            {
                OIC_LOG(ERROR, TAG, "_30_PROVIS_PAIR_DEVS_: error");
            }
            break;
        case _31_PROVIS_CRED_:
            if(provisionCred())
            {
                OIC_LOG(ERROR, TAG, "_31_PROVIS_CRED_: error");
            }
            break;
        case _32_PROVIS_ACL_:
            if(provisionAcl())
            {
                OIC_LOG(ERROR, TAG, "_32_PROVIS_ACL_: error");
            }
            break;
        case _33_PROVIS_DP_:
            if(provisionDirectPairing())
            {
                OIC_LOG(ERROR, TAG, "_33_PROVIS_DP_: error");
            }
            break;
        case _34_CHECK_LINK_STATUS_:
            if(checkLinkedStatus())
            {
                OIC_LOG(ERROR, TAG, "_34_CHECK_LINK_STATUS_: error");
            }
            break;
        case _40_UNLINK_PAIR_DEVS_:
            if(unlinkPairwise())
            {
                OIC_LOG(ERROR, TAG, "_40_UNLINK_PAIR_DEVS_: error");
            }
            break;
        case _50_REMOVE_SELEC_DEV_:
            if(removeDevice())
            {
                OIC_LOG(ERROR, TAG, "_50_REMOVE_SELEC_DEV_: error");
            }
            break;
        case _60_GET_CRED_:
            if(getCred())
            {
                OIC_LOG(ERROR, TAG, "_60_GET_CRED_: error");
            }
            break;
        case _61_GET_ACL_:
            if(getAcl())
            {
                OIC_LOG(ERROR, TAG, "_61_GET_ACL_: error");
            }
            break;
        case _99_EXIT_PRVN_CLT_:
            goto PMCLT_ERROR;
        default:
            printf(">> Entered Wrong Number. Please Enter Again\n\n");
            break;
        }
    }

PMCLT_ERROR:
    if(OC_STACK_OK != OCStop())
    {
        OIC_LOG(ERROR, TAG, "OCStack stop error");
    }
    OCDeleteDiscoveredDevices(g_own_list);  // after here |g_own_list| points nothing
    OCDeleteDiscoveredDevices(g_unown_list);  // after here |g_unown_list| points nothing

    if(g_svr_fname)
    {
        OICFree(g_svr_fname);  // after here |g_svr_fname| points nothing
    }
    if(g_prvn_fname)
    {
        OICFree(g_prvn_fname);  // after here |g_prvn_fname| points nothing
    }
    return 0;  // always return normal case
}