SDC C-Project CF Review 프로그램
LYW
2021-09-08 3ab77fdb5f702156c492c7eb4bd1daf25d6fbc56
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
#pragma once
 
#include "ObserverInterface.h"
 
#include "ReviewSystemDoc.h"
#include "ReviewSystemView.h"
#include "CHReviewSetting/SystemManager.h"
#include "CHMotorControls/MotorControl.h"
#include "CHLightControls/LightControl.h"
#include "CHLensChangeControls/LensChangeControl.h"
#include "CameraControlAlign.h"
#include "CameraControlReview.h"
#include "DisplayMessage.h"
#include "CoordCalibrator.h"
#include "CHReviewRecipe/RsRecipeManager.h"
#include "CHCommonClasses/ProcessTimer.h"
#include "SharedImageData.h"
#include "CHReviewResult/GlassResult.h"
#include "CHMotorCalibrator/MotorCalibrator.h"
#include "CHAfmControls/AfmControl.h"
#include "CHVcrControls/VcrControl.h"                // [2016:10:12]-[WEZASW] : VCR
#include "CHWsiControls/WsiControl.h"
#include "CHWsiControls/WsiControlInfo.h"
#include "SequenceProcessor.h"
#include "ReviewProcessor.h"
#include "CHWsiControls/WsiControl.h"
#include "CHReviewPrioritySorter/PrioritySorter.h"
#include "AlignServerControl.h"
#include "ResultServerControl.h"
#include "CHEdgeTriangle/RecipeManager.h"
#include "CHSignalControls/SignalControl.h"
#include "CHDefectPicker/DefectPicker.h"
 
#include "IOCPNetwork/NetDefinition.h"
#include "IOCPNetwork/NetServer.h"
 
#include "DlgReviewCamera.h"
#include "DlgGraph.h"
#include "DlgAlignCamera.h"
#include "DlgDefectMap.h"
#include "DlgDefectFilter.h"
#include "DlgDefectList.h"
#include "DlgDefectInfo.h" //taek 20.12.04
#include "DlgLog.h"
#include "DlgLogo.h"
#include "DlgCommand.h"
#include "DlgReviewPopUp.h"
#include "DlgReviewHistoryTool.h"
 
#include "CHTotalPitchMeasure/TotalPitchMeasure.h"
#include "CHResultFileManager/StringRaw.h"
#include "CHVirtualGlassMap/VirtualGlassMap.h"
#include "ReviewProcessor_CPJT.h"
#include "akAOISharedSystem.h" //20191017
 
#include "DlgDefocusList.h"
#include "M_AutoDiagnosisManager/DiagnosisManager.h"
#include "DlgSelfDiagnosis.h"
 
typedef std::vector<CMotorCalibrator>                        VectorMotorCalibrator;
typedef std::vector<CMotorCalibrator>::iterator                VectorMotorCalibratorIt;
typedef std::vector<CMotorCalibrator>::const_iterator        constVectorMotorCalibratorIt;
 
typedef std::vector<CLensChangeControl*>                    VectorLensChangeControl;
typedef std::vector<CLensChangeControl*>::iterator            VectorLensChangeControlIt;
 
typedef std::vector<CAfmControl*>                            VectorAfmControl;
typedef std::vector<CAfmControl*>::iterator                    VectorAfmControlIt;
 
typedef std::vector<CWsiControl*>                            VectorWsiControl;
typedef std::vector<CWsiControl*>::iterator                    VectorWsiControlIt;
 
typedef std::vector<CVcrControl*>                            VectorVCRControl;
typedef std::vector<CVcrControl*>::iterator                    VectorVCRControlIt;
 
