Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@2:5b7da2619c44, 2022-06-13 (annotated)
- Committer:
- guihoon
- Date:
- Mon Jun 13 00:20:10 2022 +0000
- Revision:
- 2:5b7da2619c44
- Parent:
- 0:bbff1149056a
project;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| guihoon | 0:bbff1149056a | 1 | #include "poo.h" |
| guihoon | 0:bbff1149056a | 2 | #include "Dino.h" |
| guihoon | 0:bbff1149056a | 3 | #include "mbed.h" |
| guihoon | 0:bbff1149056a | 4 | #include "ESP-call.h" |
| guihoon | 0:bbff1149056a | 5 | |
| guihoon | 0:bbff1149056a | 6 | Thread set_mode_thread, speaker_tread; |
| guihoon | 0:bbff1149056a | 7 | |
| guihoon | 0:bbff1149056a | 8 | int MODE = 0; |
| guihoon | 0:bbff1149056a | 9 | |
| guihoon | 0:bbff1149056a | 10 | NodeMCU_PGM http_server_LED[] = { |
| guihoon | 0:bbff1149056a | 11 | "", 1, |
| guihoon | 0:bbff1149056a | 12 | "wifi.setmode(wifi.STATION)", 1, |
| guihoon | 0:bbff1149056a | 13 | "station_cfg={}", 1, |
| guihoon | 0:bbff1149056a | 14 | "station_cfg.ssid=\"guihun\"", 1, |
| guihoon | 0:bbff1149056a | 15 | "station_cfg.pwd=\"2330514s\"", 1, |
| guihoon | 0:bbff1149056a | 16 | "station_cfg.save=false", 1, |
| guihoon | 0:bbff1149056a | 17 | "wifi.sta.config(station_cfg)", 1, |
| guihoon | 0:bbff1149056a | 18 | "", 1, |
| guihoon | 0:bbff1149056a | 19 | "wifi.sta.connect()", 80, |
| guihoon | 0:bbff1149056a | 20 | "", 1, |
| guihoon | 0:bbff1149056a | 21 | "print(wifi.sta.status())", 1, |
| guihoon | 0:bbff1149056a | 22 | "print(wifi.sta.getip())", 1, |
| guihoon | 0:bbff1149056a | 23 | "", 1, |
| guihoon | 0:bbff1149056a | 24 | "http_resp = \"HTTP/1.0 200 OK\\r\\nContent-Type: text/html\\r\\n\\r\\n\"", 5, |
| guihoon | 0:bbff1149056a | 25 | "html_main1 = \"<h1>Welcome GUI WOO Workspace!</h1>\"", 1, |
| guihoon | 0:bbff1149056a | 26 | "html_main2 = \"<h1>Select Games\"", 1, |
| guihoon | 0:bbff1149056a | 27 | "", 1, |
| guihoon | 0:bbff1149056a | 28 | "html_sub0 = \"<label><form method='post' action='set_mode_thread'></label>\"", 1, |
| guihoon | 0:bbff1149056a | 29 | "html_sub1 = \"<label><input type='radio' name='MODE' value=1> AvoidPoop</label>\"", 1, |
| guihoon | 0:bbff1149056a | 30 | "html_sub2 = \"<label><input type='radio' name='MODE' value=2> DinoJumping </label>\"", 1, |
| guihoon | 0:bbff1149056a | 31 | "html_sub3 = \"<label><input type='submit' value='START'></label></h1>\"", 1, |
| guihoon | 0:bbff1149056a | 32 | "html_sub4 = \"</form>\"", 1, |
| guihoon | 0:bbff1149056a | 33 | "", 1, |
| guihoon | 0:bbff1149056a | 34 | "srv = net.createServer(net.TCP)", 1, |
| guihoon | 0:bbff1149056a | 35 | "srv:listen(80, function(conn)", 1, |
| guihoon | 0:bbff1149056a | 36 | " conn:on(\"receive\", function(sck, payload)", 1, |
| guihoon | 0:bbff1149056a | 37 | " if string.match(payload, \"MODE=1\")", 1, |
| guihoon | 0:bbff1149056a | 38 | " then print(\"MODE=1\") AvoidPoop=\"checked\" DinoJumping=\"\" end", 1, |
| guihoon | 0:bbff1149056a | 39 | " if string.match(payload, \"MODE=2\")", 1, |
| guihoon | 0:bbff1149056a | 40 | " then print(\"MODE=2\") AvoidPoop=\"\" DinoJumping=\"checked\" end", 1, |
| guihoon | 0:bbff1149056a | 41 | " print(\"~\")", 1, |
| guihoon | 0:bbff1149056a | 42 | " sck:send(http_resp)", 1, |
| guihoon | 0:bbff1149056a | 43 | " sck:send(html_main1)", 1, |
| guihoon | 0:bbff1149056a | 44 | " sck:send(html_main2)", 1, |
| guihoon | 0:bbff1149056a | 45 | " sck:send(html_sub0)", 1, |
| guihoon | 0:bbff1149056a | 46 | " sck:send(html_sub1)", 1, |
| guihoon | 0:bbff1149056a | 47 | " sck:send(html_sub2)", 1, |
| guihoon | 0:bbff1149056a | 48 | " sck:send(html_sub3)", 1, |
| guihoon | 0:bbff1149056a | 49 | " sck:send(html_sub4)", 1, |
| guihoon | 0:bbff1149056a | 50 | " end)", 1, |
| guihoon | 0:bbff1149056a | 51 | " conn:on(\"sent\", function(sck) sck:close() end)", 1, |
| guihoon | 0:bbff1149056a | 52 | "end)", 1, |
| guihoon | 0:bbff1149056a | 53 | NULL, 0, |
| guihoon | 0:bbff1149056a | 54 | }; |
| guihoon | 0:bbff1149056a | 55 | |
| guihoon | 0:bbff1149056a | 56 | |
| guihoon | 0:bbff1149056a | 57 | void run_games() { |
| guihoon | 0:bbff1149056a | 58 | if (MODE == 1){ |
| guihoon | 0:bbff1149056a | 59 | run_poo_thread(); |
| guihoon | 0:bbff1149056a | 60 | MODE = 0; |
| guihoon | 0:bbff1149056a | 61 | } else if (MODE == 2){ |
| guihoon | 0:bbff1149056a | 62 | run_dino_thread(); |
| guihoon | 0:bbff1149056a | 63 | MODE = 0; |
| guihoon | 0:bbff1149056a | 64 | } else |
| guihoon | 0:bbff1149056a | 65 | return; |
| guihoon | 0:bbff1149056a | 66 | } |
| guihoon | 0:bbff1149056a | 67 | |
| guihoon | 0:bbff1149056a | 68 | void set_mode_th(void) { |
| guihoon | 0:bbff1149056a | 69 | while (true) { |
| guihoon | 0:bbff1149056a | 70 | if (strstr(ESP_recv_buffer, "MODE=1")!=NULL) { |
| guihoon | 0:bbff1149056a | 71 | MODE = 1; |
| guihoon | 0:bbff1149056a | 72 | } else if (strstr(ESP_recv_buffer, "MODE=2")!=NULL) { |
| guihoon | 0:bbff1149056a | 73 | MODE = 2; |
| guihoon | 0:bbff1149056a | 74 | } |
| guihoon | 0:bbff1149056a | 75 | run_games(); |
| guihoon | 0:bbff1149056a | 76 | ESP_recv_buffer_index = 0; |
| guihoon | 0:bbff1149056a | 77 | ESP_recv_buffer[0] = '\0'; |
| guihoon | 0:bbff1149056a | 78 | thread_sleep_for(1000); |
| guihoon | 0:bbff1149056a | 79 | } |
| guihoon | 0:bbff1149056a | 80 | } |
| guihoon | 0:bbff1149056a | 81 | Serial pc(USBTX, USBRX, 115200); |
| guihoon | 0:bbff1149056a | 82 | |
| guihoon | 0:bbff1149056a | 83 | int main() |
| guihoon | 0:bbff1149056a | 84 | { |
| guihoon | 0:bbff1149056a | 85 | set_mode_thread.start(set_mode_th); |
| guihoon | 0:bbff1149056a | 86 | speaker_tread.start(mario_bgm); |
| guihoon | 0:bbff1149056a | 87 | // Config baudrate of PC and ESP |
| guihoon | 0:bbff1149056a | 88 | PC.baud(115200); |
| guihoon | 0:bbff1149056a | 89 | ESP.baud(115200); |
| guihoon | 0:bbff1149056a | 90 | |
| guihoon | 0:bbff1149056a | 91 | // Reset ESP |
| guihoon | 0:bbff1149056a | 92 | PC.printf("\r\nReset ESP...\r\n"); |
| guihoon | 0:bbff1149056a | 93 | ESP_reset(); |
| guihoon | 0:bbff1149056a | 94 | |
| guihoon | 0:bbff1149056a | 95 | // Setup ESP noecho mode |
| guihoon | 0:bbff1149056a | 96 | PC.printf("Setup ESP noecho...\r\n"); |
| guihoon | 0:bbff1149056a | 97 | ESP_noecho(); |
| guihoon | 0:bbff1149056a | 98 | |
| guihoon | 0:bbff1149056a | 99 | // Execute a NodeMCU program |
| guihoon | 0:bbff1149056a | 100 | PC.printf("Execute a NodeMCU program...\r\n"); |
| guihoon | 0:bbff1149056a | 101 | ESP_call_multi(http_server_LED); |
| guihoon | 0:bbff1149056a | 102 | |
| guihoon | 0:bbff1149056a | 103 | // Config ESP to PC receive mode |
| guihoon | 0:bbff1149056a | 104 | PC.printf("\r\nESP receive mode...\r\n"); |
| guihoon | 0:bbff1149056a | 105 | // ESP.attach(&ISR_ESP_to_PC, Serial::RxIrq); |
| guihoon | 0:bbff1149056a | 106 | ESP.attach(&ISR_ESP_to_recv_buffer, Serial::RxIrq); |
| guihoon | 0:bbff1149056a | 107 | |
| guihoon | 0:bbff1149056a | 108 | while (true); |
| guihoon | 0:bbff1149056a | 109 | set_mode_thread.terminate(); |
| guihoon | 0:bbff1149056a | 110 | } |
| guihoon | 0:bbff1149056a | 111 |