-
Notifications
You must be signed in to change notification settings - Fork 1
/
lwgenericclient.cpp
104 lines (84 loc) · 2.38 KB
/
lwgenericclient.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "lwgenericclient.h"
#include "conversion.h"
//#include <string.h>
//#include <stdio.h>
void CMD_Composite(char* &cmd,const char* s,const char* v)
{
//生成传感器数值JSON字串 {"Name":"SD","Value":"33"},
converter.appendChar(cmd,"{\"Name\":\"");
converter.appendChar(cmd, s);
converter.appendChar(cmd,"\",\"Value\":\"");
converter.appendChar(cmd,v);
converter.appendChar(cmd,"\"},");
// TODO (Ardypro#1#): 打算优化这个工具类
//snprintf(cmd,1,)
}
void lwGenericClient::submit()
{
//去掉cmdJSON最后面的逗号
int len;
len=strlen(cmdJSON);
cmdJSON[len-1]=']';
//converter.appendChar(cmdJSON,"]");
//formatCommand();
uploadValue(); //由各子类来实现,提交完数据之后,复位cmdJSON和lastTime.
clearCommand();
lastTime = millis();
};
void lwGenericClient::clearCommand()
{
cmdJSON = (char*) realloc(cmdJSON,2);
strcpy(cmdJSON, "[");
}
void lwGenericClient::appendCommand(const char* cmd)
{
converter.appendChar(cmdJSON, cmd);
Serial.print("Current json:\t");
Serial.println(cmdJSON);
}
void lwGenericClient::append(const char* sensor, bool value)
{
append(sensor, (int)value);
}
void lwGenericClient::append(const char* sensor, int value)
{
// TODO (Ardypro#1#): 可以考虑用snPrintf等来实现,要先测试效率
char* i;
converter.intToStr(value, i);
CMD_Composite(cmdJSON,sensor,i);
converter.FreeAndNil(i);
}
void lwGenericClient::append(const char* sensor, unsigned int value)
{
char* u ;
converter.uintToStr(value,u);
CMD_Composite(cmdJSON,sensor,u);
converter.FreeAndNil(u);
}
void lwGenericClient::append(const char* sensor, long value)
{
char* l;
converter.longToStr(value, l);
CMD_Composite(cmdJSON,sensor,l);
converter.FreeAndNil(l);
}
void lwGenericClient::append(const char* sensor, unsigned long value)
{
char* u;
converter.ulongToStr(value,u);
CMD_Composite(cmdJSON,sensor, u);
converter.FreeAndNil(u);
}
void lwGenericClient::append(const char* sensor, double value,unsigned int digits)
{
//arduino貌似有ftoa方法
char* f;
//f= (char*) malloc(1); //test only
converter.floatToStr(value, digits,f);
CMD_Composite(cmdJSON,sensor,f);
converter.FreeAndNil(f);
}
void lwGenericClient::append(const char* sensor, const char* value)
{
CMD_Composite(cmdJSON,sensor,value);
}