You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdeedu/kstars/kstars/indi/apogee/ApnSerial_NET.cpp

215 lines
3.9 KiB

// ApnSerial_NET.cpp: implementation of the CApnSerial_NET class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "apogee.h"
#include "ApnSerial_NET.h"
#include "ApogeeNet.h"
#include "ApogeeNetErr.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CApnSerial_NET::CApnSerial_NET()
{
m_SerialId = -1;
}
CApnSerial_NET::~CApnSerial_NET()
{
}
bool CApnSerial_NET::InitPort( unsigned long CamIdA,
unsigned short CamIdB,
unsigned short SerialId )
{
char Hostname[25];
BYTE ipAddr[4];
ipAddr[0] = (BYTE)(CamIdA & 0xFF);
ipAddr[1] = (BYTE)((CamIdA >> 8) & 0xFF);
ipAddr[2] = (BYTE)((CamIdA >> 16) & 0xFF);
ipAddr[3] = (BYTE)((CamIdA >> 24) & 0xFF);
sprintf( Hostname, "%u.%u.%u.%u", ipAddr[3], ipAddr[2], ipAddr[1], ipAddr[0] );
if ( m_SerialId != -1 )
{
return false;
}
if ( (SerialId != 0) && (SerialId != 1) )
{
return false;
}
if ( ApnNetStartSockets() != APNET_SUCCESS )
return false;
if ( ApnNetSerialPortOpen( Hostname, CamIdB, SerialId ) != APNET_SUCCESS )
return false;
m_SerialId = SerialId;
return true;
}
bool CApnSerial_NET::ClosePort()
{
if ( m_SerialId == -1 )
return false;
// just close the port and not care whether it was successful. if it was,
// great. if not, we'll still set m_SerialId to -1 so that another call
// can at least be tried to connect to the port.
ApnNetSerialPortClose( m_SerialId );
ApnNetStopSockets();
m_SerialId = -1;
return true;
}
bool CApnSerial_NET::GetBaudRate( unsigned long *BaudRate )
{
*BaudRate = -1;
if ( m_SerialId == -1 )
return false;
/*
unsigned long BaudRateRead;
if ( m_SerialId == -1 )
return false;
if ( ApnNetSerialReadBaudRate(m_SerialId, &BaudRateRead) != APNET_SUCCESS )
return false;
*BaudRate = BaudRateRead;
*/
return true;
}
bool CApnSerial_NET::SetBaudRate( unsigned long BaudRate )
{
if ( m_SerialId == -1 )
return false;
/*
if ( ApnNetSerialWriteBaudRate(m_SerialId, BaudRate) != APNET_SUCCESS )
return false;
*/
return true;
}
bool CApnSerial_NET::GetFlowControl( Apn_SerialFlowControl *FlowControl )
{
*FlowControl = Apn_SerialFlowControl_Unknown;
if ( m_SerialId == -1 )
return false;
/*
bool FlowControlRead;
if ( m_SerialId == -1 )
return false;
if ( ApnNetSerialReadFlowControl(m_SerialId, &FlowControlRead) != APNET_SUCCESS )
return false;
*/
return true;
}
bool CApnSerial_NET::SetFlowControl( Apn_SerialFlowControl FlowControl )
{
if ( m_SerialId == -1 )
return false;
/*
if ( ApnNetSerialWriteFlowControl(m_SerialId, FlowControl) != APNET_SUCCESS )
return false;
*/
return true;
}
bool CApnSerial_NET::GetParity( Apn_SerialParity *Parity )
{
*Parity = Apn_SerialParity_Unknown;
if ( m_SerialId == -1 )
return false;
/*
ApnNetParity ParityRead;
if ( m_SerialId == -1 )
return false;
if ( ApnNetSerialReadParity(m_SerialId, &ParityRead) != APNET_SUCCESS )
return false;
*Parity = (Apn_SerialParity)ParityRead;
*/
return true;
}
bool CApnSerial_NET::SetParity( Apn_SerialParity Parity )
{
if ( m_SerialId == -1 )
return false;
/*
if ( ApnNetSerialWriteParity(m_SerialId, (ApnNetParity)Parity) != APNET_SUCCESS )
return false;
*/
return true;
}
bool CApnSerial_NET::Read( char *ReadBuffer, unsigned short *ReadCount )
{
if ( m_SerialId == -1 )
return false;
if ( ApnNetSerialRead(m_SerialId, ReadBuffer, ReadCount) != APNET_SUCCESS )
{
*ReadCount = 0;
return false;
}
return true;
}
bool CApnSerial_NET::Write( char *WriteBuffer, unsigned short WriteCount )
{
if ( m_SerialId == -1 )
return false;
if ( ApnNetSerialWrite(m_SerialId, WriteBuffer, WriteCount) != APNET_SUCCESS )
return false;
return true;
}