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 }