class CReviewInterface :    public CObserverInterface,
                            public IMotorControl2Parent,
                            public ILightControl2Parent,
                            public ILensChangeControl2Parent,
                            public IAfmControl2Parent,
                            public IAlignCameraControl2Parent,
                            public IReviewCameraControl2Parent,
                            public ISequenceProcessor2Parent,
                            public IReviewProcessor2Parent,
                            public IDisplayMessage2Parent,
                            public IWsiControl2Parnet,
                            public IVcrControl2Parent,
                            public IPrioritySorter2Parent,
                            public ICameraImageView2Parent,
                            public IDialogReviewCamera2Parent,
                            public IDialogGraph2Parent,
                            public IDialogAlignCamera2Parent,
                            public IDialogDefectMap2Parent,
                            public IDialogDefectFilter2Parent,
                            public IDialogDefectList2Parent,
                            public IDialogLog2Parent,
                            public IDialogUserCmd2Parent,
                            public IDialogCommand2Parent,
                            public IDialogControl2Parent,
                            public IDialogModuleInfo2Parent,
                            public ISignalControl2Parnet,
                            public IDialogLogo2Parent,
                            public IDialogTabCtrl2Parent,
                            public akAOISharedParent,
                            public ITotalPitchMeasure2Parnet,
                            public IDialogDefocusList2Parent,
                            public IDialogReviewPopUP2Parent,
                            public IDiagnosisProcessor2Parent,
                            public IDialogReviewOffSet2Parent,
                            public IDialogReviewHistory2Parent
{
public:
    CReviewInterface(void);
    virtual ~CReviewInterface(void);
 
    void SetDoc(CReviewSystemDoc* pDoc)                { m_pDoc = pDoc; }
    void SetView(CReviewSystemView* pView)
    { 
        m_pView = pView;
        InitReviewInterface();
    } 
 
public: 
    // camera image view 2 parent
    virtual void    CIV2P_GetImagePathName(CString& strFilename);
    virtual void    CIV2P_ManualSimulation(CCHImageData* pImageData);
    
    // motor control 2 parent
    virtual void    IMC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...);
    virtual void    IMC2P_AxisMotionEnd(int nIndex, int nAxisIdx, BOOL bMotionEnd);
    virtual void    IMC2P_GantryMotionEnd(int nIndex, int nGantryIdx, BOOL bMotionEnd);
    virtual void    IMC2P_UpdatePosition(int nIndex, int nAxisIdx, double dPosition);     //현재 위치좌표
    virtual void    IMC2P_UpdateStatus(int nIndex, int nAxisIdx, long lStatus);
    virtual void    IMC2P_UpdateThetaPosition(int nIndex, double dPosition);    
    virtual void    IMC2P_UpdateThetaStatus(int nIndex, long lStatus);
    virtual void    IMC2P_GantrySoftWareTrigger(int nIndex, int nGantryIdx, int nTrigger);
    virtual void    IMC2P_WsiGantrySoftWareTrigger(int nIndex, int nGantryIdx, int nTrigger);
    virtual void    IMC2P_UpdateWsiMotionEnd(int nIndex, int nGantryIdx);
    virtual BOOL    IMC2P_GetUseWsi();
 
    // WSI Controller 2 parent    
    virtual void    IWC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...);
    virtual BOOL    IWC2P_SetMeasureInfo(int nIndex, int nPointIndex, const CString& strImagFilename);
    virtual BOOL    IWC2P_SetMeasureInfo(int nIndex, int nPointIndex, const CString& strImagFilename, const CString& strImagFilename2);
    virtual BOOL    IWC2P_SetMeasureInfo(int nModuleIndex, int nPointIndex, const CString& strImageFilename, int nWsiType);
    virtual void    IWC2P_SetWSIErrorCheck(int nIndex,CString strAlarmMessage);
    virtual void    IWC2P_SetWSIAliveCheck();
    virtual BOOL    IWC2P_GetMeasureInfo(int nModuleIndex, int nPointIndex, short& nLoc, short& nOptic, short& nGray, CString& strCellID);
    virtual int        IWC2P_GetCurrentStatus(int nModuleIndex, CString& strGlassID, CString& strRecipeID, int& nType);
    virtual void    IWC2P_SetConnectedStatus(int nModuleIndex, int nConnectStatus);
    virtual void    IWC2P_RecvMeasureMessage(int nModuleIndex, int nMessageType, int nMessageResult);
    virtual void    IWC2P_SetMeasureResult(int nModuleIndex, const SWsiResult& measureResut);
    virtual void    IWC2P_SetScanEnd(int nIndex, int nPointIndex, int nPositionX, int nPositionY);
    virtual int        IWC2P_GetWsiType();
 
    // TotalPitch Measure 2 parent
    virtual void    ITP2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...);
    virtual BOOL    ITP2P_GetAlignMarkPosition(double &dPositionX, double &dPositionY);
    virtual BOOL    ITP2P_GetGlassSize(double &dGlassSizeX, double &dGlassSizeY);
    virtual BOOL    ITP2P_GetAlignMarkCenterPosition(double &dPositionX, double &dPositionY);
    virtual BOOL    ITP2P_GetMotionEnable();
    virtual BOOL    ITP2P_MoveMotorGlassPosition(int nModuleIndex, double dPositionX, double dPositionY);    
    virtual BOOL    ITP2P_StartTemplateMatching(double &dPosX, double &dPosY);
    virtual BOOL    ITP2P_GetAlignTemplateCenterPosition(int nIdx, double &dPositionX, double &dPositionY);
    virtual BOOL    ITP2P_SetMinMagChange(int nModuleIndex);
    virtual double    ITP2P_GetCurrentResolution();
 
    // light control 2 parent
    virtual void ILC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...);
    virtual void ILC2P_ChangeLightLevel(int nIndex, int nLevel);
 
    // lens change control(revolver) 2 parent
    virtual void ILCC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...);
    virtual void ILCC2P_ChangePosition(int nIndex, int nPos);
 
    // afm control 2 parent
    virtual void IAFC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...);
    virtual void IAFC2P_CurrentStatus(int nIndex, int nStatusCode);
    virtual void IAFC2P_RecipeChangeComplete(int nIndex, int nResultCode);
 
    // vcr control 2 parent
    virtual void IVCRC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...);
    virtual BOOL IVCRC2P_RecvDecodingData(int nIndex, CString& strCode);
    virtual void IVCRC2P_SendDecodeTriggerSignal(int nIndex);
    
    // signal control 2 parent
    virtual void ISC2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...);
    virtual void ISC2P_ReceiveSignal(int nIndex, int nSignalIndex, int nSignalValue, BOOL bOn=TRUE);
    virtual void ISC2P_SetSignalStatus(int nReadSignal, int nSendSignal, BOOL nSendSignalWord = FALSE);
    
    // align camera control 2 parent
    virtual BOOL    IACC2P_GetCurrentFrame(int nCameraIndex, int nFrameWidth, int nFrameHeight, int nFrameChannels, CCHImageData *pImageData);
    virtual void    IACC2P_FrameCaptured(int nCameraIndex, int nFrameIndex, CCHImageData* pImageData);
    virtual void    IACC2P_AlignResult(const CAlignResult& alignResult);
    virtual void    IACC2P_CameraControl(int nValue);
    virtual BOOL    IACC2P_SetLightLevel(int nCameraIndex, int nValue);
    virtual BOOL    IACC2P_GetLightLevel(int nCameraIndex, int& nValue);
 
    // review camera control 2 parent
    virtual BOOL    IRCC2P_GetCurrentFrame(int nModuleIndex, int nCameraIndex, int nFrameWidth, int nFrameHeight, int nFrameChannels, CCHImageData *pImageData);
    virtual void    IRCC2P_FrameCaptured(int nModuleIndex, int nCameraIndex, int nFrameIndex, CCHImageData* pImageData);
    virtual void    IRCC2P_ReviewResult(int nModuleIndex, int nPointIndex, VectorImageData& vectorImageData);
    virtual void    IRCC2P_CameraControl(int nModuleIndex, int nValue);    
    virtual CString IRCC2P_GetTotalPitchImageName();
 
    // diagnosis processor
    virtual void IDP2P_DisplayMessage(int nIndex, const TCHAR* lpstrFormat, ...);
    // motor
    virtual void IDP2P_MotorGo(int nModuleIdx, double dPosX, double dPosY, BOOL bWaitReturn = FALSE);
    virtual BOOL IDP2P_GetMotionEnd(int nModuleIdx, int nTimeOut = -1);
    virtual BOOL IDP2P_IsGantryMotionEnd(int nModuleIdx);
    virtual BOOL IDP2P_CheckManualMode();
    // Squareness
    virtual int IDP2P_GetSelectedModuleIndex();
    virtual int IDP2P_GetOrigionMotorDir();
    virtual BOOL IDP2P_FindPanelCenter(int nModuleIdx, double& dPixelX, double& dPixelY, CString strImageName);
    // Flatness
    virtual BOOL IDP2P_SetAFMTracking(int nModuleIdx, BOOL bOn);
    virtual BOOL IDP2P_GetAFMZPosition(int nModuleIdx, double& dValue);
    virtual BOOL IDP2P_AFMHomePosition(int nModuleIndex);
    virtual BOOL IDP2P_DiagnosisSendCompleteSig();
 
    //#3407 KYH 자가진단 Judge 판정 및 알람 발생 기능 ADD START
    virtual BOOL IDP2P_DiagnosisSendJudgeAlarm(); //0412 자가진단 코드추가
    //#3407 KYH 자가진단 Judge 판정 및 알람 발생 기능 ADD END
 
    // wsi
    virtual void IDP2P_SetWsiManualMeasure(int nModuleIdx,double dPosX, double dPosY);
    virtual void IDP2P_WsiMotorMotionEnd(int nModuleIdx,double dPosX, double dPosY);
 
    // Dialog
    virtual BOOL IDP2P_SetDlgFlatness(int nIndex);
    virtual BOOL IDP2P_SetDlgSquareness(int nIndex); //taek 210105
    virtual BOOL IDP2p_SetDlgWSI(int nIndex);    //taek 210105
    virtual BOOL IDP2P_SetDialogTap(int nIndex);
    virtual void IDP2P_UpdateDialog(int nIndex = -1);
 
    // review processor
    virtual int                            IRP2P_GetWSIControlCount();                    
    virtual CWsiControl*                IRP2P_GetWSIControl(int nIndex);    
    virtual int                            IRP2P_GetModuleStatusCount(int nModuleType) const;
    virtual    CModuleStatus*                IRP2P_GetModuleStatus(int nModuleIdx);
    virtual    BOOL                        IRP2P_GetCenterCoordinate(double& dPosX, double& dPosY);
    virtual CSignalControl*                IRP2P_GetSignalControl();
    virtual CMotorControl*                IRP2P_GetMotorControl();
    virtual CCameraControlReview*        IRP2P_GetReviewCameraControl(int nModuleIndex);
    virtual int                            IRP2P_GetReviewCameraControlCount();
    virtual void                        IRP2P_UpdateReviewResult(int nModuleIndex, const CGlassResult* pGlassResult, int nPlanIndex=0);
    virtual void                        IRP2P_UpdateCameraControl(int nModuleIdx, const SCameraControl *pCameraControl, const SCameraInfo* pCameraInfo);
    virtual const CRsRcpReviewInfo*        IRP2P_Recipe_GetRsRcpReviewInfo();
    virtual const CSystemInfo*          IRP2P_GetReviewSysteminfo();
    virtual const CSignalControlInfo*    IRP2P_GetReviewSignalinfo();
    virtual CGlassResult*                IRP2P_GetCurrentGlassResult();                                                    
    virtual void                        IRP2P_DisplayMessage(const TCHAR* lpstrFormat, ...);
    virtual CResultServerControl*        IRP2P_GetResultServerControl();
    virtual CSequenceProcessor*            IRP2P_GetSequenceProcessor();
    virtual void                        IRP2P_CompletePlanIndex(int nReviewStatus, int nPlanIndex);
    virtual void                        IRP2P_UpdateReviewProcessStatus(int nReviewStatus, int nPlanIndex=0);
    virtual CRecipeManager*                IRP2P_GetEdgeRecipeManager();
    virtual BOOL                        IRP2P_GetFirstReviewLeft();
    virtual BOOL                        IRP2P_GetFirstReviewRight();
    virtual void                        IRP2P_SetFirstReviewLeft(BOOL b_Check);
    virtual void                        IRP2P_SetFirstReviewRight(BOOL b_Check);
 
    BOOL    m_bFirstReviewLeft;
    BOOL    m_bFirstReviewRight;
 
    virtual BOOL                        IRP2P_SaveDefectMap(const CString& strPath);
 
    // review priority sorter new
    virtual int                            PS2P_GetModuleStatusCount(int nModuleType = 0);
    virtual double                        PS2P_GetCurrentModuleResolution(int nModuleIndex);
    virtual void                        PS2P_GetCurrentModuleZoomData(int nModuleIndex, int& nZoomIdx, double& dZoomInfo);
 
    // Review OffSetTools
    virtual BOOL IDRO2P_GetMotorPos(int nModule,double &dXpos, double &dYpos);
    // GetOffSetValue
    virtual BOOL GetOffSetValue(int nModule, int nCam, int nScan, double dGlassXPos, double &dXpos, double &dYpos);
 
    virtual BOOL IDRO2P_SetGlassMode(BOOL bMode, int nCamidx, int nScanidx, double nXpos, double nYpos);
 
 
