supla-device
Loading...
Searching...
No Matches
client.h
1// SPDX-FileCopyrightText: AC SOFTWARE SP. Z O.O.
2// SPDX-License-Identifier: GPL-2.0-or-later
3
4#ifndef SRC_SUPLA_NETWORK_CLIENT_H_
5#define SRC_SUPLA_NETWORK_CLIENT_H_
6
7#include <stddef.h>
8#include <stdint.h>
9
10#include "connection_error.h"
11#include "ip_address.h"
12
14
15namespace Supla {
16
17#ifndef ARDUINO
18#ifdef F
19#undef F
20#endif
21#define F(argument_F) (argument_F)
22#endif
23
24class Client {
25 public:
26 Client();
27 virtual ~Client();
28
29 virtual int available() = 0;
30 virtual void stop() = 0;
31 virtual uint8_t connected() = 0;
32 virtual void setTimeoutMs(uint16_t timeoutMs) = 0;
33 virtual ConnectionError getConnectionError() const;
34
35 int connect(IPAddress ip, uint16_t port);
36 int connect(const char *host, uint16_t port);
37 size_t write(uint8_t);
38 size_t write(const uint8_t *buf, size_t size);
39 size_t write(const void *buf, size_t size = 0);
40
41 size_t print(const char *);
42 size_t println(const char *);
43#ifdef ARDUINO
44 size_t print(const ::__FlashStringHelper *);
45 size_t println(const ::__FlashStringHelper *);
46#endif
47 size_t println();
48
49 int read();
50 int read(uint8_t *buf, size_t size);
51 int read(char *buf, size_t size);
52
53 // SSL configuration
54 virtual void setSSLEnabled(bool enabled);
55 void setCACert(const char *rootCA);
56
57 void setDebugLogs(bool);
58 bool isDebugLogs() const;
59 void setSdc(SuplaDeviceClass *sdc);
60
61 uint32_t getSrcConnectionIPAddress() const;
62
63 protected:
64 virtual bool isCertificateValidationEnabled() const;
65 virtual int connectImp(const char *host, uint16_t port) = 0;
66 virtual size_t writeImp(const uint8_t *buf, size_t size) = 0;
67 virtual int readImp(uint8_t *buf, size_t size) = 0;
68
69 bool sslEnabled = false;
70 bool debugLogs = false;
71 const char *rootCACert = nullptr;
72 unsigned int rootCACertSize = 0;
73 SuplaDeviceClass *sdc = nullptr;
74 uint32_t srcIp = 0;
75};
76
77extern Client *ClientBuilder();
78}; // namespace Supla
79
80#endif // SRC_SUPLA_NETWORK_CLIENT_H_
Definition ip_address.h:15
Definition SuplaDevice.h:167
Definition client.h:24