AP mode
Dependencies: NetworkSocketAPI WizFi310Interface mbed
Fork of WizFi310_TCP_Echo_Server_Example by
main.cpp@8:e26236864101, 2017-10-03 (annotated)
- Committer:
- maru536
- Date:
- Tue Oct 03 05:38:58 2017 +0000
- Revision:
- 8:e26236864101
- Parent:
- 6:f27c1fe6abfd
comp
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kaizen | 0:50932ef4b276 | 1 | /* NetworkSocketAPI Example Program |
kaizen | 0:50932ef4b276 | 2 | * Copyright (c) 2015 ARM Limited |
kaizen | 0:50932ef4b276 | 3 | * |
kaizen | 0:50932ef4b276 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
kaizen | 0:50932ef4b276 | 5 | * you may not use this file except in compliance with the License. |
kaizen | 0:50932ef4b276 | 6 | * You may obtain a copy of the License at |
kaizen | 0:50932ef4b276 | 7 | * |
kaizen | 0:50932ef4b276 | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
kaizen | 0:50932ef4b276 | 9 | * |
kaizen | 0:50932ef4b276 | 10 | * Unless required by applicable law or agreed to in writing, software |
kaizen | 0:50932ef4b276 | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
kaizen | 0:50932ef4b276 | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
kaizen | 0:50932ef4b276 | 13 | * See the License for the specific language governing permissions and |
kaizen | 0:50932ef4b276 | 14 | * limitations under the License. |
kaizen | 0:50932ef4b276 | 15 | */ |
kaizen | 0:50932ef4b276 | 16 | |
maru536 | 2:8d119e9b8f5a | 17 | #include <stdio.h> |
maru536 | 2:8d119e9b8f5a | 18 | #include <stdlib.h> |
kaizen | 0:50932ef4b276 | 19 | #include "mbed.h" |
maru536 | 2:8d119e9b8f5a | 20 | #include "detect.h" |
maru536 | 2:8d119e9b8f5a | 21 | #include "info.h" |
maru536 | 2:8d119e9b8f5a | 22 | #include "tts.h" |
maru536 | 2:8d119e9b8f5a | 23 | #include "push.h" |
maru536 | 2:8d119e9b8f5a | 24 | #include "setting.h" |
maru536 | 5:e313e52adcaf | 25 | #include "ShiftRegisterControlClass.h" |
kaizen | 0:50932ef4b276 | 26 | |
maru536 | 3:4b4eb90875bd | 27 | #define TEST_MODE 0 |
maru536 | 3:4b4eb90875bd | 28 | #define DEMO_MODE 1 |
maru536 | 3:4b4eb90875bd | 29 | |
maru536 | 8:e26236864101 | 30 | #define MODE TEST_MODE |
maru536 | 3:4b4eb90875bd | 31 | |
maru536 | 2:8d119e9b8f5a | 32 | WizFi310Interface wifiInterface(D1, D0, D7, D6, D8, NC, 115200); |
maru536 | 4:a602935de142 | 33 | ShiftRegisterControlClass m_register(PC_10, PC_11, PC_12); |
maru536 | 8:e26236864101 | 34 | VS1053 *player = new VS1053(PA_08, PA_07, PA_06, PA_00, PA_05, PA_01, PA_02); // mosi, miso, sck, cs, bsync, dreq, rst |
kaizen | 0:50932ef4b276 | 35 | |
kaizen | 0:50932ef4b276 | 36 | int main() |
kaizen | 0:50932ef4b276 | 37 | { |
maru536 | 3:4b4eb90875bd | 38 | //Start Goout |
maru536 | 3:4b4eb90875bd | 39 | Serial pc(USBTX, USBRX); |
kaizen | 0:50932ef4b276 | 40 | pc.baud(115200); |
kaizen | 0:50932ef4b276 | 41 | |
maru536 | 5:e313e52adcaf | 42 | m_register.BlinkLed(); |
maru536 | 4:a602935de142 | 43 | m_register.TurnOnLed(m_register.kPowerLedByte); |
maru536 | 4:a602935de142 | 44 | |
maru536 | 3:4b4eb90875bd | 45 | //Wifi AP Mode Start |
maru536 | 2:8d119e9b8f5a | 46 | wifiInterface.connectAP(AP_SSID, AP_PASSWORD, AP_SECURITY); |
kaizen | 0:50932ef4b276 | 47 | |
maru536 | 3:4b4eb90875bd | 48 | char buf[MAX_BUF_SIZE] = ""; |
maru536 | 2:8d119e9b8f5a | 49 | char id[MAX_ID_SIZE] = ""; |
maru536 | 2:8d119e9b8f5a | 50 | char pwd[MAX_PWD_SIZE] = ""; |
kaizen | 0:50932ef4b276 | 51 | |
maru536 | 3:4b4eb90875bd | 52 | //Wifi AP Mode Server Start |
kaizen | 0:50932ef4b276 | 53 | TCPServer srv; |
kaizen | 0:50932ef4b276 | 54 | TCPSocket clt_sock; |
kaizen | 0:50932ef4b276 | 55 | |
maru536 | 3:4b4eb90875bd | 56 | //Wifi AP Mode Server init |
maru536 | 2:8d119e9b8f5a | 57 | srv.open(&wifiInterface); |
kaizen | 0:50932ef4b276 | 58 | srv.set_blocking(true); |
maru536 | 2:8d119e9b8f5a | 59 | srv.bind(8080); |
kaizen | 0:50932ef4b276 | 60 | srv.listen(); |
kaizen | 0:50932ef4b276 | 61 | srv.accept(&clt_sock); |
kaizen | 0:50932ef4b276 | 62 | |
maru536 | 3:4b4eb90875bd | 63 | //Wifi AP Mode Server recv Wifi config info |
kaizen | 0:50932ef4b276 | 64 | while (true) |
kaizen | 0:50932ef4b276 | 65 | { |
maru536 | 2:8d119e9b8f5a | 66 | int n = clt_sock.recv(buf, MAX_BUF_SIZE); |
kaizen | 0:50932ef4b276 | 67 | if( n < 0 ) |
kaizen | 0:50932ef4b276 | 68 | { |
kaizen | 0:50932ef4b276 | 69 | clt_sock.close(); |
kaizen | 0:50932ef4b276 | 70 | srv.close(); |
kaizen | 0:50932ef4b276 | 71 | } |
kaizen | 0:50932ef4b276 | 72 | if( n > 0 ) |
kaizen | 0:50932ef4b276 | 73 | { |
maru536 | 2:8d119e9b8f5a | 74 | buf[n] = '\0'; |
maru536 | 2:8d119e9b8f5a | 75 | clt_sock.send(buf, n); |
maru536 | 2:8d119e9b8f5a | 76 | break; |
kaizen | 0:50932ef4b276 | 77 | } |
kaizen | 0:50932ef4b276 | 78 | } |
maru536 | 2:8d119e9b8f5a | 79 | |
maru536 | 3:4b4eb90875bd | 80 | //Wifi AP Mode Server response Wifi config info |
maru536 | 2:8d119e9b8f5a | 81 | sendMacResponse(wifiInterface, clt_sock); |
maru536 | 2:8d119e9b8f5a | 82 | processWiFiJson(buf, pwd, id); |
maru536 | 2:8d119e9b8f5a | 83 | |
maru536 | 3:4b4eb90875bd | 84 | //free wifi AP Server |
maru536 | 2:8d119e9b8f5a | 85 | clt_sock.close(); |
maru536 | 2:8d119e9b8f5a | 86 | srv.close(); |
maru536 | 2:8d119e9b8f5a | 87 | |
maru536 | 3:4b4eb90875bd | 88 | #if MODE == DEMO_MODE |
maru536 | 3:4b4eb90875bd | 89 | //Decoder Init |
maru536 | 8:e26236864101 | 90 | //VS1053 *player = new VS1053(PA_08, PA_07, PA_06, PA_00, PA_05, PA_01, PA_02); // mosi, miso, sck, cs, bsync, dreq, rst |
maru536 | 6:f27c1fe6abfd | 91 | player->hardwareReset(); //Make a reset to the VS1053 board |
maru536 | 6:f27c1fe6abfd | 92 | player->modeSwitch(); //Patch the VS1054 board to play MP3 files (very important!). |
maru536 | 3:4b4eb90875bd | 93 | #endif |
maru536 | 3:4b4eb90875bd | 94 | |
maru536 | 3:4b4eb90875bd | 95 | //Wifi Station(Client) Mode start |
maru536 | 2:8d119e9b8f5a | 96 | wifiInterface.connect(buf, pwd, STA_SECURITY); |
maru536 | 4:a602935de142 | 97 | m_register.TurnOnLed(m_register.kWifiLedByte); |
maru536 | 2:8d119e9b8f5a | 98 | TCPSocket *socket = new TCPSocket(&wifiInterface); |
maru536 | 2:8d119e9b8f5a | 99 | |
maru536 | 3:4b4eb90875bd | 100 | #if MODE == DEMO_MODE |
maru536 | 3:4b4eb90875bd | 101 | //detecting start |
maru536 | 6:f27c1fe6abfd | 102 | detecting(player, socket, buf, id, m_register); |
maru536 | 3:4b4eb90875bd | 103 | #endif |
maru536 | 3:4b4eb90875bd | 104 | |
maru536 | 3:4b4eb90875bd | 105 | #if MODE == TEST_MODE |
maru536 | 3:4b4eb90875bd | 106 | //recv tts text |
maru536 | 5:e313e52adcaf | 107 | recvInfo(socket, buf, id, m_register); |
maru536 | 3:4b4eb90875bd | 108 | //recv tts data and play |
maru536 | 2:8d119e9b8f5a | 109 | playTTS(socket, buf); |
maru536 | 3:4b4eb90875bd | 110 | //recv android app push notification |
maru536 | 2:8d119e9b8f5a | 111 | requestNoti(socket, id, buf); |
maru536 | 3:4b4eb90875bd | 112 | #endif |
maru536 | 2:8d119e9b8f5a | 113 | |
maru536 | 3:4b4eb90875bd | 114 | //free wifi |
maru536 | 2:8d119e9b8f5a | 115 | socket->close(); |
maru536 | 2:8d119e9b8f5a | 116 | wifiInterface.disconnect(); |
maru536 | 3:4b4eb90875bd | 117 | |
maru536 | 3:4b4eb90875bd | 118 | #if MODE == DEMO_MODE |
maru536 | 3:4b4eb90875bd | 119 | //free decoder |
maru536 | 6:f27c1fe6abfd | 120 | player->sendCancel(); |
maru536 | 6:f27c1fe6abfd | 121 | player->stop(); |
maru536 | 3:4b4eb90875bd | 122 | #endif |
maru536 | 2:8d119e9b8f5a | 123 | |
maru536 | 2:8d119e9b8f5a | 124 | printf("D\n"); |
maru536 | 2:8d119e9b8f5a | 125 | delete socket; |
maru536 | 4:a602935de142 | 126 | |
maru536 | 4:a602935de142 | 127 | m_register.BlackOutLed(); |
kaizen | 0:50932ef4b276 | 128 | } |