/usr/include/libindi/connectionplugins/connectiontcp.h is in libindi-dev 1.7.1-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | /*******************************************************************************
Copyright(c) 2017 Jasem Mutlaq. All rights reserved.
Connection Plugin Interface
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*******************************************************************************/
#pragma once
#include "connectioninterface.h"
#include <stdint.h>
#include <cstdlib>
#include <string>
namespace Connection
{
/**
* @brief The TCP class manages connection with devices over the network via TCP/IP.
* Upon successfull connection, reads & writes from and to the device are performed via the returned file descriptor
* using standard UNIX read/write functions.
*/
class TCP : public Interface
{
public:
enum ConnectionType
{
TYPE_TCP = 0,
TYPE_UDP
};
TCP(INDI::DefaultDevice *dev);
virtual ~TCP() = default;
virtual bool Connect();
virtual bool Disconnect();
virtual void Activated();
virtual void Deactivated();
virtual std::string name() { return "CONNECTION_TCP"; }
virtual std::string label() { return "Ethernet"; }
virtual const char *host() { return AddressT[0].text; }
virtual uint32_t port() { return atoi(AddressT[0].text); }
virtual bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int n);
virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n);
virtual bool saveConfigItems(FILE *fp);
int getPortFD() const { return PortFD; }
void setDefaultHost(const char *addressHost);
void setDefaultPort(uint32_t addressPort);
void setConnectionType(int type);
protected:
// IP Address/Port
ITextVectorProperty AddressTP;
IText AddressT[2] {};
ISwitch TcpUdpS[2];
ISwitchVectorProperty TcpUdpSP;
int sockfd = -1;
const uint8_t SOCKET_TIMEOUT = 5;
int PortFD = -1;
};
}
|