LightHub
4.6.0
Open-source smart home controller firmware
Toggle main menu visibility
Loading...
Searching...
No Matches
templateStr.h
Go to the documentation of this file.
1
#ifndef _TEMPLATE_STREAM_H_
2
#define _TEMPLATE_STREAM_H_
3
4
#include <Stream.h>
5
#include <aJSON.h>
6
#include <
streamlog.h
>
7
//#define KEYLEN 8
8
extern
aJsonObject *
topics
;
9
10
class
templateStream
:
public
Stream
11
{
12
public
:
13
templateStream
(
char
*s,
short
sfx=0) : str(s), pos(0), val(NULL), valpos(0), bucket(0),suffix(sfx) {buffer[0]=
'\0'
; }
14
15
// Stream methods
16
virtual
int
available
() {
return
str[pos]; }
17
virtual
int
read
() {
18
if
(bucket)
19
20
{
int
ch = bucket;
21
bucket=0;
22
return
ch;
23
};
24
25
if
(str[pos]==
'$'
)
26
{
27
if
(str[pos+1]==
'{'
)
28
{
29
unsigned
int
i = 0;
30
while
(str[pos+2+i] && str[pos+2+i]!=
'}'
) i++;
31
if
(i && (str[pos+2+i]==
'}'
))
32
{
33
str[pos+2+i]=
'\0'
;
34
val=
resolveKey
(str+pos+2);
35
valpos=0;
36
str[pos+2+i]=
'}'
;
37
pos+=3+i;
38
}
39
}
40
}
41
42
if
(val)
43
{
44
char
ch = val[valpos];
45
if
(ch)
46
{
47
valpos++;
48
return
ch;
49
}
50
else
val = NULL;
51
52
}
53
54
if
(str)
55
{
56
char
ch = str[pos];
57
if
(ch)
58
{
59
pos++;
60
return
ch;
61
}
62
else
63
{
64
str=NULL;
65
return
0;
66
}
67
68
}
69
else
return
-1;
70
71
}
72
virtual
int
peek
()
73
{
74
int
bucket =
read
();
75
return
bucket;
76
}
77
78
virtual
void
flush
() { };
79
// Print methods
80
virtual
size_t
write
(uint8_t c) {
return
0; };
81
virtual
char
*
resolveKey
(
char
*key)
82
{
83
if
(
topics
&&
topics
->type == aJson_Object)
84
{
85
aJsonObject *valObj = aJson.getObjectItem(
topics
, key);
86
if
(valObj->type == aJson_String)
return
valObj->valuestring;
87
88
}
89
if
(suffix && (suffix<
suffixNum
) && !strcmp(key,
"sfx"
))
90
{
91
//debugSerial<<F("Template: Suffix=")<<suffix<<endl;
92
buffer[0]=
'/'
;
93
strncpy_P(buffer+1,suffix_P[suffix],
sizeof
(buffer)-2);
94
return
buffer;
95
}
96
97
return
NULL;
98
}
99
100
private
:
101
char
*str;
102
unsigned
int
pos;
103
char
*val;
104
unsigned
int
valpos;
105
int
bucket;
106
short
suffix;
107
char
buffer[8];
108
};
109
110
#endif
// _TEMPLATE_STREAM_H_
templateStream::write
virtual size_t write(uint8_t c)
Definition
templateStr.h:80
templateStream::peek
virtual int peek()
Definition
templateStr.h:72
templateStream::available
virtual int available()
Definition
templateStr.h:16
templateStream::flush
virtual void flush()
Definition
templateStr.h:78
templateStream::templateStream
templateStream(char *s, short sfx=0)
Definition
templateStr.h:13
templateStream::read
virtual int read()
Definition
templateStr.h:17
templateStream::resolveKey
virtual char * resolveKey(char *key)
Definition
templateStr.h:81
suffixNum
#define suffixNum
Definition
item.h:81
topics
aJsonObject * topics
Definition
main.cpp:118
streamlog.h
topics
aJsonObject * topics
Definition
main.cpp:118
lighthub
templateStr.h
Generated by
1.18.0