ESP3D  3.0
Firmware for ESP boards connected to 3D Printer
ESP172.cpp
Go to the documentation of this file.
1 /*
2  ESP122.cpp - ESP3D command class
3 
4  Copyright (c) 2014 Luc Lebosse. All rights reserved.
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Lesser General Public
8  License as published by the Free Software Foundation; either
9  version 2.1 of the License, or (at your option) any later version.
10 
11  This library is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public
17  License along with this library; if not, write to the Free Software
18  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20 #include "../../include/esp3d_config.h"
21 #if defined (CAMERA_DEVICE)
22 #include "../commands.h"
23 #include "../esp3doutput.h"
24 #include "esp_camera.h"
25 #include "../settings_esp3d.h"
26 #include "../../modules/authentication/authentication_service.h"
27 #include "../../modules/camera/camera.h"
28 //Set Camera command value / list all values in JSON/plain
29 //[ESP172]<plain><label=value> pwd=<admin password>
30 bool Commands::ESP172(const char* cmd_params, level_authenticate_type auth_type, ESP3DOutput * output)
31 {
32  bool response = true;
33  String parameter;
34 #ifdef AUTHENTICATION_FEATURE
35  if (auth_type == LEVEL_GUEST) {
36  output->printERROR("Wrong authentication!", 401);
37  return false;
38  }
39 #else
40  (void)auth_type;
41 #endif //AUTHENTICATION_FEATURE
42  if (!esp3d_camera.started()) {
43  output->printERROR("No camera initialized!", 401);
44  return false;
45  }
46  parameter = get_param (cmd_params, "");
47  //get
48  bool plain = hastag (cmd_params, "plain");
49  if ((parameter.length() == 0) || plain) {
50  sensor_t * s = esp_camera_sensor_get();
51  if (s == nullptr) {
52  if (!plain) {
53  output->print ("{\"status\":\"error\"}");
54  } else {
55  output->printERROR("No camera initialized!", 401);
56  }
57  return false;
58  }
59  if (!plain) {
60  output->print ("{\"status\":\"ok\",");
61  }
62  //framesize
63  if (!plain) {
64  output->print ("\"");
65  }
66  output->print ("framesize");
67  if (!plain) {
68  output->print ("\":\"");
69  } else {
70  output->print (" : ");
71  }
72  output->print (s->status.framesize);
73  if (!plain) {
74  output->print ("\",");
75  } else {
76  output->printLN("");
77  }
78  //quality
79  if (!plain) {
80  output->print ("\"");
81  }
82  output->print ("quality");
83  if (!plain) {
84  output->print ("\":\"");
85  } else {
86  output->print (" : ");
87  }
88  output->print (s->status.quality);
89  if (!plain) {
90  output->print ("\",");
91  } else {
92  output->printLN("");
93  }
94  //brightness
95  if (!plain) {
96  output->print ("\"");
97  }
98  output->print ("brightness");
99  if (!plain) {
100  output->print ("\":\"");
101  } else {
102  output->print (" : ");
103  }
104  output->print (s->status.brightness);
105  if (!plain) {
106  output->print ("\",");
107  } else {
108  output->printLN("");
109  }
110  //contrast
111  if (!plain) {
112  output->print ("\"");
113  }
114  output->print ("contrast");
115  if (!plain) {
116  output->print ("\":\"");
117  } else {
118  output->print (" : ");
119  }
120  output->print (s->status.contrast);
121  if (!plain) {
122  output->print ("\",");
123  } else {
124  output->printLN("");
125  }
126  //saturation
127  if (!plain) {
128  output->print ("\"");
129  }
130  output->print ("saturation");
131  if (!plain) {
132  output->print ("\":\"");
133  } else {
134  output->print (" : ");
135  }
136  output->print (s->status.saturation);
137  if (!plain) {
138  output->print ("\",");
139  } else {
140  output->printLN("");
141  }
142  //sharpness
143  if (!plain) {
144  output->print ("\"");
145  }
146  output->print ("sharpness");
147  if (!plain) {
148  output->print ("\":\"");
149  } else {
150  output->print (" : ");
151  }
152  output->print (s->status.sharpness);
153  if (!plain) {
154  output->print ("\",");
155  } else {
156  output->printLN("");
157  }
158  //special_effect
159  if (!plain) {
160  output->print ("\"");
161  }
162  output->print ("special_effect");
163  if (!plain) {
164  output->print ("\":\"");
165  } else {
166  output->print (" : ");
167  }
168  output->print (s->status.special_effect);
169  if (!plain) {
170  output->print ("\",");
171  } else {
172  output->printLN("");
173  }
174  //wb_mode
175  if (!plain) {
176  output->print ("\"");
177  }
178  output->print ("wb_mode");
179  if (!plain) {
180  output->print ("\":\"");
181  } else {
182  output->print (" : ");
183  }
184  output->print (s->status.wb_mode);
185  if (!plain) {
186  output->print ("\",");
187  } else {
188  output->printLN("");
189  }
190  //awb
191  if (!plain) {
192  output->print ("\"");
193  }
194  output->print ("awb");
195  if (!plain) {
196  output->print ("\":\"");
197  } else {
198  output->print (" : ");
199  }
200  output->print (s->status.awb);
201  if (!plain) {
202  output->print ("\",");
203  } else {
204  output->printLN("");
205  }
206  //awb_gain
207  if (!plain) {
208  output->print ("\"");
209  }
210  output->print ("awb_gain");
211  if (!plain) {
212  output->print ("\":\"");
213  } else {
214  output->print (" : ");
215  }
216  output->print (s->status.awb_gain);
217  if (!plain) {
218  output->print ("\",");
219  } else {
220  output->printLN("");
221  }
222  //aec
223  if (!plain) {
224  output->print ("\"");
225  }
226  output->print ("aec");
227  if (!plain) {
228  output->print ("\":\"");
229  } else {
230  output->print (" : ");
231  }
232  output->print (s->status.aec);
233  if (!plain) {
234  output->print ("\",");
235  } else {
236  output->printLN("");
237  }
238  //aec2
239  if (!plain) {
240  output->print ("\"");
241  }
242  output->print ("aec2");
243  if (!plain) {
244  output->print ("\":\"");
245  } else {
246  output->print (" : ");
247  }
248  output->print (s->status.aec2);
249  if (!plain) {
250  output->print ("\",");
251  } else {
252  output->printLN("");
253  }
254  //ae_level
255  if (!plain) {
256  output->print ("\"");
257  }
258  output->print ("ae_level");
259  if (!plain) {
260  output->print ("\":\"");
261  } else {
262  output->print (" : ");
263  }
264  output->print (s->status.ae_level);
265  if (!plain) {
266  output->print ("\",");
267  } else {
268  output->printLN("");
269  }
270  //aec_value
271  if (!plain) {
272  output->print ("\"");
273  }
274  output->print ("aec_value");
275  if (!plain) {
276  output->print ("\":\"");
277  } else {
278  output->print (" : ");
279  }
280  output->print (s->status.aec_value);
281  if (!plain) {
282  output->print ("\",");
283  } else {
284  output->printLN("");
285  }
286  //agc
287  if (!plain) {
288  output->print ("\"");
289  }
290  output->print ("agc");
291  if (!plain) {
292  output->print ("\":\"");
293  } else {
294  output->print (" : ");
295  }
296  output->print (s->status.agc);
297  if (!plain) {
298  output->print ("\",");
299  } else {
300  output->printLN("");
301  }
302  //agc_gain
303  if (!plain) {
304  output->print ("\"");
305  }
306  output->print ("agc_gain");
307  if (!plain) {
308  output->print ("\":\"");
309  } else {
310  output->print (" : ");
311  }
312  output->print (s->status.agc_gain);
313  if (!plain) {
314  output->print ("\",");
315  } else {
316  output->printLN("");
317  }
318  //gainceiling
319  if (!plain) {
320  output->print ("\"");
321  }
322  output->print ("gainceiling");
323  if (!plain) {
324  output->print ("\":\"");
325  } else {
326  output->print (" : ");
327  }
328  output->print (s->status.gainceiling);
329  if (!plain) {
330  output->print ("\",");
331  } else {
332  output->printLN("");
333  }
334  //bpc
335  if (!plain) {
336  output->print ("\"");
337  }
338  output->print ("bpc");
339  if (!plain) {
340  output->print ("\":\"");
341  } else {
342  output->print (" : ");
343  }
344  output->print (s->status.bpc);
345  if (!plain) {
346  output->print ("\",");
347  } else {
348  output->printLN("");
349  }
350  //wpc
351  if (!plain) {
352  output->print ("\"");
353  }
354  output->print ("wpc");
355  if (!plain) {
356  output->print ("\":\"");
357  } else {
358  output->print (" : ");
359  }
360  output->print (s->status.wpc);
361  if (!plain) {
362  output->print ("\",");
363  } else {
364  output->printLN("");
365  }
366  //raw_gma
367  if (!plain) {
368  output->print ("\"");
369  }
370  output->print ("raw_gma");
371  if (!plain) {
372  output->print ("\":\"");
373  } else {
374  output->print (" : ");
375  }
376  output->print (s->status.raw_gma);
377  if (!plain) {
378  output->print ("\",");
379  } else {
380  output->printLN("");
381  }
382  //lenc
383  if (!plain) {
384  output->print ("\"");
385  }
386  output->print ("lenc");
387  if (!plain) {
388  output->print ("\":\"");
389  } else {
390  output->print (" : ");
391  }
392  output->print (s->status.lenc);
393  if (!plain) {
394  output->print ("\",");
395  } else {
396  output->printLN("");
397  }
398  //vflip
399  if (!plain) {
400  output->print ("\"");
401  }
402  output->print ("vflip");
403  if (!plain) {
404  output->print ("\":\"");
405  } else {
406  output->print (" : ");
407  }
408  output->print (s->status.vflip);
409  if (!plain) {
410  output->print ("\",");
411  } else {
412  output->printLN("");
413  }
414  //hmirror
415  if (!plain) {
416  output->print ("\"");
417  }
418  output->print ("hmirror");
419  if (!plain) {
420  output->print ("\":\"");
421  } else {
422  output->print (" : ");
423  }
424  output->print (s->status.hmirror);
425  if (!plain) {
426  output->print ("\",");
427  } else {
428  output->printLN("");
429  }
430  //dcw
431  if (!plain) {
432  output->print ("\"");
433  }
434  output->print ("dcw");
435  if (!plain) {
436  output->print ("\":\"");
437  } else {
438  output->print (" : ");
439  }
440  output->print (s->status.dcw);
441  if (!plain) {
442  output->print ("\",");
443  } else {
444  output->printLN("");
445  }
446  //colorbar
447  if (!plain) {
448  output->print ("\"");
449  }
450  output->print ("colorbar");
451  if (!plain) {
452  output->print ("\":\"");
453  } else {
454  output->print (" : ");
455  }
456  output->print (s->status.colorbar);
457  if (!plain) {
458  output->print ("\"");
459  } else {
460  output->printLN("");
461  }
462 #if CAM_LED_PIN != -1
463  //light
464  if (!plain) {
465  output->print (",\"");
466  }
467  output->print ("light");
468  if (!plain) {
469  output->print ("\":\"");
470  } else {
471  output->print (" : ");
472  }
473  output->print (digitalRead(CAM_LED_PIN)==HIGH?1:0);
474  if (!plain) {
475  output->print ("\"");
476  } else {
477  output->printLN("");
478  }
479 #endif //CAM_LED_PIN
480  if (!plain) {
481  output->print ("}");
482  }
483  } else { //set
484 #ifdef AUTHENTICATION_FEATURE
485  if (auth_type != LEVEL_ADMIN) {
486  output->printERROR("Wrong authentication!", 401);
487  return false;
488  }
489 #endif //AUTHENTICATION_FEATURE
490  String label = get_label (cmd_params, "=");
491  if (label.length()==0) {
492  output->printERROR("Missing command!");
493  return false;
494  }
495  String labels = label+"=";
496  String value = get_param (cmd_params,labels.c_str());
497  if (value.length()==0) {
498  output->printERROR("Invalid value!");
499  return false;
500  }
501  int r = esp3d_camera.command(label.c_str(), value.c_str());
502  if (r == -1) {
503  output->printERROR("Unknow command!");
504  response = false;
505  } else if (r == 1) {
506  output->printERROR("Invalid value!");
507  response = false;
508  } else {
509  output->printMSG ("ok");
510  }
511  }
512  return response;
513 }
514 
515 #endif //CAMERA_DEVICE
Commands::get_param
const char * get_param(const char *cmd_params, const char *label)
Definition: commands.cpp:162
Commands::get_label
const char * get_label(const char *cmd_params, const char *labelseparator, uint8_t startindex=0)
Definition: commands.cpp:117
ESP3DOutput::printLN
size_t printLN(const char *s)
Definition: esp3doutput.cpp:165
Camera::started
bool started()
Definition: camera.h:38
Camera::command
int command(const char *param, const char *value)
LEVEL_GUEST
@ LEVEL_GUEST
Definition: authentication_service.h:26
level_authenticate_type
level_authenticate_type
Definition: authentication_service.h:25
ESP3DOutput::printMSG
size_t printMSG(const char *s, bool withNL=true)
Definition: esp3doutput.cpp:190
Commands::hastag
bool hastag(const char *cmd_params, const char *tag)
Definition: commands.cpp:221
ESP3DOutput::printERROR
size_t printERROR(const char *s, int code_error=200)
Definition: esp3doutput.cpp:247
LEVEL_ADMIN
@ LEVEL_ADMIN
Definition: authentication_service.h:28
esp3d_camera
Camera esp3d_camera
ESP3DOutput
Definition: esp3doutput.h:48
CAM_LED_PIN
#define CAM_LED_PIN
Definition: pins.h:145