/
Telemachus.cpp
75 lines (67 loc) · 1.73 KB
/
Telemachus.cpp
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
/**
* Encapsulating talking to Kerbal Space Program vi Telemachus websocket server
*
* Nathan Gray, November 2015
*/
#include "Arduino.h"
#include "Telemachus.h"
char paramBuffer[128];
char commandBuffer[32];
char floatBuffer[6];
String c;
Telemachus::Telemachus() {
client.setTimeout(1000);
}
Telemachus::~Telemachus() {
client.stop();
}
boolean Telemachus::connect(String host) {
char _host[100];
host.toCharArray(_host,100);
return Telemachus::connect(_host);
}
boolean Telemachus::connect(char* host) {
return Telemachus::connect(host, 8085);
}
boolean Telemachus::connect(char* host, int port) {
if(!client.connect(host,port))
{
return false;
}
char path[] = "/datalink";
webSocketClient.path = path;
webSocketClient.host = host;
if(!webSocketClient.handshake(client))
{
client.stop();
return false;
}
return true;
}
boolean Telemachus::connected() {
return client.connected();
}
boolean Telemachus::getData(String& data) {
return webSocketClient.getData(data);
}
void Telemachus::sendData(String& data) {
return webSocketClient.sendData(data);
}
void Telemachus::sendData(const char* data) {
strcpy_P(paramBuffer,data);
return webSocketClient.sendData(paramBuffer);
}
void Telemachus::command(const char* command) {
strcpy_P(commandBuffer,command);
sprintf_P(paramBuffer, _command_msg, commandBuffer);
Telemachus::sendData(paramBuffer);
}
void Telemachus::command(const char* command, float value) {
dtostrf(value,4,3,floatBuffer);
return Telemachus::command(command, floatBuffer);
}
void Telemachus::command(const char* command, char* value) {
strcpy_P(commandBuffer,command);
sprintf_P(paramBuffer, _command_msg_param, commandBuffer, value);
Telemachus::sendData(paramBuffer);
}