Gbox 4.20
Grow box automation and monitoring - <a href='https://sites.google.com/site/growboxguy/'>https://sites.google.com/site/growboxguy/</a>
 
Loading...
Searching...
No Matches
ELClientResponse.cpp
Go to the documentation of this file.
1
4#include "ELClientResponse.h"
5
16 _cmd = packet;
17 _arg_ptr = _cmd->args;
18 _arg_num = 0;
19}
20
31 _cmd = (ELClientPacket *)packet;
32 _arg_ptr = _cmd->args;
33 _arg_num = 0;
34}
35
47int16_t ELClientResponse::popArgPtr(void **data) {
48 if (_arg_num >= _cmd->argc) return -1;
49
50 uint16_t len = *(uint16_t*)_arg_ptr;
51 uint16_t pad = (4-((len+2)&3))&3; // pad to next multiple of 4, including length
52 _arg_ptr += 2;
53 _arg_num++;
54
55 *data = _arg_ptr;
56 _arg_ptr += len + pad;
57 return len;
58}
59
73int16_t ELClientResponse::popArg(void* d, uint16_t maxLen) {
74 if (_arg_num >= _cmd->argc) return -1;
75
76 uint16_t len = *(uint16_t*)_arg_ptr;
77 uint16_t pad = (4-((len+2)&3))&3; // pad to next multiple of 4, including length
78 _arg_ptr += 2;
79 _arg_num++;
80
81 uint8_t *data = (uint8_t *)d;
82 uint16_t l = len > maxLen ? maxLen : len;
83 uint8_t *p = _arg_ptr;
84 while (l--)
85 *data++ = *p++;
86
87 _arg_ptr += len + pad;
88 return len;
89}
90
100void ELClientResponse::popChar(char* buffer) {
101 uint16_t len = *(uint16_t*)_arg_ptr;
102 uint16_t pad = (4-((len+2)&3))&3; // pad to next multiple of 4, including length
103 _arg_ptr += 2;
104 _arg_num++;
105
106 uint8_t i;
107 for (i = 0; i < len; i++) {
108 buffer[i] = (char)*_arg_ptr++;
109 }
110 buffer[i] = '\0';
111
112 _arg_ptr += pad;
113}
114
125 String ret;
126 uint16_t len = *(uint16_t*)_arg_ptr;
127 uint16_t pad = (4-((len+2)&3))&3; // pad to next multiple of 4, including length
128 _arg_ptr += 2;
129 _arg_num++;
130
131 while (len--)
132 ret += (char)*_arg_ptr++;
133
134 _arg_ptr += pad;
135 return ret;
136}
137
147void ELClientResponse::popString(String* data) {
148 uint16_t len = *(uint16_t*)_arg_ptr;
149 uint16_t pad = (4-((len+2)&3))&3; // pad to next multiple of 4, including length
150 _arg_ptr += 2;
151 _arg_num++;
152
153 while (len--)
154 data->concat((char)*_arg_ptr++);
155
156 _arg_ptr += pad;
157}
Definitions for ELClientResponse.
void popChar(char *buffer)
Extract a character from the response packet.
String popString()
Extract a string from the response packet.
int16_t popArg(void *data, uint16_t maxLen)
Extract an argument from the response packet.
ELClientResponse(ELClientPacket *packet)
Constructor for ELClientResponse with ELClientPacket packet.
int16_t popArgPtr(void **data)
Extract pointer to an argument from the response packet.
uint16_t argc
uint8_t args[0]