diff options
Diffstat (limited to 'kstars/kstars/indi/apogee/ApnSerial_NET.cpp')
-rw-r--r-- | kstars/kstars/indi/apogee/ApnSerial_NET.cpp | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/kstars/kstars/indi/apogee/ApnSerial_NET.cpp b/kstars/kstars/indi/apogee/ApnSerial_NET.cpp new file mode 100644 index 00000000..ded34f47 --- /dev/null +++ b/kstars/kstars/indi/apogee/ApnSerial_NET.cpp @@ -0,0 +1,214 @@ +// 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; +} + |