protected: // Sequence Processor
    // common
    virtual void                        ISP2P_DisplayMessage(const TCHAR* lpstrFormat, ...);
    virtual void                        ISP2P_MeasureGraph(CGlassResult* pGlassResult);
 
    // system info
    virtual const BOOL                    ISP2P_System_ReadConfigFile();
    virtual const CSystemInfo*            ISP2P_System_GetSystemInfo();
    virtual const CGlassTypeInfo*        ISP2P_System_GetGlassTypeInfo(int nIndex);
    virtual const CGlassTypeInfo*        ISP2P_System_GetStandardGlassTypeInfo();
    virtual const CAlignCameraInfo*        ISP2P_System_GetAlignCameraInfo(int nIndex);
    virtual const CSignalControlInfo*    ISP2P_System_GetPCControlInfo();
    virtual const CMotorControlInfo*    ISP2P_System_GetMotorInfo();
    virtual const CNetworkInfo*            ISP2P_System_GetNetworkInfo();
 
    virtual    void                        ISP2P_SetCurrentWsiMode(int nMode);
 
    //#3561 210908 LYW ADD Start
    virtual void    ISP2P_InitAlignCamera();
    //#3561 210908 LYW ADD End
 
    virtual CTotalPitchMeasure*            ISP2P_GetTotalPitchMeasure();
 
    // recipe info
    virtual CRsRecipeManager*            ISP2P_Recipe_GetRsRecipeManager();
    virtual CRsRcpReviewInfo*            ISP2P_Recipe_GetRsRcpReviewInfo();
    virtual CRsRcpMeasureInfo*            ISP2P_Recipe_GetRsRcpMeasureInfo();
    virtual CRsRcpAlignInfo*            ISP2P_Recipe_GetRsRcpAlignInfo();
    virtual CRsRcpDefectFindInfo*        ISP2P_Recipe_GetRsRcpDefectFindInfo();
 
    // single control
    virtual CSignalControl*                ISP2P_GetSignalControl();                    // Signal Control
    virtual CMotorControl*                ISP2P_GetMotorControl();                    // Motor Control
    virtual CAlignServerControl*        ISP2P_GetAlignServerControl();                // Align Server Control
    virtual CCameraControlAlign*        ISP2P_GetAlignCameraControl();                // Align Camera Control
    virtual CPrioritySorter*            ISP2P_GetPrioritySorter();                    // new Priority Sorter// Review Priority Sorter    
    virtual CDefectPicker*                ISP2P_GetDefectPicker(int nIdx=-1);            // Review Defect Picker
    virtual CPathScheduler*                ISP2P_GetReviewScheduler(int nIdx=-1);        // Review Scheduler
