int main(int argc, char **argv) { bool bOK = true; // keep going if true int nResult; CSampleObject *pObject; char *pArray; SimErrCustomInit(SIMERR_TIME_SEED, SIMERR_SYSTEMATIC); // Instantiate object with C++ allocation pObject = new CSampleObject; pObject = SimErrNew(SIMLINE, pObject, SIMERR_FOREVER, .4); if (pObject==0) { printf("C++ allocation error.\n"); bOK = false; } else { delete pObject; } // Allocate char array with malloc if (bOK) { pArray = (char *) malloc(100); pArray = SimErrMalloc(SIMLINE, pArray); if (pArray==0) { printf("C allocation error.\n"); bOK = false; } else { delete pArray; } } try { if (bOK) { // Adjust real-time device // note: AdjustValve can throw a CDeviceException bOK = AdjustValve(); SimErrException(SIMLINE, SIMERR_DEVICE_EXCEPTION, 4, 0.33); bOK = SimErrZero(SIMLINE, bOK, SIMERR_FOREVER, 0.2); if (!bOK) { printf("The valve stuck.\n"); } } if (bOK) { // Update remote-server database // note: UpdateDatabase can throw a CDatabaseException nResult = UpdateDatabase(); SimErrException(SIMLINE, SIMERR_DATABASE_EXCEPTION); nResult = SimErrResult(SIMLINE, nResult, DATABASE_ERROR); if (nResult == DATABASE_ERROR) { printf("Database update failed.\n"); bOK = false; } } } catch(CDeviceException *pDeviceException) { printf("Unrecoverable device error.\n"); delete pDeviceException; bOK = false; } catch(CDatabaseException *pDBException) { printf("Unrecoverable database error.\n"); delete pDBException; bOK = false; } catch(...) { printf("Unknown exception.\n"); bOK = false; } nResult = (bOK) ? 0 : -1; printf("Sample program exiting with return code = %d.\n", nResult); SimErrExit(true); return nResult; } //End of File