//=========================================================================
// Summary  :
// Filename : MMDeviceInfo.cc
// Author   : paley
// Project  :
// Revision : 1
// Created  : 2001/06/11
// Modified : 2001/06/11
//=========================================================================
// Description :  Uncompressed device info message
//=========================================================================

#include <stdio.h>
#include "MMDeviceInfo.h"

MMDeviceInfo::MMDeviceInfo(const ModemMessage *pMM)
{
	Assert(pMM);
	Assert(pMM->getType()==tGetMessageType());
	const char* pcEnd = pcRead(pMM->getBuffer());
	Assert(pcEnd==pMM->getBuffer()+pMM->getBufferSize());
}

MMDeviceInfo::MMDeviceInfo(const char *name,const char *port,const char *driver,
	const char *interfaceName,short priority,short pid,short powerCircuit,
	short debug,Boolean autoStart)
{
	m_name = name;
	m_port = port;
	m_driver = driver;
	m_interfaceName = interfaceName;
	m_priority = priority;
	m_pid = pid;
	m_powerCircuit = powerCircuit;
	m_debug = debug;
	m_autoStart = autoStart;
}

const char* MMDeviceInfo::pcRead(const char* sourceBuffer)
{
	const char* tmp = 0;
	const char* pcEnd = ::pcReadString(sourceBuffer, &tmp);
	m_name = tmp;
	pcEnd = ::pcReadString(pcEnd, &tmp);
	m_port = tmp;
	pcEnd = ::pcReadString(pcEnd, &tmp);
	m_driver = tmp;
	pcEnd = ::pcReadString(pcEnd, &tmp);
	m_interfaceName = tmp;
	pcEnd = ::pcRead(pcEnd, &m_priority);
	pcEnd = ::pcRead(pcEnd, &m_pid);
	pcEnd = ::pcRead(pcEnd, &m_powerCircuit);
	pcEnd = ::pcRead(pcEnd, &m_debug);
	pcEnd = ::pcRead(pcEnd, &m_autoStart);
	return pcEnd;
}

char* MMDeviceInfo::pcWrite(char* destBuffer) const
{
	char* pcEnd = ::pcWriteString(destBuffer,m_name.c_str());
	pcEnd = ::pcWriteString(pcEnd,m_port.c_str());
	pcEnd = ::pcWriteString(pcEnd,m_driver.c_str());
	pcEnd = ::pcWriteString(pcEnd,m_interfaceName.c_str());
	pcEnd = ::pcWrite(pcEnd,m_priority);
	pcEnd = ::pcWrite(pcEnd,m_pid);
	pcEnd = ::pcWrite(pcEnd,m_powerCircuit);
	pcEnd = ::pcWrite(pcEnd,m_debug);
	pcEnd = ::pcWrite(pcEnd,m_autoStart);
	return pcEnd;
}

void MMDeviceInfo::toString(char* str)
{
	sprintf(str,"MMDeviceInfo: %s\n"
				"\tPort           %s\n"
				"\tDriver         %s\n"
				"\tInterfaceName  %s\n"
				"\tPriority       %d\n"
				"\tPID            %d\n"
				"\tPowerCircuit   %d\n"
				"\tDebug          %d\n"
				"\tAutoStart      %d\n",
		m_name.c_str(), m_port.c_str(), m_driver.c_str(), m_interfaceName.c_str(),
		m_priority, m_pid,m_powerCircuit, m_debug, m_autoStart);
}
