hwang guihoon / Mbed OS poo_dino_game

Dependencies:   C12832 ESP-call

Committer:
guihoon
Date:
Mon Jun 13 00:20:10 2022 +0000
Revision:
2:5b7da2619c44
Parent:
0:bbff1149056a
project;

Who changed what in which revision?

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