-
Notifications
You must be signed in to change notification settings - Fork 0
/
users_http.cpp
97 lines (84 loc) · 2.25 KB
/
users_http.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
#include "users_http.h"
#ifdef SUPPORT_GPIO
Ticker TickGpio;
#endif
#ifdef SUPPORT_RF
#include "RCSwitch.h"
RCSwitch RFmodule;
#define RF_TRANSMIT_PIN 14
#endif
esp_err_t face_detected_action(char* facename){
Serial.println("face_detected_action");
#ifdef SUPPORT_RF
send_name_toRF(facename);
#endif
#ifdef SUPPORT_GPIO
ActivateGpio();
#endif
};
#ifdef SUPPORT_GPIO
void DeactivateGpio(){
Serial.println("DeactivateGpio");
digitalWrite(GPIO_RECOGNIZE,LOW);
};
static esp_err_t ActivateGpio(){
Serial.println("ActivateGpio");
digitalWrite(GPIO_RECOGNIZE,HIGH);
TickGpio.once_ms(3000, DeactivateGpio);
};
#endif
String bin(char c)
{
String res;
byte b;
// for (int i = 8; i > 0; i = i / 2)
// for (int i = 128; i > 0; i = i / 2)
for (int i = 16; i > 0; i = i / 2)
res+= ((c & i)? "1": "0");
return res;
} ;
#define MAX_CHAR_TORF_SEND 4
String bin_string(char* c)
{
String res;
String encode=c;
encode+=" "; //5 spaces
encode=encode.substring(0,MAX_CHAR_TORF_SEND);// will send only first 4 characters (5 bit per char
for (int i = 0 ; i < MAX_CHAR_TORF_SEND; i ++)
res+= bin(encode.charAt(i));
return res;
};
long encode_facename(char* c)
{
long res=0;
String encode=c;
encode.toUpperCase();
encode+=" "; //5 spaces
encode=encode.substring(0,MAX_CHAR_TORF_SEND);// will send only first 4 characters (5 bit per char
for (int i = 0 ; i < MAX_CHAR_TORF_SEND; i ++){
res= res <<5; //5 bit perchar
char current= encode.charAt(i);
current=constrain(current,'A','Z');
res+=(current-'A');
//res+= bin(encode.charAt(i));
}
return res;
} ;
#define RF_PULSE 232
#define RF_PROTOCOL 1
#ifdef SUPPORT_RF
static esp_err_t send_name_toRF(char* facename){
Serial.println("Sending RF");
// Serial.println(facename);
RFmodule.enableTransmit(RF_TRANSMIT_PIN);
RFmodule.setPulseLength(RF_PULSE);
// Optional set protocol (default is 1, will work for most outlets)
RFmodule.setProtocol(RF_PROTOCOL);
long toSend=encode_facename(facename);
//RFmodule.send(bin_string(facename).c_str());
Serial.println(toSend);
RFmodule.send(toSend,MAX_CHAR_TORF_SEND*6);
//delay(100);
RFmodule.disableTransmit();
};
#endif