00001 #include "TestRequest.h" 00002 #include "CalibrationController.h" 00003 #include "RequestException.h" 00004 00005 namespace SctCalibrationController { 00006 namespace Ipc { 00007 00008 TestRequestImpl::TestRequestImpl() : IPCCallback(&CalibrationController::getServer()) { 00009 } 00010 00011 void TestRequestImpl::startTest (Sct_CalibrationControllerStatus *_status, Sct_SctApi_T_SctApi * api, ilu_T_CString * name, ilu_ShortCardinal * testVariable, ilu_Cardinal * nScans, Sct_CalibrationController_T_TestPoints testPointsData){ 00012 } 00013 00014 Sct_CalibrationController_T_ScanRequest* TestRequestImpl::getNextScan (Sct_CalibrationControllerStatus *_status, ilu_Cardinal index){ 00015 return 0; 00016 } 00017 00018 ilu_Boolean TestRequestImpl::canFeedback (Sct_CalibrationControllerStatus *_status) { 00019 return false; 00020 } 00021 00022 void TestRequestImpl::endTest (Sct_CalibrationControllerStatus *_status) { 00023 } 00024 00025 00026 TestRequestAdapter::TestRequestAdapter(Sct_CalibrationController_T_TestRequest* req) : request(req) { 00027 } 00028 00029 00030 void TestRequestAdapter::startTest(Sct_SctApi_T_SctApi& api, string& name, unsigned short& testVariable, 00031 unsigned long& nScans, vector<double>& testPoints) { 00032 Sct_CalibrationControllerStatus status; 00033 char* text = 0; 00034 _Sct_CalibrationController_T_TestPoints_sequence data; 00035 request->startTest(&status, &api, &text, &testVariable, &nScans, &data); 00036 if (status.returnCode != 0) 00037 throw RequestException(status.returnCode, "TestRequestAdapter::startTest failed", __FILE__, __LINE__); 00038 name = text; 00039 for (unsigned int i = 0; i<data.Length(); ++i) { 00040 testPoints.push_back(data.Nth(i)); 00041 } 00042 delete [] text; 00043 } 00044 00045 ScanRequest* TestRequestAdapter::getNextScan(unsigned long index) { 00046 Sct_CalibrationControllerStatus status; 00047 Sct_CalibrationController_T_ScanRequest* scan = request->getNextScan(&status, index); 00048 if (status.returnCode != 0) 00049 throw RequestException(status.returnCode, "TestRequestAdapter::getNextScan failed", __FILE__, __LINE__); 00050 if (scan==0) return 0; 00051 ScanRequest* ptr=dynamic_cast<ScanRequest*>(scan); 00052 if (ptr!=0) return ptr; 00053 else return new ScanRequestAdapter(scan); 00054 } 00055 00056 bool TestRequestAdapter::canFeedback() { 00057 Sct_CalibrationControllerStatus status; 00058 bool can = request->canFeedback(&status); 00059 if (status.returnCode != 0) 00060 throw RequestException(status.returnCode, "TestRequestAdapter::canFeedback failed", __FILE__, __LINE__); 00061 return can; 00062 } 00063 00064 void TestRequestAdapter::endTest() { 00065 Sct_CalibrationControllerStatus status; 00066 request->endTest(&status); 00067 if (status.returnCode != 0) 00068 throw RequestException(status.returnCode, "TestRequestAdapter::endTest failed", __FILE__, __LINE__); 00069 } 00070 00071 00072 } 00073 }