//    virtual CMeasureScheduler*            ISP2P_GetMeasureScheduler();                // Measure Scheduler
    virtual CCoordCalibrator*            ISP2P_GetCoordCalibrator();                    // coordination calibrator
    virtual CReviewProcessor*            ISP2P_GetReviewProcessor();                    // Review Processor
 
    // aoi shared memory control
    virtual _ProtocolReview*            ISP2P_GetAoiMemoryProtocol();                // aoi shared memory control
 
    // multi control
    virtual int                            ISP2P_GetReviewLightControlCount();            // Review Light Control vector
    virtual int                            ISP2P_GetAlignLightControlCount();            // Align Light Control vector
    virtual int                            ISP2P_GetRevolverControlCount();            // Revolver Control vector
    virtual int                            ISP2P_GetAFMControlCount();                    // AFM Control vector
    virtual int                            ISP2P_GetWSIControlCount();                    // WSI Control vector
    virtual int                            ISP2P_GetReviewCameraControlCount();        // Review Camera control vector
    virtual int                            ISP2P_GetMotorCalibratorCount();            // motor calibrator
    virtual void                        ISP2P_GlassPositionUpdate();                // Glass Position Update
 
    virtual CLightControl*                ISP2P_GetReviewLightControl(int nIndex);    // Review Light Control vector
    virtual CLightControl*                ISP2P_GetAlignLightControl(int nIndex);        // Align Light Control vector
    virtual CLensChangeControl*            ISP2P_GetRevolverControl(int nIndex);        // Revolver Control vector
    virtual CAfmControl*                ISP2P_GetAFMControl(int nIndex);            // AFM Control vector
    virtual CWsiControl*                ISP2P_GetWSIControl(int nIndex);            // WSI Control vector
    virtual CCameraControlReview*        ISP2P_GetReviewCameraControl(int nIndex);    // Review Camera control vector
    virtual CMotorCalibrator*            ISP2P_GetMotorCalibrator(int nIndex);        // motor calibrator
    virtual CVcrControl*                ISP2P_GetVcrControl(int nIndex);            // Vcr Control vector
 
    // single variable
    virtual SDefectFilter*                ISP2P_GetDefectFilter();                    // Defect Filter
    virtual SSignalIOStatus*            ISP2P_GetPCControlIOSignal();                // PCControl IO Signal
    virtual CSharedImageData*            ISP2P_GetSharedImageData();                    // shared image data
    virtual CConnectionStatus*            ISP2P_GetConnectionStatus();                // Connection Status
    virtual SThetaMotorInfo*            ISP2P_GetThetaMotorInfo();                    // Theta Motor Info
 
    // multi variable    
    virtual int                            ISP2P_GetModuleStatusCount(int nModuleType=0);                // Review Module Status Vector    
    virtual CModuleStatus*                ISP2P_GetModuleStatus(int nIndex);            // Review Module Status Vector    
    virtual CModuleStatus*                ISP2P_GetSelectedModuleStatus();            // Review Module Status Vector    
 
    // glass result
    virtual CGlassResult*                ISP2P_GetNewGlassResult(int& nGlassResultCount);    // new glass result
    virtual CGlassResult*                ISP2P_GetGlassResult(int nIndex);                    // get glass result
    virtual CGlassResult*                ISP2P_GetCurrentGlassResult();                        // get current glass result
    virtual STransferData*                ISP2P_GetCurrentTransferData();                        // get current transfer data
 
    // History result
    virtual CGlassResult*                ISP2P_GetNewHistoryResult(int& nHistoryResultCount);    // new glass result
    virtual CGlassResult*                ISP2P_GetHistoryResult(int nIndex);                    // get glass result
 
    // Read AOI Memory
    virtual BOOL                        ISP2P_ReadAOIResultMemory();
    virtual BOOL                        ISP2P_ReadAOIResultMemory2(CGlassResult *pGlassResult);
 
 
    // AOI Raw file
    virtual BOOL                        ISP2P_ReadAOIRawFileToGlassResult(const CString& strRawPath);
    virtual BOOL                        ISP2P_WriteGlassResultToAOIRawFile(CGlassResult* pGlassResult, const CString& strResultFilePath, int nStackType);
    virtual BOOL                        ISP2P_SetReviewResultData(CGlassResult *pGlassResult);
    virtual BOOL                        ISP2P_SetUserResultData(CGlassResult *pGlassResult);
    virtual BOOL                        ISP2P_SetReflowResultData(CGlassResult *pGlassResult);
    virtual BOOL                        ISP2P_SetWsiReflowResultData(CGlassResult *pGlassResult);
 
    virtual BOOL                        ISP2P_SetMeasureResultData(CGlassResult *pGlassResult); //Add by Juneki 2016-03-01
    virtual BOOL                        ISP2P_CreateRawDataFormat(int* pnCnt); //Add by Juneki 2006-03-01
    virtual BOOL                        ISP2P_WriteGlassResultToMeasureRawFile(const CString& strResultFilePath); //Add by Juneki 2006-03-01
    virtual void                        ISP2P_UpdateAlignResult(int nResultCode, const SAlignResult* pAlignResult);
 
    // Review Defect Map                
    virtual BOOL                        ISP2P_SaveDefectMap(const CString strPath);
 
    // recipe
    virtual CRecipeManager*                ISP2P_GetEdgeRecipeManager();
 
    // Observer interface
    virtual void                        ISP2P_UpdateReviewProcessStatus(int nReviewStatus, int nPlanIndex=0);                                                // review process status
    virtual void                        ISP2P_UpdateDefectFilter(const SDefectFilter* pDefectFilter);                                                        // Map Option
    virtual void                        ISP2P_UpdateReviewResult(int nModuleIndex, const CGlassResult* pGlassResult);                                        // Review Result
    virtual void                        ISP2P_UpdateProcessStatus(int nProcessStatus, const CGlassResult* pGlassResult);                                    // Process Status
    virtual void                        ISP2P_UpdateCameraControl(int nModuleIndex, const SCameraControl *pCameraControl, const SCameraInfo* pCameraInfo);    // camera status
    virtual void                        ISP2P_UpdateMotorPosition(int nModuleIndex, BOOL bSelected, const SMotorPosition *pMotorPosition);                    // motor position 
    virtual void                        ISP2P_UpdateMotorStatus(int nModuleIndex, const SMotorStatus *pMotorStatus);                                        // motor status 
    virtual void                        ISP2P_UpdatePCControlIOSignal(const SSignalIOStatus *pSignalIOStatus);                                                    // PCControl IO signal
    virtual void                        ISP2P_UpdateConnectionStatus(const CConnectionStatus* pConnectionStatus);                                            // connection status
    virtual void                        ISP2P_UpdateAlignResultStatus(int nModuleIndex, const CGlassResult* pGlassResult);                                        // Align Result
 
    virtual void                        ISP2P_GetDiagnosisHistory();
    virtual void                        ISP2P_GetDiagnosisHistory2();
    
    virtual CDiagnosisManager*            ISP2P_GetDiagnosisManager();
 
    virtual CDlgSelfDiagnosis*            ISP2P_GetDlgDiagnosis();
 
    virtual CDlgReviewHistoryTool*        ISP2P_GetDlgHistory();
 
    virtual BOOL                        ISP2P_GetFirstReviewLeft();
    virtual BOOL                        ISP2P_GetFirstReviewRight();
    virtual void                        ISP2P_SetFirstReviewLeft(BOOL b_Check);
    virtual void                        ISP2P_SetFirstReviewRight(BOOL b_Check);
 
