Sylvac S_Dial Work
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SylvacDial.h"


ClassImp(SylvacDial)

SylvacDial::SylvacDial()

////////////////////////////////////////////////////////////
// This class implements control and readout of a         //
// Sylvac dial gauge S_Dial Work equipped with a          //
// FTDI FT232 USB-Serial converter identified by its      // 
// USB ID:  0403:6001                                     //
// The software makes use of libftdi.so provided by       //
// e.g. the Ubuntu package libftdi-dev                    //
//                                                        //
// In a root session you can do:                          //
//                                                        // 
// gSystem->Load("/usr/lib/x86_64-linux-gnu/libftdi.so"); //
// gROOT->ProcessLine(".L SylvacDial.cxx+");              //
// SylvacDial *sd = new SylvacDial();                     //
////////////////////////////////////////////////////////////

{
	int ret; 
//	struct ftdi_context *ftdi;
//	struct ftdi_version_info version;
	if ((ftdi = ftdi_new()) == 0)
	{
		fprintf(stderr, "ftdi_new failed\n");
		return;
	}
// Sylvac S_Dial work, VendorId, DeviceId
	if ((ret = ftdi_usb_open(ftdi, 0x0403, 0x6001)) < 0)
	{
		fprintf(stderr, "unable to open ftdi device: %d (%s)\n", ret, ftdi_get_error_string(ftdi));
		ftdi_free(ftdi);
		return;
	}
	// Read out FTDIChip-ID of R type chips
	if (ftdi->type == TYPE_R)
	{
		unsigned int chipid;
		ret = ftdi_read_chipid(ftdi, &chipid);
		if ( ret == 0 )
			printf("FTDI chipid: %X\n", chipid);
		else
			printf("Error reading FTDI chipid: %d\n", ret );
	}
	// Set serial RS232 properties
	ret = ftdi_set_baudrate(ftdi, 4800);
	ret = ftdi_set_line_property2 (ftdi, BITS_7,  STOP_BIT_2, EVEN, BREAK_OFF);
	ret = ftdi_setflowctrl(ftdi, 1);
	//
	SetVerbose(1);
	SetMode("NOR");
	GetSense();
	GetFunCache();
	GetUnit();
	GetKeyLock();
	GetMulFac();
	GetPresetValue();
	GetReference();
	GetHold();
	GetTolLimits();
	GetLCal();
	GetNCal();
	GetMode();
	GetMainParams();
	GetId();
	
	GetBatt();
	GetFwVersion();
	fTolLimitsActiveState = kFALSE;
	
	GetValue();
}
//______________________________________________________________	

SylvacDial::~SylvacDial()
{	
	int ret;
	if ((ret = ftdi_usb_close(ftdi) ) < 0)
	{
		fprintf(stderr, "Unable to close ftdi device: %d (%s)\n", 
		ret, ftdi_get_error_string(ftdi));
		ftdi_free(ftdi);
	}
	ftdi_free(ftdi);
}
//_________________________________________________________

int SylvacDial::GetData(TString *str, const char *tit)
{
	usleep(200000);   // 200 msec
	ClearBuf();
	int rsize=ftdi_read_data(ftdi, fBuf, MAXBUF);
	if (rsize > 0 ) {
		for (int i=0; i<rsize; i++) {
			if ( fBuf[i] == 13 ) fBuf[i] = ' ';
		}
		*str = (char*)fBuf;
		if (fVerbose > 0 ) {
			printf("%s %s\n", tit, str->Data());
//			PrintData(fBuf, rsize);
		}
		ClearBuf();
	}
	return rsize;
}
//_________________________________________________________

