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