public: 
 
    virtual BOOL    ISP2P_Motor_CameraGo(int nModuleIndex, double dPosX, double dPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE);
    
public: // dialog interface
    // display message 2 parent
    virtual void    DM2P_DisplayMessage(const CString& strMessage);
    virtual void    DM2P_DisplayMessage(const TCHAR* lpstrFormat, ...);
 
    // dialog review camera 2 parent
    virtual void    DRC2P_MoveMotorMouseDoubleClick(int nDiffPixelX, int nDiffPixelY);
 
    virtual void    DC2P_SetSelectedCamera(int nModuleIndex, int nValue);
    virtual void    DC2P_SetLightLevel(int nModuleIndex, int nValue);
 
    virtual void    DC2P_SetZoomLevel(int nModuleIndex, int nValue);
    virtual void    DC2P_SetCameraControl(int nModuleIndex, int nValue);
    virtual void    DC2P_SetJogCommand(int nModuleIndex, int nValue);
    virtual void    DC2P_SetAFMTracking(int nModuleIndex, BOOL bValue);
    virtual CModuleStatus* DC2P_Get_Selected_module_Status();
    virtual void    DC2P_SetCameraGo(int nModuleIndex, int nMoveAxis, double dPosX, double dPosY);
    virtual void    DC2P_SetCameraCenterGo(int nModuleIndex, int nMoveAxis, double dPosX, double dPosY);    
 
    virtual void    DC2P_MoveCommand(int nModuleIndex, int nCmdCode, double dX, double dY, double dR);
    virtual void    DC2P_JogCommand(int nModuleIndex, int nAxisFlag, int nCommandFlag);
    
    virtual void    DC2P_MoveCommandTheta(double dTheta);
    virtual void    DC2P_JogCommandTheta(int nCommandFlag);
    virtual void    DC2P_JogSpeed(double dSpeedValue);
    virtual    void    DC2P_ShowReviewPopUP();
 
    virtual void    DC2P_SetOffSetOn();
    virtual    BOOL    GetOffSetOn() {    return m_bIsOffSetOn; }
    virtual void    DC2P_SetSimulation();
    virtual BOOL    GetSimulationOn() { return m_bIsSimulation; }
 
    BOOL            GetJogAxisIndexCommand(const CMotorControlInfo* pControlInfo, const SAxisIndex* pAxisIndex, const SCoordInfo *pCoordInfo, int nJogDir, int nGoStopFlag, int& nAxisIdx, int& nJogCmd , int nModulelIdx); //taek 201230
 
    // dialog align camera 2 parent
    virtual BOOL    DAC2P_GetAlignImage(int nType, int nIndex, CCHImageData* pImageData);
    virtual void    DAC2P_SetLightLevel(int nModuleIndex, int nValue);
    virtual void    DAC2P_ManualAlignProcess();
    virtual void    DAC2P_SaveAlignTempImage();
    virtual CCoordCalibrator* DAC2P_GetCoordCalibrator();
    virtual void    DAC2P_SetActiveAlignCameraDialog();
 
    // dialog defect filter 2 parent
    virtual CString DDF2P_GetProgramVersion();
    virtual void    DDF2P_SetDefectFilter(const SDefectFilter *pDefectFilter);
 
    // dialog defect map 2 parent
    virtual void    DDM2P_SelectDefect(int nDefectPosX, int nDefectPosY, int nDefectMarginX, int nDefectMarginY);
    virtual void    DDM2P_SelectDefect2(int nDefectPosX, int nDefectPosY, int nDefectMarginX, int nDefectMarginY, CGlassResult* pHistoryResult); //taek 210213
    virtual void    DDM2P_MoveGlassPos(double dGlassPosX, double dGlassPosY);
 
    // dialog defect list 2 parent
    virtual void    DDL2P_SelectDefect(int nDefectIdx);
 
    // dialog command 2 parent
    virtual void    DC2P_SetUserCommand(int nCommand);
 
    // dialog user cmd 2 parent
    virtual void    DUC2P_SetUserCommand(int nCommand);
    
    // dialog Module info 2 parent
    virtual const CSystemInfo*            DMI2P_GetSystemInfo();
    virtual const CMotorControlInfo*    DMI2P_GetMotorInfo();
    virtual void  DMI2P_SetSelectedModuleIndex(int nModuleIdx, BOOL bExcute=FALSE);
    virtual const CGlassTypeInfo* DMI2P_StandardGlassTypeInfo();
    virtual const CRsRcpReviewInfo* DMI2P_Recipe_GetRsRcpReviewInfo();
    virtual BOOL DMI2P_GetCenterCoordinate(double& dPosX, double& dPosY);
    virtual BOOL ISP2P_MakeDirectory(CString strPath);
    virtual int CReviewInterface::ISP2P_CopyFolder( TCHAR* strSrc, TCHAR* strDest, bool bSubDir=true );
    virtual const CNetworkInfo*            IDL2P_System_GetNetworkInfo();
    virtual void    IDL2P_DisplayMessage(const TCHAR* lpstrFormat, ...);
    virtual void   IDL2P_OpenOffSetTool();
    virtual void   IDL2P_OpenHistoryTool();
 
