The final project of Embedde class.

Committer:
dshin
Date:
Wed May 12 03:11:56 2021 +0000
Revision:
0:6489e982d4c9
Child:
1:c51792ac72d6

        

Who changed what in which revision?

UserRevisionLine numberNew 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 // ======================================================================