/*
 * EdgeTechSubsystem.cpp
 *
 *  Created on: Dec 12, 2012
 *      Author: emartin
 */

#include "EdgeTechSubsystem.h"

EdgeTechSubsystem::EdgeTechSubsystem() {
	setId(SUBSYSID_NONE);

	m_bDataActive = false;

	m_lTestMessageCounter = 0;
	m_lDirectPathHoldoff = 0;
	m_lPingEnable = 0;
	m_lPingGain = 0;
	m_lPingRate = 0;
	m_lTriggerMode = 0;
	m_lExternalSoftTriggerDelay = 0;
	m_lMaxSamplesPossible = 0;
	m_lRangeInMillimeters = 0;
	m_lADCGain = 0;
	m_lADCAGC = 0;
	m_lADCRate = 0;
	m_ulTimestampOfLastStatusUpdate = 0;
	m_ulNumPulses = 0;
	m_iDataChannels = 0;
//	this->Reset();
}

EdgeTechSubsystem::~EdgeTechSubsystem() {
}

bool EdgeTechSubsystem::isSSS() {
	if (id == SUBSYSID_SSHF || id == SUBSYSID_SSLF) {
		return true;
	}
	return false;
}

bool EdgeTechSubsystem::isSBS() {
	if (id == SUBSYSID_SB) {
		return true;
	}
	return false;
}

bool EdgeTechSubsystem::isEnabled() {
	return m_bDataActive;
}

void EdgeTechSubsystem::printStatus(FILE * fid) {

	fprintf(fid,"-----------------------------------------\n");
	fprintf(fid,"EdgetechSubsystem Status:\n");
	fprintf(fid,"|\tSUBSYSID:      \t %i\n",this->getId());
	fprintf(fid,"|\tPING_ENABLED:  \t %li\n",this->getLPingEnable());
	fprintf(fid,"|\tPING_GAIN:     \t %li\n",this->getLPingGain());
	fprintf(fid,"|\tPING_RATE:     \t %li\n",this->getLPingRate());
	fprintf(fid,"|\tTRIGGER_MODE:  \t %li\n",this->getLTriggerMode());
	fprintf(fid,"|\tEXT_TRIG_DELAY:\t %li\n",this->getLExternalSoftTriggerDelay());
	fprintf(fid,"|\tMAX_SAMPLES:   \t %li\n",this->getLMaxSamplesPossible());
	fprintf(fid,"|\tRANGE_MM:      \t %li\n",this->getLRangeInMillimeters());
	fprintf(fid,"|\tADC_GAIN:      \t %li\n",this->getLAdcGain());
	fprintf(fid,"|\tADC_AGC:       \t %li\n",this->getLAdcagc());
	fprintf(fid,"|\tADC_RATE:      \t %li\n",this->getLAdcRate());
	fprintf(fid,"|\tTIMESTAMP_LAST:\t %li\n",this->getUlTimestampOfLastStatusUpdate());
	fprintf(fid,"|\tNUM_PULSES:    \t %li\n",this->getUlNumPulses());
	fprintf(fid,"|\tPULSE FILENAME:\t %s\n",this->m_szSelectedPulse);
	this->printPulseList(fid);

	fprintf(fid,"-----------------------------------------\n");



}

void EdgeTechSubsystem::printPulseList(FILE * fid) {
	fprintf(fid,"|\t +LIST:        \t\n");
	for (int i=0; i < (int)this->m_ulNumPulses; i++) {
		fprintf(fid,"|\t               \t %s\n",(char *) &this->m_asPulseFile[i]);
	}



}

void EdgeTechSubsystem::Reset(void) {
	id = SUBSYSID_NONE;

	m_bDataActive = false;

	m_lTestMessageCounter = 0;
	m_lDirectPathHoldoff = 0;
	m_lPingEnable = 0;
	m_lPingGain = 0;
	m_lPingRate = 0;
	m_lTriggerMode = 0;
	m_lExternalSoftTriggerDelay = 0;
	m_lMaxSamplesPossible = 0;
	m_lRangeInMillimeters = 0;
	m_lADCGain = 0;
	m_lADCAGC = 0;
	m_lADCRate = 0;
	m_ulTimestampOfLastStatusUpdate = 0;
	m_ulNumPulses = 0;
}