protected:
    // Motor Control command
    BOOL    Motor_ReadAddress(long nAddress, double &dValue);
    BOOL    Motor_ReadAddress(long nAddress, long &nValue);
    BOOL    Motor_WriteAddress(long nAddress, double dValue);
    BOOL    Motor_WriteAddress(long nAddress, long nValue);
    BOOL    Motor_AxisGoSpeed(int nAxisIndex, double dSpeed, int nAccel=0);
    BOOL    Motor_AxisJogSpeed(int nAxisIndex, double dSpeed, int nAccel=0);
    BOOL    Motor_AxisJogCommand(int nAxisIndex, int nCommand);
 
    BOOL    Motor_AxisThetaGoSpeed(double dSpeed, int nAccel=0);
    BOOL    Motor_AxisThetaJogSpeed(double dSpeed, int nAccel=0);
    BOOL    Motor_AxisThetaGo(double dPos, BOOL bGoEnd=FALSE);
    BOOL    Motor_AxisThetaJogCommand(int nCommand);
 
    BOOL    Motor_AxisGo(int nModuleIndex, int nAxisType, int nDefectPos, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE);
    BOOL    Motor_AxisGo(int nModuleIndex, int nAxisType, double dPos, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE);
    BOOL    Motor_CameraGo(int nModuleIndex, int nDefectPosX, int nDefectPosY, int nMoveAxis,CDefectResult* pDefectResult ,BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE);
    BOOL    Motor_CameraGo(int nModuleIndex, double dPosX, double dPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE);
    BOOL    Motor_CameraGo2(int nModuleIndex, double dPosX, double dPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE);
 
    BOOL    Motor_CameraCenterGo(int nModuleIndex, int nDefectPosX, int nDefectPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE);
    BOOL    Motor_CameraCenterGo(int nModuleIndex, double dPosX, double dPosY, int nMoveAxis, BOOL bAutoSelectCamera=FALSE, BOOL bGoEnd=FALSE);
 
    BOOL    Motor_GantryGo(int nModuleIndex, int nDefectPosX, int nDefectPosY, BOOL bGoEnd=FALSE);
    BOOL    Motor_GantryGo(int nModuleIndex, double dPosX, double dPosY, BOOL bGoEnd=FALSE);
 
    BOOL    Motor_GantryGo(int nModuleIndex, const VectorInteger& vecMovePos, int nMoveType, BOOL bGoEnd=FALSE);
    BOOL    Motor_GantryGo(int nModuleIndex, const VectorDouble& vecMovePos, int nMoveType, BOOL bGoEnd=FALSE);
 
    BOOL    Motor_GantryWsiNextPosMove(int nModuleIndex, int nNextDefectIndex);
 
    BOOL    Motor_HomeGoExceptOne(int nModuleIndex, BOOL bAutoSelectCamera = FALSE, BOOL bGoEnd = FALSE);
    BOOL    Motor_CollisionDetect(int nModuleIndx, double dGlassPosX, double dGlassPosY);
 
    BOOL    Motor_GetMotorDirection(int nModuleIndx, int& nDirX, int& nDirY);
    
    // Align Camera Control command
    BOOL    AlignCamera_CameraControl(int nControlCmd);
 
    // Review Light Control command
    BOOL    ReviewLight_SetLightLevel(int nModuleIndex, int nValue);
    BOOL    ReviewLight_GetLightLevel(int nModuleIndex, int& nValue);
 
    // Align Light Control command
    BOOL    AlignLight_SetLightLevel(int nCameraIndex, int nValue);
    BOOL    AlignLight_GetLightLevel(int nCameraIndex, int& nValue);
 
    // Revolver Control Command
    BOOL    Revolver_SetRevolverLevel(int nModuleIndex, int nValue);
    BOOL    Revolver_GetRevolverLevel(int nModuleIndex, int& nValue);
 
    // AFM Control Command
    BOOL    AFM_SetAFMRecipeIndex(int nRecipeIndex, int nValue);
    BOOL    AFM_SetAFMRecipeName(const CString& strRecipeName, int nValue);
    BOOL    AFM_SetAFMZoomLevel(int nValue);
    BOOL    AFM_SetAFMTracking(BOOL bValue);
    BOOL    AFM_SetAFMJogCommand(int nCmd);
    BOOL    AFM_SetAFMJogSpeed(double dSpeed);
 
    BOOL    AFM_SetAFMRecipeIndex(int nModuleIndex, int nRecipeIndex, int nValue);
    BOOL    AFM_GetAFMRecipeIndex(int nModuleIndex, int& nRecipeIndex, int& nValue);
    BOOL    AFM_SetAFMRecipeName(int nModuleIndex, const CString& strRecipeName, int nValue);
    BOOL    AFM_GetAFMRecipeName(int nModuleIndex, CString& strRecipeName, int& nValue);
 
    BOOL    AFM_SetAFMZoomLevel(int nModuleIndex, int nValue);
    BOOL    AFM_GetAFMZoomLevel(int nModuleIndex, int& nValue);
    BOOL    AFM_SetAFMTracking(int nModuleIndex, BOOL bValue);
    BOOL    AFM_GetAFMTracking(int nModuleIndex, BOOL& bValue);
    BOOL    AFM_SetAFMJogCommand(int nModuleIndex,int nCmd);
    BOOL    AFM_SetAFMJogSpeed(int nModuleIndex,double dSpeed);
    BOOL    AFM_GetAFMZPosition(int nModuleIndex, double& dValue);
 
    // [2017:2:2]-[WEZASW] : Verycode 판독 결과 리턴
    BOOL    VCR_GetDecodingData(int nIndex, CString& strCode);
    BOOL    VCR_SetDecodeTriggerSignal(int nIndex);
 
    // 20190207 SJB, 센터좌표 변환
    BOOL    GetCenterCoordinate(double& dPosX, double& dPosY);
 
 
    // [2016:11:14]-[WEZASW] : WSI Manual 측정 기능
    BOOL    WSI_SetManualMeasurement(int nModuleIndex, int nDefectPosX, int nDefectPosY, int nDefectgPosX, int nDefectgPosY, BOOL bValue);
 
 
    // Review Camera Control command
    void    ReviewCamera_CameraControl(int nControlCmd);
    BOOL    ReviewCamera_CameraControl(int nModuleIndex, int nControlCmd);
    int        ReviewCamera_GetReviewCameraControlCount() const;
 
    // module status
    int                            Module_GetModuleStatusCount(int nModuleType=0) const;
    CModuleStatus*                Module_GetModuleStatus(int nModuleIdx);
    SExternalIndex*                Module_GetExternalIndex(int nModuleIdx);
    SCameraControl*                Module_GetCameraControl(int nModuleIdx);
    SMotorPosition*                Module_GetMotorPosition(int nModuleIdx); //Mot Pos
    SMotorStatus*                Module_GetMotorStatus(int nModuleIdx);
    SAxisIndex*                    Module_GetAxisIndex(int nModuleIdx);
    SCoordInfo*                    Module_GetCoordInfo(int nModuleIdx);
    SCameraInfo*                Module_GetCurrentCameraInfo(int nModuleIdx);
    SCameraInfo*                Module_GetCameraInfo(int nModuleIdx, int nZoomIdx=0);
    SMagnificInfo*                Module_GetCurrentMagnificInfo(int nModuleIdx);
    SMagnificInfo*                Module_GetMagnificInfo(int nModuleIdx, int nZoomIdx=0);    
    int                            Module_GetMoveIndex(int nSelectedModuleIndex, int nUMGlassX, int nUMGlassY, BOOL bAutoSelectCamera = FALSE);
 
    // standard module status
    int                            Module_GetStandardModuleIndex() const;
    CModuleStatus*                Module_GetStandardModuleStatus();
    SMotorPosition*                Module_GetStandardMotorPosition();
    SAxisIndex*                    Module_GetStandardAxisIndex();
 
    // selected module status
    int                            Module_GetSelectedModuleIndex() const;
    CModuleStatus*                Module_GetSelectedModuleStatus();
    SMotorPosition*                Module_GetSelectedMotorPosition();
    SAxisIndex*                    Module_GetSelectedAxisIndex();
 
 
 
 
 
    // setter internal
    double    GetFreeSpaceOfDrive() const;
    void    SetProgramVersion();
        
    void    ApplySystemSettingValue();
    void    SetDefaultValue();
    void    CreateSystemDirectory();
 
 
    
