
2018-12-21 3
Dependencies: DataStorage NetworkManager IR_Manager WheelManager RestAPI_Manager
main3.md@2:7581451de520, 2018-12-21 (annotated)
- Committer:
- asaewing
- Date:
- Fri Dec 21 14:19:47 2018 +0000
- Revision:
- 2:7581451de520
- Parent:
- 1:dc6fd86fb7f9
2018-12-21 3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
asaewing | 1:dc6fd86fb7f9 | 1 | #if !FEATURE_LWIP |
asaewing | 1:dc6fd86fb7f9 | 2 | #error [NOT_SUPPORTED] LWIP not supported for this target |
asaewing | 1:dc6fd86fb7f9 | 3 | #endif |
asaewing | 1:dc6fd86fb7f9 | 4 | |
asaewing | 1:dc6fd86fb7f9 | 5 | #include "module_for_all.h" |
asaewing | 1:dc6fd86fb7f9 | 6 | |
asaewing | 1:dc6fd86fb7f9 | 7 | #define PORT 8080 |
asaewing | 1:dc6fd86fb7f9 | 8 | |
asaewing | 1:dc6fd86fb7f9 | 9 | #define IP1 "192.168.20.101" |
asaewing | 1:dc6fd86fb7f9 | 10 | #define IP2 "192.168.20.102" |
asaewing | 1:dc6fd86fb7f9 | 11 | #define IP3 "192.168.20.103" |
asaewing | 1:dc6fd86fb7f9 | 12 | #define IP4 "192.168.20.104" |
asaewing | 1:dc6fd86fb7f9 | 13 | #define GATEWAY "192.168.20.1" |
asaewing | 1:dc6fd86fb7f9 | 14 | #define MASK "255.255.255.0" |
asaewing | 1:dc6fd86fb7f9 | 15 | |
asaewing | 1:dc6fd86fb7f9 | 16 | const char* ip = 0; |
asaewing | 1:dc6fd86fb7f9 | 17 | const char* mac = 0; |
asaewing | 1:dc6fd86fb7f9 | 18 | Thread threadMain00; |
asaewing | 1:dc6fd86fb7f9 | 19 | DataStorage ds_manager(""); |
asaewing | 1:dc6fd86fb7f9 | 20 | |
asaewing | 1:dc6fd86fb7f9 | 21 | //DigitalIn IP_Select2(PG_2); |
asaewing | 1:dc6fd86fb7f9 | 22 | |
asaewing | 1:dc6fd86fb7f9 | 23 | //DigitalIn Test_Mode(PC_14); |
asaewing | 1:dc6fd86fb7f9 | 24 | |
asaewing | 1:dc6fd86fb7f9 | 25 | NetworkManager net_manager(IP1, GATEWAY, MASK, PORT); |
asaewing | 1:dc6fd86fb7f9 | 26 | RestAPI_Manager restAPI_manager(&ds_manager, &threadMain00, IP1, "1"); |
asaewing | 1:dc6fd86fb7f9 | 27 | |
asaewing | 1:dc6fd86fb7f9 | 28 | //NetworkManager net_manager(); |
asaewing | 1:dc6fd86fb7f9 | 29 | //RestAPI_Manager restAPI_manager(); |
asaewing | 1:dc6fd86fb7f9 | 30 | |
asaewing | 1:dc6fd86fb7f9 | 31 | bool EventLoop() { |
asaewing | 1:dc6fd86fb7f9 | 32 | while (true) { |
asaewing | 1:dc6fd86fb7f9 | 33 | printf("$$ EventLoop New\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 34 | |
asaewing | 1:dc6fd86fb7f9 | 35 | Thread threadMain01; |
asaewing | 1:dc6fd86fb7f9 | 36 | restAPI_manager.changeThread(&threadMain01); |
asaewing | 1:dc6fd86fb7f9 | 37 | |
asaewing | 1:dc6fd86fb7f9 | 38 | printf("$$ EventLoop Change Thread\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 39 | |
asaewing | 1:dc6fd86fb7f9 | 40 | LED_NetWait(); |
asaewing | 1:dc6fd86fb7f9 | 41 | |
asaewing | 1:dc6fd86fb7f9 | 42 | printf("$$ EventLoop Waiting\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 43 | |
asaewing | 1:dc6fd86fb7f9 | 44 | net_manager.AcceptEvent(); |
asaewing | 1:dc6fd86fb7f9 | 45 | //printf("$$ EventLoop run Response\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 46 | LED_NetProcess(); |
asaewing | 1:dc6fd86fb7f9 | 47 | |
asaewing | 1:dc6fd86fb7f9 | 48 | std::string http_method = net_manager.getHttpMethod(); |
asaewing | 1:dc6fd86fb7f9 | 49 | std::string api_command = net_manager.getApiCommand(); |
asaewing | 1:dc6fd86fb7f9 | 50 | |
asaewing | 1:dc6fd86fb7f9 | 51 | std::string response = restAPI_manager.runCommand(http_method, api_command); |
asaewing | 1:dc6fd86fb7f9 | 52 | |
asaewing | 1:dc6fd86fb7f9 | 53 | net_manager.SendResponseEvent(response); |
asaewing | 1:dc6fd86fb7f9 | 54 | printf("$$ EventLoop Finish\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 55 | } |
asaewing | 1:dc6fd86fb7f9 | 56 | |
asaewing | 1:dc6fd86fb7f9 | 57 | //printf("$$ EventLoop ALL Finish\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 58 | return false; |
asaewing | 1:dc6fd86fb7f9 | 59 | } |
asaewing | 1:dc6fd86fb7f9 | 60 | |
asaewing | 1:dc6fd86fb7f9 | 61 | /* Main function */ |
asaewing | 1:dc6fd86fb7f9 | 62 | int main(){ |
asaewing | 1:dc6fd86fb7f9 | 63 | |
asaewing | 1:dc6fd86fb7f9 | 64 | DigitalIn IP_Select1(PD_7); |
asaewing | 1:dc6fd86fb7f9 | 65 | DigitalIn IP_Select2(PD_6); |
asaewing | 1:dc6fd86fb7f9 | 66 | |
asaewing | 1:dc6fd86fb7f9 | 67 | //DigitalIn IP_Select21(PC_15); |
asaewing | 1:dc6fd86fb7f9 | 68 | //DigitalIn IP_Select22(PH_1); |
asaewing | 1:dc6fd86fb7f9 | 69 | |
asaewing | 1:dc6fd86fb7f9 | 70 | printf("mbed Power Start\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 71 | LED_PowerStart(); |
asaewing | 1:dc6fd86fb7f9 | 72 | |
asaewing | 1:dc6fd86fb7f9 | 73 | /*if (IP_Select2.read() == 1){ |
asaewing | 1:dc6fd86fb7f9 | 74 | net_manager.SetConfig(IP2, GATEWAY, MASK, PORT); |
asaewing | 1:dc6fd86fb7f9 | 75 | restAPI_manager.SetConfig(IP2, "2"); |
asaewing | 1:dc6fd86fb7f9 | 76 | printf("mbed 02 Start\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 77 | |
asaewing | 1:dc6fd86fb7f9 | 78 | } else { |
asaewing | 1:dc6fd86fb7f9 | 79 | net_manager.SetConfig(IP1, GATEWAY, MASK, PORT); |
asaewing | 1:dc6fd86fb7f9 | 80 | restAPI_manager.SetConfig(IP1, "1"); |
asaewing | 1:dc6fd86fb7f9 | 81 | printf("mbed 01 Start\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 82 | }*/ |
asaewing | 1:dc6fd86fb7f9 | 83 | |
asaewing | 1:dc6fd86fb7f9 | 84 | int ipSelect = 1; |
asaewing | 1:dc6fd86fb7f9 | 85 | |
asaewing | 1:dc6fd86fb7f9 | 86 | if (IP_Select1.read() == 1){ |
asaewing | 1:dc6fd86fb7f9 | 87 | ipSelect += 1; |
asaewing | 1:dc6fd86fb7f9 | 88 | } |
asaewing | 1:dc6fd86fb7f9 | 89 | |
asaewing | 1:dc6fd86fb7f9 | 90 | if (IP_Select2.read() == 1){ |
asaewing | 1:dc6fd86fb7f9 | 91 | ipSelect += 2; |
asaewing | 1:dc6fd86fb7f9 | 92 | } |
asaewing | 1:dc6fd86fb7f9 | 93 | |
asaewing | 1:dc6fd86fb7f9 | 94 | char* tmp_IP = 0; |
asaewing | 1:dc6fd86fb7f9 | 95 | |
asaewing | 1:dc6fd86fb7f9 | 96 | switch(ipSelect) { |
asaewing | 1:dc6fd86fb7f9 | 97 | case 1: |
asaewing | 1:dc6fd86fb7f9 | 98 | tmp_IP = IP1; |
asaewing | 1:dc6fd86fb7f9 | 99 | break; |
asaewing | 1:dc6fd86fb7f9 | 100 | case 2: |
asaewing | 1:dc6fd86fb7f9 | 101 | tmp_IP = IP2; |
asaewing | 1:dc6fd86fb7f9 | 102 | break; |
asaewing | 1:dc6fd86fb7f9 | 103 | case 3: |
asaewing | 1:dc6fd86fb7f9 | 104 | tmp_IP = IP3; |
asaewing | 1:dc6fd86fb7f9 | 105 | break; |
asaewing | 1:dc6fd86fb7f9 | 106 | case 4: |
asaewing | 1:dc6fd86fb7f9 | 107 | tmp_IP = IP4; |
asaewing | 1:dc6fd86fb7f9 | 108 | break; |
asaewing | 1:dc6fd86fb7f9 | 109 | } |
asaewing | 1:dc6fd86fb7f9 | 110 | |
asaewing | 1:dc6fd86fb7f9 | 111 | std::string tmp_IP_s = intToString(ipSelect); |
asaewing | 1:dc6fd86fb7f9 | 112 | |
asaewing | 1:dc6fd86fb7f9 | 113 | |
asaewing | 1:dc6fd86fb7f9 | 114 | net_manager.SetConfig(tmp_IP, GATEWAY, MASK, PORT); |
asaewing | 1:dc6fd86fb7f9 | 115 | restAPI_manager.SetConfig(tmp_IP, tmp_IP_s); |
asaewing | 1:dc6fd86fb7f9 | 116 | |
asaewing | 1:dc6fd86fb7f9 | 117 | printf("mbed %d Start\r\n", ipSelect); |
asaewing | 1:dc6fd86fb7f9 | 118 | |
asaewing | 1:dc6fd86fb7f9 | 119 | wait(1); |
asaewing | 1:dc6fd86fb7f9 | 120 | |
asaewing | 1:dc6fd86fb7f9 | 121 | /*int kk = 0; |
asaewing | 1:dc6fd86fb7f9 | 122 | while(1){ |
asaewing | 1:dc6fd86fb7f9 | 123 | if (!net_manager.ServerInit()){ |
asaewing | 1:dc6fd86fb7f9 | 124 | break; |
asaewing | 1:dc6fd86fb7f9 | 125 | } |
asaewing | 1:dc6fd86fb7f9 | 126 | wait(4); |
asaewing | 1:dc6fd86fb7f9 | 127 | kk++; |
asaewing | 1:dc6fd86fb7f9 | 128 | printf("## again %d n\r\n", kk); |
asaewing | 1:dc6fd86fb7f9 | 129 | }*/ |
asaewing | 1:dc6fd86fb7f9 | 130 | |
asaewing | 1:dc6fd86fb7f9 | 131 | net_manager.ServerInit(); |
asaewing | 1:dc6fd86fb7f9 | 132 | printf("ServerInit\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 133 | |
asaewing | 1:dc6fd86fb7f9 | 134 | if (net_manager.OpenServer()) return 0; |
asaewing | 1:dc6fd86fb7f9 | 135 | printf("OpenServer\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 136 | |
asaewing | 1:dc6fd86fb7f9 | 137 | if (net_manager.BindPort()) return 0; |
asaewing | 1:dc6fd86fb7f9 | 138 | printf("BindPort\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 139 | |
asaewing | 1:dc6fd86fb7f9 | 140 | if (net_manager.ListenConnections()) return 0; |
asaewing | 1:dc6fd86fb7f9 | 141 | printf("ListenConnections\r\n"); |
asaewing | 1:dc6fd86fb7f9 | 142 | |
asaewing | 1:dc6fd86fb7f9 | 143 | if (EventLoop()) { |
asaewing | 1:dc6fd86fb7f9 | 144 | return 0; |
asaewing | 1:dc6fd86fb7f9 | 145 | } |
asaewing | 1:dc6fd86fb7f9 | 146 | } |