User | Revision | Line number | New contents of line |
dshin |
0:6489e982d4c9
|
1
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
2
|
|
dshin |
0:6489e982d4c9
|
3
|
#include "mbed.h"
|
dshin |
0:6489e982d4c9
|
4
|
#include "ESP-call.h"
|
dshin |
0:6489e982d4c9
|
5
|
|
dshin |
0:6489e982d4c9
|
6
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
7
|
|
dshin |
0:6489e982d4c9
|
8
|
RawSerial PC(USBTX, USBRX); // PC = (USBTX=TX, USBRX=RX)
|
dshin |
0:6489e982d4c9
|
9
|
RawSerial ESP(D1, D0); // ESP = (D1=TX, D0=RX)
|
dshin |
0:6489e982d4c9
|
10
|
DigitalOut ESP_reset_pin(D2); // ESP_reset_pin = D2
|
dshin |
0:6489e982d4c9
|
11
|
|
dshin |
0:6489e982d4c9
|
12
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
13
|
|
dshin |
0:6489e982d4c9
|
14
|
char ESP_recv_buffer[1028]; // ESP receive buffer
|
dshin |
0:6489e982d4c9
|
15
|
int ESP_recv_buffer_index; // ESP receive buffer index
|
dshin |
0:6489e982d4c9
|
16
|
|
dshin |
0:6489e982d4c9
|
17
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
18
|
// ISR for redirecting PC RX to ESP TX
|
dshin |
0:6489e982d4c9
|
19
|
|
dshin |
0:6489e982d4c9
|
20
|
void ISR_PC_to_ESP()
|
dshin |
0:6489e982d4c9
|
21
|
{
|
dshin |
0:6489e982d4c9
|
22
|
while(PC.readable()) {
|
dshin |
0:6489e982d4c9
|
23
|
ESP.putc(PC.getc());
|
dshin |
0:6489e982d4c9
|
24
|
}
|
dshin |
0:6489e982d4c9
|
25
|
}
|
dshin |
0:6489e982d4c9
|
26
|
|
dshin |
0:6489e982d4c9
|
27
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
28
|
// ISR for redirecting ESP RX to PC TX
|
dshin |
0:6489e982d4c9
|
29
|
|
dshin |
0:6489e982d4c9
|
30
|
void ISR_ESP_to_PC()
|
dshin |
0:6489e982d4c9
|
31
|
{
|
dshin |
0:6489e982d4c9
|
32
|
while(ESP.readable()) {
|
dshin |
0:6489e982d4c9
|
33
|
PC.putc(ESP.getc());
|
dshin |
0:6489e982d4c9
|
34
|
}
|
dshin |
0:6489e982d4c9
|
35
|
}
|
dshin |
0:6489e982d4c9
|
36
|
|
dshin |
0:6489e982d4c9
|
37
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
38
|
// ISR for redirecting ESP RX to ESP_recv_buffer[]
|
dshin |
0:6489e982d4c9
|
39
|
|
dshin |
0:6489e982d4c9
|
40
|
void ISR_ESP_to_recv_buffer()
|
dshin |
0:6489e982d4c9
|
41
|
{
|
dshin |
0:6489e982d4c9
|
42
|
while(ESP.readable()) {
|
dshin |
0:6489e982d4c9
|
43
|
ESP_recv_buffer[ESP_recv_buffer_index++] = ESP.getc();
|
dshin |
0:6489e982d4c9
|
44
|
}
|
dshin |
0:6489e982d4c9
|
45
|
}
|
dshin |
0:6489e982d4c9
|
46
|
|
dshin |
0:6489e982d4c9
|
47
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
48
|
// Reset ESP and wait for 1 second
|
dshin |
0:6489e982d4c9
|
49
|
|
dshin |
0:6489e982d4c9
|
50
|
void ESP_reset(void)
|
dshin |
0:6489e982d4c9
|
51
|
{
|
dshin |
0:6489e982d4c9
|
52
|
ESP_reset_pin = 0;
|
dshin |
0:6489e982d4c9
|
53
|
ESP_reset_pin = 1;
|
dshin |
0:6489e982d4c9
|
54
|
thread_sleep_for(1000);
|
dshin |
0:6489e982d4c9
|
55
|
}
|
dshin |
0:6489e982d4c9
|
56
|
|
dshin |
0:6489e982d4c9
|
57
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
58
|
// Setup ESP echo/noecho mode
|
dshin |
0:6489e982d4c9
|
59
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
60
|
|
dshin |
0:6489e982d4c9
|
61
|
void ESP_echo(void)
|
dshin |
0:6489e982d4c9
|
62
|
{
|
dshin |
0:6489e982d4c9
|
63
|
NodeMCU_PGM uart_setup_echo = {
|
dshin |
0:6489e982d4c9
|
64
|
"uart.setup(0, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1, 1)\r\n", 1,
|
dshin |
0:6489e982d4c9
|
65
|
};
|
dshin |
0:6489e982d4c9
|
66
|
|
dshin |
0:6489e982d4c9
|
67
|
ESP_call_single(uart_setup_echo);
|
dshin |
0:6489e982d4c9
|
68
|
}
|
dshin |
0:6489e982d4c9
|
69
|
|
dshin |
0:6489e982d4c9
|
70
|
void ESP_noecho(void)
|
dshin |
0:6489e982d4c9
|
71
|
{
|
dshin |
0:6489e982d4c9
|
72
|
NodeMCU_PGM uart_setup_noecho = {
|
dshin |
0:6489e982d4c9
|
73
|
"uart.setup(0, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1, 0)\r\n", 1,
|
dshin |
0:6489e982d4c9
|
74
|
};
|
dshin |
0:6489e982d4c9
|
75
|
|
dshin |
0:6489e982d4c9
|
76
|
ESP_call_single(uart_setup_noecho);
|
dshin |
0:6489e982d4c9
|
77
|
}
|
dshin |
0:6489e982d4c9
|
78
|
|
dshin |
0:6489e982d4c9
|
79
|
// ======================================================================
|
dshin |
0:6489e982d4c9
|
80
|
// Send NodeMCU_PGM to ESP and execute
|
dshin |
0:6489e982d4c9
|
81
|
|
dshin |
0:6489e982d4c9
|
82
|
char *ESP_call_single(NodeMCU_PGM pgm)
|
dshin |
0:6489e982d4c9
|
83
|
{
|
dshin |
0:6489e982d4c9
|
84
|
ESP_recv_buffer_index = 0;
|
dshin |
0:6489e982d4c9
|
85
|
ESP.attach(&ISR_ESP_to_recv_buffer, Serial::RxIrq);
|
dshin |
0:6489e982d4c9
|
86
|
ESP.printf("%s\r\n", pgm.code);
|
dshin |
0:6489e982d4c9
|
87
|
thread_sleep_for((pgm.delay) * 100);
|
dshin |
0:6489e982d4c9
|
88
|
ESP.attach(NULL, Serial::RxIrq);
|
dshin |
0:6489e982d4c9
|
89
|
ESP_recv_buffer[ESP_recv_buffer_index] = '\0';
|
dshin |
0:6489e982d4c9
|
90
|
return ESP_recv_buffer;
|
dshin |
0:6489e982d4c9
|
91
|
}
|
dshin |
0:6489e982d4c9
|
92
|
|
dshin |
0:6489e982d4c9
|
93
|
void ESP_call_multi(NodeMCU_PGM pgms[])
|
dshin |
0:6489e982d4c9
|
94
|
{
|
dshin |
0:6489e982d4c9
|
95
|
int i;
|
dshin |
0:6489e982d4c9
|
96
|
char *p;
|
dshin |
0:6489e982d4c9
|
97
|
|
dshin |
0:6489e982d4c9
|
98
|
for(i = 0; pgms[i].code != NULL; i++) {
|
dshin |
0:6489e982d4c9
|
99
|
PC.printf("%s\r\n", pgms[i].code);
|
dshin |
0:6489e982d4c9
|
100
|
p = ESP_call_single(pgms[i]);
|
dshin |
0:6489e982d4c9
|
101
|
PC.printf("%s", p);
|
dshin |
0:6489e982d4c9
|
102
|
}
|
dshin |
0:6489e982d4c9
|
103
|
}
|
dshin |
0:6489e982d4c9
|
104
|
|
dshin |
0:6489e982d4c9
|
105
|
// ======================================================================
|