Instrument Neutral Distributed Interface INDI 2.2.5
auxiliary/ipx800v4.h
Go to the documentation of this file.
1/*
2 IPX800 Controller
3 Copyright (C) 2025 Jasem Mutlaq
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18*/
19
20#pragma once
21
22#include "defaultdevice.h"
23#include "indiinputinterface.h"
24#include "indioutputinterface.h"
25
26namespace Connection
27{
28class TCP;
29}
30
32{
33 public:
34 IPX800();
35 virtual ~IPX800() = default;
36
37 virtual bool initProperties() override;
38 virtual bool updateProperties() override;
39 virtual bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int n) override;
40 virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override;
41 virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override;
42 virtual bool saveConfigItems(FILE *fp) override;
43
44 protected:
45 const char *getDefaultName() override;
46 void TimerHit() override;
47 bool Handshake();
48
49 // Output Interface
50 virtual bool UpdateDigitalOutputs() override;
51 virtual bool CommandOutput(uint32_t index, OutputState command) override;
52
53 private:
54 bool sendCommand(const char *cmd, char *response);
55 bool UpdateDigitalInputs() override;
56 bool UpdateAnalogInputs() override;
57
58
59 Connection::TCP *tcpConnection { nullptr };
60 int PortFD { -1 };
61
62 INDI::PropertyText ModelVersionTP {1};
63 INDI::PropertyText APIKeyTP {1}; // API key for JSON requests
64
65 static constexpr const uint8_t DIGITAL_INPUTS {8};
66 static constexpr const uint8_t DIGITAL_OUTPUTS {8};
67 static constexpr const uint8_t ANALOG_INPUTS {4};
68};
The TCP class manages connection with devices over the network via TCP/IP. Upon successful connection...
Class to provide extended functionality for devices in addition to the functionality provided by INDI...
virtual bool CommandOutput(uint32_t index, OutputState command) override
Send command to output.
virtual bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int n) override
Process the client newSwitch command.
virtual bool initProperties() override
Initialize properties initial state and value. The child class must implement this function.
virtual bool updateProperties() override
updateProperties is called whenever there is a change in the CONNECTION status of the driver....
virtual bool UpdateDigitalOutputs() override
Update all digital outputs.
virtual ~IPX800()=default
virtual bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n) override
Process the client newNumber command.
virtual bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n) override
Process the client newSwitch command.
const char * getDefaultName() override
virtual bool saveConfigItems(FILE *fp) override
saveConfigItems Save specific properties in the provide config file handler. Child class usually over...
void TimerHit() override
Callback function to be called once SetTimer duration elapses.
ISState
Switch state.
Definition indiapi.h:148
Combines all INDI Connection Plugins. Each INDI connection plugin is responsible of managing communic...
Definition arduino_st4.h:34
uint8_t cmd[4]
Definition pwc-ioctl.h:2