ClearCore Library
EthernetTcpServer.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020 Teknic, Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20  * SOFTWARE.
21  */
22 
27 #ifndef __ETHERNETTCPSERVER_H__
28 #define __ETHERNETTCPSERVER_H__
29 
30 #include "EthernetTcp.h"
31 #include "EthernetManager.h"
32 #include "EthernetTcpClient.h"
33 
34 namespace ClearCore {
35 
45 class EthernetTcpServer : public EthernetTcp {
46 
47 public:
54  explicit EthernetTcpServer(uint16_t port);
55 
59  void Begin();
60 
72 
85 
99  uint32_t Send(const uint8_t *buff, uint32_t size) override;
100 
111  uint32_t Send(uint8_t charToSend) {
112  return EthernetTcp::Send(charToSend);
113  }
114 
125  uint32_t Send(const char *nullTermStr) {
126  return EthernetTcp::Send(nullTermStr);
127  }
128 
129  using EthernetTcp::LocalPort;
130 
136  bool Ready();
137 
138 private:
139  bool m_initialized;
140 
141  // The server's listening port.
142  uint16_t m_serverPort;
143 
144  // TCP state for connected clients.
145  TcpData *m_tcpDataClient[CLIENT_MAX];
146 
147 }; // EthernetTcpServer
148 
149 } // ClearCore namespace
150 
151 #endif // !__ETHERNETTCPSERVER_H__
uint32_t Send(const char *nullTermStr)
Send data to all clients managed by the server.
Definition: EthernetTcpServer.h:125
EthernetTcpClient Available()
Return a reference to a client that has incoming data.
uint32_t Send(uint8_t charToSend)
Send data to all clients managed by the server.
Definition: EthernetTcpServer.h:111
void Begin()
Set up the server to begin listening for incoming TCP connections.
uint32_t Send(const uint8_t *buff, uint32_t size) override
Send data to all clients managed by the server.
Namespace to encompass the ClearCore board API.
Definition: AdcManager.h:36
ClearCore TCP client class.
Definition: EthernetTcpClient.h:54
ClearCore TCP server class.
Definition: EthernetTcpServer.h:45
bool Ready()
Is the server ready to accept a client?
EthernetTcpServer(uint16_t port)
Construct a TCP server.
EthernetTcpClient Accept()
Return a client with an active connection.