protected: 
    // interface
    BOOL        InitReviewInterface();
    void        DeinitReviewInterface();
 
    // shared image 
    int            InitSharedImage();
    void        DeinitSharedImage();
    
    // Align Server
    int            InitAlignServerControl();
    void        DeinitAlignServerControl();
 
    // review camera
    int            InitReviewCamera();
    void        DeinitReviewCamera();
    int            ConnectReviewCamera();
    void        DisconnectReviewCamera();
    
    // review Light Control
    int            InitReviewLightControl();
    void        DeinitReviewLightControl();
 
    // revolver control
    int            InitRevolverControl();
    void        DeinitRevolverControl();
 
    // AFM Control
    int            InitAFMControl();
    void        DeinitAFMControl();
 
    // WSI Control
    int            InitWSIController();
    void        DeinitWSIController();
    
    // align camera
    int            InitAlignCamera();
    void        DeinitAlignCamera();
 
    // Align Light Control
    int            InitAlignLightControl();
    void        DeinitAlignLightControl();
 
    // Motor control
    int            InitMotorControl();
    void        DeinitMotorControl();
 
    // Signal Control
    int            InitSignalControl();
    void        DeinitSignalControl();
 
    // review processor
    int            InitReviewProcessor();
    void        DeinitReviewProcessor();
 
    // sequence processor
    int            InitSequenceProcessor();
    void        DeinitSequenceProcessor();
 
    // new Priority Sorter
    int            InitPrioritySorter();
    void        DeinitPrioritySorter();
 
    // Review Defect Picker
    int            InitDefectPicker();
    void        DeinitDefectPicker();
 
    // Review Scheduler
    int            InitReviewScheduler();
    void        DeinitReviewScheduler();
 
    // Measure Scheduler