const char * SylvacDial::GetSense()
{
	// Get measurement direction +-
	ftdi_write_data(ftdi, (unsigned char*)"CHA?\r", 5);
   int rsize = GetData(&fSense, "Measurement sense");
	if (rsize > 0 ) {
		return fSense.Data();
	} else {
		printf("GetSense(): Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetFunCache()
{
	// Current function cache
	ftdi_write_data(ftdi, (unsigned char*)"FCT?\r", 5);
   int rsize = GetData(&fFunCache, "Function cache active");
	if (rsize > 0 ) {
		return fId.Data();
	} else {
		printf("GetFunCache: Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetUnit()
{
	// Active measurement unit mm/inch
	ftdi_write_data(ftdi, (unsigned char*)"UNI?\r", 5);
   int rsize = GetData(&fUnit, "Measurement unit active");
	if (rsize > 0 ) {
		return fId.Data();
	} else {
		printf("Unit: Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetKeyLock()
{
	// Keypad locked?
	ftdi_write_data(ftdi, (unsigned char*)"KEY?\r", 5);
   int rsize = GetData(&fKeyLock, "Keypad locked");
	if (rsize > 0 ) {
		return fId.Data();
	} else {
		printf("GetKeyLock: Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetMulFac()
{
	// Get Multiplication factor
	ftdi_write_data(ftdi, (unsigned char*)"MUL?\r", 5);
   int rsize = GetData(&fMulFac, "Multiplication factor");
	if (rsize > 0 ) {
		return fId.Data();
	} else {
		printf("GetMulFac: Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetPresetValue()
{
	// Get Preset value
	ftdi_write_data(ftdi, (unsigned char*)"PRE?\r", 5);
   int rsize = GetData(&fPresetValue, "Preset value");
	if (rsize > 0 ) {
		return fId.Data();
	} else {
		printf("GetPresetValue: Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetReference()
{
	// Reference activ?
	ftdi_write_data(ftdi, (unsigned char*)"REF?\r", 5);
   int rsize = GetData(&fReference, "Reference activ");
	if (rsize > 0 ) {
		return fId.Data();
	} else {
		printf("GetReference(): Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetHold()
{
	// Status of hold function
	ftdi_write_data(ftdi, (unsigned char*)"STO?\r", 5);
   int rsize = GetData(&fHold, "Status of hold function");
	if (rsize > 0 ) {
		return fId.Data();
	} else {
		printf("GetHold: Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetTolLimits()
{
	//Current tolerance limit values
	ftdi_write_data(ftdi, (unsigned char*)"TOL?\r", 5);
   int rsize = GetData(&fTolLimits, "Current tolerance limit values");
	if (rsize > 0 ) {
		return fTolLimits.Data();
	} else {
		printf("GetTol: Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetLCal()
{
	// last calibration
	ftdi_write_data(ftdi, (unsigned char*)"LCAL?\r", 6);
   int rsize = GetData(&fLCal, "Last calibration");
	if (rsize > 0 ) {
		return fLCal.Data();
	} else {
		printf("GetLcal(): Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetNCal()
{
	// Next calibration
	ftdi_write_data(ftdi, (unsigned char*)"NCAL?\r", 6);
   int rsize = GetData(&fNCal, "Next calibration");
	if (rsize > 0 ) {
		return fNCal.Data();
	} else {
		printf("GetNCal(): Error\n");
		return NULL;
	}
}
//_________________________________________________________

double SylvacDial::GetValue()
{
	// Read value from device depending on active mode: MIN, MAX, DEL, NOR 
	ftdi_write_data(ftdi, (unsigned char*)"?\r", 2);
   usleep(200000);   // 200 msec
   ClearBuf();
	int rsize=ftdi_read_data(ftdi, fBuf, MAXBUF);
	
	if (rsize > 0 ) {
		fValue = atof((char*)fBuf);
		if (fVerbose > 0 ) {
			printf("Value: %f\n", fValue);
		}
		ClearBuf();
		return fValue;
	} else {
		printf("GetValue(): Error\n");
		return 0;
	}
}
//_________________________________________________________

const char * SylvacDial::GetMode()
{
	// Current active mode: MIN, MAX, DEL, NORmal
	ftdi_write_data(ftdi, (unsigned char*)"MOD?\r", 5);
   int rsize = GetData(&fMode, "Current active mode");
	if (rsize > 0 ) {
		return fMode.Data();
	} else {
		printf("GetMode(): Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetMainParams()
{
	// Get Main instrument parmeters
	ftdi_write_data(ftdi, (unsigned char*)"SET?\r", 5);
   int rsize = GetData(&fMainParams, "Main instrument parmeters");
	if (rsize > 0 ) {
		return fMainParams.Data();
	} else {
		printf("GetSettings(): Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetId()
{
	// Instrument Id code
	ftdi_write_data(ftdi, (unsigned char*)"ID?\r", 4);
   int rsize = GetData(&fId, "Instrument Id code");
	if (rsize > 0 ) {
		return fId.Data();
	} else {
		printf("GetId(): Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetBatt()
{
	// "Battery status, BAT1 = ok, BAT0 low
	ftdi_write_data(ftdi, (unsigned char*)"BAT?\r", 5);
   int rsize = GetData(&fBatt, "battery status, BAT1 = ok, BAT0 low");
	if (rsize > 0 ) {
		return fId.Data();
	} else {
		printf("GetBatt(): Error\n");
		return NULL;
	}
}
//_________________________________________________________

const char * SylvacDial::GetFwVersion()
{
	//Version No and date of firmware
	
	ftdi_write_data(ftdi, (unsigned char*)"VER?\r", 5);
   int rsize = GetData(&fFwVersion, "Version No and date of firmware");
	if (rsize > 0 ) {
		return fFwVersion.Data();
	} else {
		printf("GetFwVersion(): Error\n");
		return NULL;
	}
}
//_________________________________________________________

int SylvacDial::SetMode(const char * mode)
{
	//mode: MIN, MAX, DEL, NOR 
	if (strncmp(mode,"MIN",3) != 0 &&  strncmp(mode,"MAX",3) != 0
	 && strncmp(mode,"DEL",3) != 0 &&  strncmp(mode,"NOR",3) != 0 ) {
		printf("SetMode illegal %s\n", mode);
		return -1;;
	}
	char mmm[5];
	strcpy (mmm,mode);
	strcat (mmm,"\r");
	printf ("SetMode: %s\n", mmm);
// 	int wr = ftdi_write_data(ftdi, (unsigned char*)"MAX\r", 4);
 	int wr = ftdi_write_data(ftdi, (unsigned char*)mmm, strlen(mmm));
   usleep(500000);   // 500 msec
   int vsave = fVerbose;
   GetMode();
   fVerbose = vsave;
   return wr;
}
//_________________________________________________________

int SylvacDial::SetSense(const char * sense)
{
// Change Measurement direction "+" / "-"
	if (strncmp(sense,"+",1) != 0 && strncmp(sense,"-",1)) {
		printf("SetSense Illegal: %s\n", sense);
		return -1;;
	}
	TString cmd("CHA");
	cmd += sense;
	int wr = ftdi_write_data(ftdi, (unsigned char*)cmd.Data(), 4);
	if (wr >0) {
		printf("New measurement direction: %s\n",  GetSense());
	}
	return wr;
}	
//_________________________________________________________

int SylvacDial::SetTolLimits(double x, double y)
{
	// Set tolerance limits, 
	// to activate / deactivate use ActivateTolLimits(kTRUE, kFALSE)
	
	int wr = -1;
	TString cmd("TOL ");
	cmd += Form("%+08.3f", x);
	cmd += " ";
	cmd += Form("%+08.3f", y);
	cmd +="\r";
	printf("SetTolLimits: %s\n", cmd.Data());
	wr = ftdi_write_data(ftdi, (unsigned char*)cmd.Data(), cmd.Length());
	if (wr >0) {
		printf("New tolerance limits %s\n",  GetTolLimits());
	} else {
		printf("SetTolLimits Error\n");
	}	
	return wr;
}
//_________________________________________________________

int SylvacDial::ActivateTolLimits(Bool_t active)
{
	// activate / deactivate TolLimits
	TString cmd("TOL");
	if (active ) {
		cmd += "1\r";
	} else {
		cmd += "0\r";
	}
	int wr = ftdi_write_data(ftdi, (unsigned char*)cmd.Data(), cmd.Length());
	if (wr >0) {
		printf("Tolerance limits: ");
		if ( active ) {
			fTolLimitsActiveState = kTRUE;
			printf("activated\n");
		} else {
			fTolLimitsActiveState = kFALSE;
			printf("deactivated\n");
		}
	} else {
		printf("ActivateTolLimits Error\n");
	}	
	return wr;
}	
//_________________________________________________________

void SylvacDial::Reset()
{
	// Reinitialize MIN, MAX, DEL
	usleep(500000);   // 500 msec
	int wr = ftdi_write_data(ftdi, (unsigned char*)"CLE\r" , 4);
	usleep(500000);   // 500 msec
   ClearBuf();
	wr=ftdi_read_data(ftdi, fBuf, MAXBUF);
	if (wr > 0) {
		if (fVerbose > 0) {
			printf("After reset ");
			PrintData(fBuf, wr);
		}
		ClearBuf();
	}
}
//_________________________________________________________

int SylvacDial::SetFunCache(const char * /*func*/)
{
	// Set function cache
	printf("Not yet implemented\n");
	return -1;
}
//_________________________________________________________

int SylvacDial::SetUnit(const char * /*unit*/)
{
	// Set Unit mm/in
	printf("Not yet implemented\n");
	return -1;
}
//_________________________________________________________

int SylvacDial::SetKeyLock(Bool_t /*lock*/)
{
	// Key lock
	printf("Not yet implemented\n");
	return -1;
}
//_________________________________________________________

int SylvacDial::SetMulFac(double /*mul*/)
{
	// Set multiplication factor
	printf("Not yet implemented\n");
	return -1;
}
//_________________________________________________________

int SylvacDial::SetPresetValue(double /*preset*/)
{
	//Set preset value
	printf("Not yet implemented\n");
	return -1;
}
//_________________________________________________________

int SylvacDial::SetReference(const char * /*REF*/)
{
	// Set rererence value
	printf("Not yet implemented\n");
	return -1;
}
//_________________________________________________________

int SylvacDial::SetHold(Bool_t /*hold*/)
{
	// Set HOLD status
	printf("Not yet implemented\n");
	return -1;
}
//_________________________________________________________

//_________________________________________________________

int SylvacDial::SetLCal(const char * /*date*/)
{
	// Set date of last calibration dd.mm.yy
	printf("Not yet implemented\n");
	return -1;
}
//_________________________________________________________

int SylvacDial::SetNCal(const char * /*date*/)
{
	// Set date of next calibration dd.mm.yy
	printf("Not yet implemented\n");
	return -1;
}
//_________________________________________________________

void SylvacDial::PrintData(unsigned char * buf, int rsize)
{
	if (rsize <= 0) {
		printf("ftdi_read_data: %d\n", rsize);
		return;
	}
   for (int i=0; i<rsize; i++) {
		if ( buf[i] == 13 )
			printf ("%c", '\n' );
		printf ("%c", buf[i]);
	}
	printf("\n");
}
 SylvacDial.cxx:1
 SylvacDial.cxx:2
 SylvacDial.cxx:3
 SylvacDial.cxx:4
 SylvacDial.cxx:5
 SylvacDial.cxx:6
 SylvacDial.cxx:7
 SylvacDial.cxx:8
 SylvacDial.cxx:9
 SylvacDial.cxx:10
 SylvacDial.cxx:11
 SylvacDial.cxx:12
 SylvacDial.cxx:13
 SylvacDial.cxx:14
 SylvacDial.cxx:15
 SylvacDial.cxx:16
 SylvacDial.cxx:17
 SylvacDial.cxx:18
 SylvacDial.cxx:19
 SylvacDial.cxx:20
 SylvacDial.cxx:21
 SylvacDial.cxx:22
 SylvacDial.cxx:23
 SylvacDial.cxx:24
 SylvacDial.cxx:25
 SylvacDial.cxx:26
 SylvacDial.cxx:27
 SylvacDial.cxx:28
 SylvacDial.cxx:29
 SylvacDial.cxx:30
 SylvacDial.cxx:31
 SylvacDial.cxx:32
 SylvacDial.cxx:33
 SylvacDial.cxx:34
 SylvacDial.cxx:35
 SylvacDial.cxx:36
 SylvacDial.cxx:37
 SylvacDial.cxx:38
 SylvacDial.cxx:39
 SylvacDial.cxx:40
 SylvacDial.cxx:41
 SylvacDial.cxx:42
 SylvacDial.cxx:43
 SylvacDial.cxx:44
 SylvacDial.cxx:45
 SylvacDial.cxx:46
 SylvacDial.cxx:47
 SylvacDial.cxx:48
 SylvacDial.cxx:49
 SylvacDial.cxx:50
 SylvacDial.cxx:51
 SylvacDial.cxx:52
 SylvacDial.cxx:53
 SylvacDial.cxx:54
 SylvacDial.cxx:55
 SylvacDial.cxx:56
 SylvacDial.cxx:57
 SylvacDial.cxx:58
 SylvacDial.cxx:59
 SylvacDial.cxx:60
 SylvacDial.cxx:61
 SylvacDial.cxx:62
 SylvacDial.cxx:63
 SylvacDial.cxx:64
 SylvacDial.cxx:65
 SylvacDial.cxx:66
 SylvacDial.cxx:67
 SylvacDial.cxx:68
 SylvacDial.cxx:69
 SylvacDial.cxx:70
 SylvacDial.cxx:71
 SylvacDial.cxx:72
 SylvacDial.cxx:73
 SylvacDial.cxx:74
 SylvacDial.cxx:75
 SylvacDial.cxx:76
 SylvacDial.cxx:77
 SylvacDial.cxx:78
 SylvacDial.cxx:79
 SylvacDial.cxx:80
 SylvacDial.cxx:81
 SylvacDial.cxx:82
 SylvacDial.cxx:83
 SylvacDial.cxx:84
 SylvacDial.cxx:85
 SylvacDial.cxx:86
 SylvacDial.cxx:87
 SylvacDial.cxx:88
 SylvacDial.cxx:89
 SylvacDial.cxx:90
 SylvacDial.cxx:91
 SylvacDial.cxx:92
 SylvacDial.cxx:93
 SylvacDial.cxx:94
 SylvacDial.cxx:95
 SylvacDial.cxx:96
 SylvacDial.cxx:97
 SylvacDial.cxx:98
 SylvacDial.cxx:99
 SylvacDial.cxx:100
 SylvacDial.cxx:101
 SylvacDial.cxx:102
 SylvacDial.cxx:103
 SylvacDial.cxx:104
 SylvacDial.cxx:105
 SylvacDial.cxx:106
 SylvacDial.cxx:107
 SylvacDial.cxx:108
 SylvacDial.cxx:109
 SylvacDial.cxx:110
 SylvacDial.cxx:111
 SylvacDial.cxx:112
 SylvacDial.cxx:113
 SylvacDial.cxx:114
 SylvacDial.cxx:115
 SylvacDial.cxx:116
 SylvacDial.cxx:117
 SylvacDial.cxx:118
 SylvacDial.cxx:119
 SylvacDial.cxx:120
 SylvacDial.cxx:121
 SylvacDial.cxx:122
 SylvacDial.cxx:123
 SylvacDial.cxx:124
 SylvacDial.cxx:125
 SylvacDial.cxx:126
 SylvacDial.cxx:127
 SylvacDial.cxx:128
 SylvacDial.cxx:129
 SylvacDial.cxx:130
 SylvacDial.cxx:131
 SylvacDial.cxx:132
 SylvacDial.cxx:133
 SylvacDial.cxx:134
 SylvacDial.cxx:135
 SylvacDial.cxx:136
 SylvacDial.cxx:137
 SylvacDial.cxx:138
 SylvacDial.cxx:139
 SylvacDial.cxx:140
 SylvacDial.cxx:141
 SylvacDial.cxx:142
 SylvacDial.cxx:143
 SylvacDial.cxx:144
 SylvacDial.cxx:145
 SylvacDial.cxx:146
 SylvacDial.cxx:147
 SylvacDial.cxx:148
 SylvacDial.cxx:149
 SylvacDial.cxx:150
 SylvacDial.cxx:151
 SylvacDial.cxx:152
 SylvacDial.cxx:153
 SylvacDial.cxx:154
 SylvacDial.cxx:155
 SylvacDial.cxx:156
 SylvacDial.cxx:157
 SylvacDial.cxx:158
 SylvacDial.cxx:159
 SylvacDial.cxx:160
 SylvacDial.cxx:161
 SylvacDial.cxx:162
 SylvacDial.cxx:163
 SylvacDial.cxx:164
 SylvacDial.cxx:165
 SylvacDial.cxx:166
 SylvacDial.cxx:167
 SylvacDial.cxx:168
 SylvacDial.cxx:169
 SylvacDial.cxx:170
 SylvacDial.cxx:171
 SylvacDial.cxx:172
 SylvacDial.cxx:173
 SylvacDial.cxx:174
 SylvacDial.cxx:175
 SylvacDial.cxx:176
 SylvacDial.cxx:177
 SylvacDial.cxx:178
 SylvacDial.cxx:179
 SylvacDial.cxx:180
 SylvacDial.cxx:181
 SylvacDial.cxx:182
 SylvacDial.cxx:183
 SylvacDial.cxx:184
 SylvacDial.cxx:185
 SylvacDial.cxx:186
 SylvacDial.cxx:187
 SylvacDial.cxx:188
 SylvacDial.cxx:189
 SylvacDial.cxx:190
 SylvacDial.cxx:191
 SylvacDial.cxx:192
 SylvacDial.cxx:193
 SylvacDial.cxx:194
 SylvacDial.cxx:195
 SylvacDial.cxx:196
 SylvacDial.cxx:197
 SylvacDial.cxx:198
 SylvacDial.cxx:199
 SylvacDial.cxx:200
 SylvacDial.cxx:201
 SylvacDial.cxx:202
 SylvacDial.cxx:203
 SylvacDial.cxx:204
 SylvacDial.cxx:205
 SylvacDial.cxx:206
 SylvacDial.cxx:207
 SylvacDial.cxx:208
 SylvacDial.cxx:209
 SylvacDial.cxx:210
 SylvacDial.cxx:211
 SylvacDial.cxx:212
 SylvacDial.cxx:213
 SylvacDial.cxx:214
 SylvacDial.cxx:215
 SylvacDial.cxx:216
 SylvacDial.cxx:217
 SylvacDial.cxx:218
 SylvacDial.cxx:219
 SylvacDial.cxx:220
 SylvacDial.cxx:221
 SylvacDial.cxx:222
 SylvacDial.cxx:223
 SylvacDial.cxx:224
 SylvacDial.cxx:225
 SylvacDial.cxx:226
 SylvacDial.cxx:227
 SylvacDial.cxx:228
 SylvacDial.cxx:229
 SylvacDial.cxx:230
 SylvacDial.cxx:231
 SylvacDial.cxx:232
 SylvacDial.cxx:233
 SylvacDial.cxx:234
 SylvacDial.cxx:235
 SylvacDial.cxx:236
 SylvacDial.cxx:237
 SylvacDial.cxx:238
 SylvacDial.cxx:239
 SylvacDial.cxx:240
 SylvacDial.cxx:241
 SylvacDial.cxx:242
 SylvacDial.cxx:243
 SylvacDial.cxx:244
 SylvacDial.cxx:245
 SylvacDial.cxx:246
 SylvacDial.cxx:247
 SylvacDial.cxx:248
 SylvacDial.cxx:249
 SylvacDial.cxx:250
 SylvacDial.cxx:251
 SylvacDial.cxx:252
 SylvacDial.cxx:253
 SylvacDial.cxx:254
 SylvacDial.cxx:255
 SylvacDial.cxx:256
 SylvacDial.cxx:257
 SylvacDial.cxx:258
 SylvacDial.cxx:259
 SylvacDial.cxx:260
 SylvacDial.cxx:261
 SylvacDial.cxx:262
 SylvacDial.cxx:263
 SylvacDial.cxx:264
 SylvacDial.cxx:265
 SylvacDial.cxx:266
 SylvacDial.cxx:267
 SylvacDial.cxx:268
 SylvacDial.cxx:269
 SylvacDial.cxx:270
 SylvacDial.cxx:271
 SylvacDial.cxx:272
 SylvacDial.cxx:273
 SylvacDial.cxx:274
 SylvacDial.cxx:275
 SylvacDial.cxx:276
 SylvacDial.cxx:277
 SylvacDial.cxx:278
 SylvacDial.cxx:279
 SylvacDial.cxx:280
 SylvacDial.cxx:281
 SylvacDial.cxx:282
 SylvacDial.cxx:283
 SylvacDial.cxx:284
 SylvacDial.cxx:285
 SylvacDial.cxx:286
 SylvacDial.cxx:287
 SylvacDial.cxx:288
 SylvacDial.cxx:289
 SylvacDial.cxx:290
 SylvacDial.cxx:291
 SylvacDial.cxx:292
 SylvacDial.cxx:293
 SylvacDial.cxx:294
 SylvacDial.cxx:295
 SylvacDial.cxx:296
 SylvacDial.cxx:297
 SylvacDial.cxx:298
 SylvacDial.cxx:299
 SylvacDial.cxx:300
 SylvacDial.cxx:301
 SylvacDial.cxx:302
 SylvacDial.cxx:303
 SylvacDial.cxx:304
 SylvacDial.cxx:305
 SylvacDial.cxx:306
 SylvacDial.cxx:307
 SylvacDial.cxx:308
 SylvacDial.cxx:309
 SylvacDial.cxx:310
 SylvacDial.cxx:311
 SylvacDial.cxx:312
 SylvacDial.cxx:313
 SylvacDial.cxx:314
 SylvacDial.cxx:315
 SylvacDial.cxx:316
 SylvacDial.cxx:317
 SylvacDial.cxx:318
 SylvacDial.cxx:319
 SylvacDial.cxx:320
 SylvacDial.cxx:321
 SylvacDial.cxx:322
 SylvacDial.cxx:323
 SylvacDial.cxx:324
 SylvacDial.cxx:325
 SylvacDial.cxx:326
 SylvacDial.cxx:327
 SylvacDial.cxx:328
 SylvacDial.cxx:329
 SylvacDial.cxx:330
 SylvacDial.cxx:331
 SylvacDial.cxx:332
 SylvacDial.cxx:333
 SylvacDial.cxx:334
 SylvacDial.cxx:335
 SylvacDial.cxx:336
 SylvacDial.cxx:337
 SylvacDial.cxx:338
 SylvacDial.cxx:339
 SylvacDial.cxx:340
 SylvacDial.cxx:341
 SylvacDial.cxx:342
 SylvacDial.cxx:343
 SylvacDial.cxx:344
 SylvacDial.cxx:345
 SylvacDial.cxx:346
 SylvacDial.cxx:347
 SylvacDial.cxx:348
 SylvacDial.cxx:349
 SylvacDial.cxx:350
 SylvacDial.cxx:351
 SylvacDial.cxx:352
 SylvacDial.cxx:353
 SylvacDial.cxx:354
 SylvacDial.cxx:355
 SylvacDial.cxx:356
 SylvacDial.cxx:357
 SylvacDial.cxx:358
 SylvacDial.cxx:359
 SylvacDial.cxx:360
 SylvacDial.cxx:361
 SylvacDial.cxx:362
 SylvacDial.cxx:363
 SylvacDial.cxx:364
 SylvacDial.cxx:365
 SylvacDial.cxx:366
 SylvacDial.cxx:367
 SylvacDial.cxx:368
 SylvacDial.cxx:369
 SylvacDial.cxx:370
 SylvacDial.cxx:371
 SylvacDial.cxx:372
 SylvacDial.cxx:373
 SylvacDial.cxx:374
 SylvacDial.cxx:375
 SylvacDial.cxx:376
 SylvacDial.cxx:377
 SylvacDial.cxx:378
 SylvacDial.cxx:379
 SylvacDial.cxx:380
 SylvacDial.cxx:381
 SylvacDial.cxx:382
 SylvacDial.cxx:383
 SylvacDial.cxx:384
 SylvacDial.cxx:385
 SylvacDial.cxx:386
 SylvacDial.cxx:387
 SylvacDial.cxx:388
 SylvacDial.cxx:389
 SylvacDial.cxx:390
 SylvacDial.cxx:391
 SylvacDial.cxx:392
 SylvacDial.cxx:393
 SylvacDial.cxx:394
 SylvacDial.cxx:395
 SylvacDial.cxx:396
 SylvacDial.cxx:397
 SylvacDial.cxx:398
 SylvacDial.cxx:399
 SylvacDial.cxx:400
 SylvacDial.cxx:401
 SylvacDial.cxx:402
 SylvacDial.cxx:403
 SylvacDial.cxx:404
 SylvacDial.cxx:405
 SylvacDial.cxx:406
 SylvacDial.cxx:407
 SylvacDial.cxx:408
 SylvacDial.cxx:409
 SylvacDial.cxx:410
 SylvacDial.cxx:411
 SylvacDial.cxx:412
 SylvacDial.cxx:413
 SylvacDial.cxx:414
 SylvacDial.cxx:415
 SylvacDial.cxx:416
 SylvacDial.cxx:417
 SylvacDial.cxx:418
 SylvacDial.cxx:419
 SylvacDial.cxx:420
 SylvacDial.cxx:421
 SylvacDial.cxx:422
 SylvacDial.cxx:423
 SylvacDial.cxx:424
 SylvacDial.cxx:425
 SylvacDial.cxx:426
 SylvacDial.cxx:427
 SylvacDial.cxx:428
 SylvacDial.cxx:429
 SylvacDial.cxx:430
 SylvacDial.cxx:431
 SylvacDial.cxx:432
 SylvacDial.cxx:433
 SylvacDial.cxx:434
 SylvacDial.cxx:435
 SylvacDial.cxx:436
 SylvacDial.cxx:437
 SylvacDial.cxx:438
 SylvacDial.cxx:439
 SylvacDial.cxx:440
 SylvacDial.cxx:441
 SylvacDial.cxx:442
 SylvacDial.cxx:443
 SylvacDial.cxx:444
 SylvacDial.cxx:445
 SylvacDial.cxx:446
 SylvacDial.cxx:447
 SylvacDial.cxx:448
 SylvacDial.cxx:449
 SylvacDial.cxx:450
 SylvacDial.cxx:451
 SylvacDial.cxx:452
 SylvacDial.cxx:453
 SylvacDial.cxx:454
 SylvacDial.cxx:455
 SylvacDial.cxx:456
 SylvacDial.cxx:457
 SylvacDial.cxx:458
 SylvacDial.cxx:459
 SylvacDial.cxx:460
 SylvacDial.cxx:461
 SylvacDial.cxx:462
 SylvacDial.cxx:463
 SylvacDial.cxx:464
 SylvacDial.cxx:465
 SylvacDial.cxx:466
 SylvacDial.cxx:467
 SylvacDial.cxx:468
 SylvacDial.cxx:469
 SylvacDial.cxx:470
 SylvacDial.cxx:471
 SylvacDial.cxx:472
 SylvacDial.cxx:473
 SylvacDial.cxx:474
 SylvacDial.cxx:475
 SylvacDial.cxx:476
 SylvacDial.cxx:477
 SylvacDial.cxx:478
 SylvacDial.cxx:479
 SylvacDial.cxx:480
 SylvacDial.cxx:481
 SylvacDial.cxx:482
 SylvacDial.cxx:483
 SylvacDial.cxx:484
 SylvacDial.cxx:485
 SylvacDial.cxx:486
 SylvacDial.cxx:487
 SylvacDial.cxx:488
 SylvacDial.cxx:489
 SylvacDial.cxx:490
 SylvacDial.cxx:491
 SylvacDial.cxx:492
 SylvacDial.cxx:493
 SylvacDial.cxx:494
 SylvacDial.cxx:495
 SylvacDial.cxx:496
 SylvacDial.cxx:497
 SylvacDial.cxx:498
 SylvacDial.cxx:499
 SylvacDial.cxx:500
 SylvacDial.cxx:501
 SylvacDial.cxx:502
 SylvacDial.cxx:503
 SylvacDial.cxx:504
 SylvacDial.cxx:505
 SylvacDial.cxx:506
 SylvacDial.cxx:507
 SylvacDial.cxx:508
 SylvacDial.cxx:509
 SylvacDial.cxx:510
 SylvacDial.cxx:511
 SylvacDial.cxx:512
 SylvacDial.cxx:513
 SylvacDial.cxx:514
 SylvacDial.cxx:515
 SylvacDial.cxx:516
 SylvacDial.cxx:517
 SylvacDial.cxx:518
 SylvacDial.cxx:519
 SylvacDial.cxx:520
 SylvacDial.cxx:521
 SylvacDial.cxx:522
 SylvacDial.cxx:523
 SylvacDial.cxx:524
 SylvacDial.cxx:525
 SylvacDial.cxx:526
 SylvacDial.cxx:527
 SylvacDial.cxx:528
 SylvacDial.cxx:529
 SylvacDial.cxx:530
 SylvacDial.cxx:531
 SylvacDial.cxx:532
 SylvacDial.cxx:533
 SylvacDial.cxx:534
 SylvacDial.cxx:535
 SylvacDial.cxx:536
 SylvacDial.cxx:537
 SylvacDial.cxx:538
 SylvacDial.cxx:539
 SylvacDial.cxx:540
 SylvacDial.cxx:541
 SylvacDial.cxx:542
 SylvacDial.cxx:543
 SylvacDial.cxx:544
 SylvacDial.cxx:545
 SylvacDial.cxx:546
 SylvacDial.cxx:547
 SylvacDial.cxx:548
 SylvacDial.cxx:549
 SylvacDial.cxx:550
 SylvacDial.cxx:551
 SylvacDial.cxx:552
 SylvacDial.cxx:553