//    int            InitMeasureScheduler();
//    void        DeinitMeasureScheduler();
 
    // Coord Calibrator
    int            InitCoordCalibrator();
    void        DeinitCoordCalibrator();
 
    // Motor Calibrator
    int            InitMotorCalibrator();
    void        DeinitMotorCalibrator();
 
    // Result Server Control
    int            InitResultServerControl();
    void        DeinitResultServerControl();
 
    // edge triangle manger
    int            InitEdgeRecipeManager();
    void        DeinitEdgeRecipeManager();
 
    // virtual glass map
    int            InitVirtualGlassMap();
    void        DeinitVirtualGlassMap();
 
    // Auto Diagnosis
    int            InitDiagnosisManager();
    void        DeinitDiagnosisManager();
 
    int            InitDlgDiagnosis();
    void        DeinitDlgDiagnosis();
 
 
    // [2018/10/15 08:42:52 by jylee] related Shared Memory
    int            InitAOISharedMemory();
    void        DeinitAOISharedMemory();
    virtual void INA2P_RecvSignal(int nSystemType, int nSignal, int nParam1=0, int nParam2=0);
 
    int            InitTotalPitchMeasure();
    void        DeinitTotalPitchMeasure();
 
protected:
 
    // loading process func
    BOOL        Recipe_ApplyRecipeData();
    int            Recipe_GetRcpAFMRecipeInfoCount() const;
    int            Recipe_GetRcpReflowParameterCount() const;
    int            Recipe_GetRcpUserDefectInfoCount() const;
    int            Recipe_GetRcpPlanInfoCount() const;
    int            Recipe_GetRcpPriorityInfoCount() const;
    int            Recipe_GetRcpLightInfoCount() const;
 
    const CRcpAFMRecipeInfo*        Recipe_GetRcpAFMRecipeInfo(int nModuleIndex) const;
    const CRcpReflowParameter*        Recipe_GetRcpReflowParameter(int nModuleIndex) const;
    const CRcpUserDefectInfo*        Recipe_GetRcpUserDefectInfo(int nModuleIndex) const;
    const CRcpPlanInfo*                Recipe_GetRcpPlanInfo(int nModuleIndex) const;
    const CRcpPriorityInfo*            Recipe_GetRcpPriorityInfo(int nModuleIndex) const;
    const CRcpLightInfo*            Recipe_GetRcpLightInfo(int nModuleIndex) const;
 
    BOOL        IsManualProcessMode();
public:
    void WsiAliveCheckThread ();
protected:
    
    // for system value
    BOOL                        m_bChangeSysConfig;
    CReviewSystemDoc*            m_pDoc;
    CReviewSystemView*            m_pView;
 
    // single control
    CSignalControl*                m_pSignalControl;                // Signal Control
    CMotorControl*                m_pMotorControl;                // Motor Control
    CAlignServerControl*        m_pAlignServerControl;            // Align Server Control
    CCameraControlAlign*        m_pAlignCameraControl;            // Align Camera Control
    CSharedImageData*            m_pSharedImageData;                // shared image data
    CReviewProcessor*            m_pReviewProcessor;                // Review Processor
    CSequenceProcessor*            m_pSequenceProcessor;            // sequence processor
    CPrioritySorter*            m_pPrioritySorter;                // new Priority Sorter    
    CDefectPicker*                m_pDefectPicker;                // Review Defect Picker
    CPathScheduler*                m_pReviewScheduler;                // Review Scheduler
//    CMeasureScheduler*            m_pMeasureScheduler;            // Measure Scheduler
    CCoordCalibrator*            m_pCoordCalibrator;                // coordination calibrator
    CResultServerControl*        m_pResultServerControl;            // Send Result to Server Control
    CVirtualGlassMap*            m_pVirtualGlassMap;                // virtual glass map
    CDiagnosisManager*            m_pDiagnosisManager;            // Self Auto Diagnosis Manager
    CDlgSelfDiagnosis*            m_pDlgDiagnosis;
    CDlgReviewHistoryTool*        m_pDlgHistoryTool;
 
    // [2017:1:16]-[WEZASW] : VCR Control 기능 추가(Ing)
    CVcrControl*                m_pVCRControl;                    // VCR Control
 
    // 190624 SJB TotalPitchMeasure Add
    CTotalPitchMeasure*            m_pTotalPitchMeasure;
 
    // multi control
    VectorLightControl            m_vecReviewLightControl;        // Review Light Control vector
    VectorLightControl            m_vecAlignLightControl;            // Align Light Control vector
    VectorLensChangeControl        m_vecRevolverControl;            // Revolver Control vector
    VectorAfmControl            m_vecAFMControl;                // AFM Control vector
    VectorWsiControl            m_vecWSIControl;                // WSI Control vector
    VectorVCRControl            m_vecVCRControl;                // VCR Control vector
    VectorCameraControlReview    m_vecReviewCameraControl;        // Review Camera control vector
    VectorMotorCalibrator        m_vecMotorCalibrator;            // motor calibrator
 
 
    // single variable
    CString                        m_strProgramVersion;            // program version
    CProcessTimer                m_ProcessTimer;                    // process timer
    SThetaMotorInfo                m_sThetaMotorInfo;                // theta motor info
    
    // multi variable    
    VectorModuleStatus            m_vecModuleStatus;                // Review Module Status Vector    
 
    // edge triangle manager
    CRecipeManager*                m_pEdgeRecipeManager;            // Edge Triangle recipe manager
 
    // AOI Shared Memory
protected:
    static CakAOISharedSystem m_AOISharedMemory;//20191017
    //static akIPCNetAOISystem m_AOISharedMemory;//cmark
    
public:
    static CakAOISharedSystem* GetInstance();
    //static akIPCNetAOISystem* GetInstance();
    int ApplyMagAndGlassOffset(int nModuleIndex ,int wicthPos,double posX,double posY); //0:Xpos 1:Ypos
    
    
    void    SetCurrentWsiMode(int nMode)        { m_nCurrentWsiMode = nMode; }
    int        GetCurrentWsiMode()                    { return m_nCurrentWsiMode; }
    void    IRP2P_UpdateDefocusList();
 
protected:
    // critical section
    CRITICAL_SECTION            m_csReviewResult;                // review result
    CRITICAL_SECTION            m_csReviewSignal;
 
    int                            m_nSimualData[10];
    int                            m_nCurrentWsiMode;
 
    BOOL                        m_bIsOffSetOn;
    BOOL                        m_bIsSimulation;
};