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.
Dependencies: NetworkSocketAPI WizFi310Interface mbed
Fork of WizFi310_TCP_Echo_Server_Example by
main.cpp@4:a602935de142, 2017-10-02 (annotated)
- Committer:
- maru536
- Date:
- Mon Oct 02 21:49:51 2017 +0000
- Revision:
- 4:a602935de142
- Parent:
- 3:4b4eb90875bd
- Child:
- 5:e313e52adcaf
LED
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" |
| kaizen | 0:50932ef4b276 | 25 | |
| maru536 | 3:4b4eb90875bd | 26 | #define TEST_MODE 0 |
| maru536 | 3:4b4eb90875bd | 27 | #define DEMO_MODE 1 |
| maru536 | 3:4b4eb90875bd | 28 | |
| maru536 | 3:4b4eb90875bd | 29 | #define MODE TEST_MODE |
| maru536 | 3:4b4eb90875bd | 30 | |
| maru536 | 2:8d119e9b8f5a | 31 | WizFi310Interface wifiInterface(D1, D0, D7, D6, D8, NC, 115200); |
| maru536 | 4:a602935de142 | 32 | ShiftRegisterControlClass m_register(PC_10, PC_11, PC_12); |
| kaizen | 0:50932ef4b276 | 33 | |
| kaizen | 0:50932ef4b276 | 34 | int main() |
| kaizen | 0:50932ef4b276 | 35 | { |
| maru536 | 3:4b4eb90875bd | 36 | //Start Goout |
| maru536 | 3:4b4eb90875bd | 37 | Serial pc(USBTX, USBRX); |
| kaizen | 0:50932ef4b276 | 38 | pc.baud(115200); |
| kaizen | 0:50932ef4b276 | 39 | |
| maru536 | 4:a602935de142 | 40 | m_register.BlinkLed() |
| maru536 | 4:a602935de142 | 41 | m_register.TurnOnLed(m_register.kPowerLedByte); |
| maru536 | 4:a602935de142 | 42 | |
| maru536 | 3:4b4eb90875bd | 43 | //Wifi AP Mode Start |
| maru536 | 2:8d119e9b8f5a | 44 | wifiInterface.connectAP(AP_SSID, AP_PASSWORD, AP_SECURITY); |
| kaizen | 0:50932ef4b276 | 45 | |
| maru536 | 3:4b4eb90875bd | 46 | char buf[MAX_BUF_SIZE] = ""; |
| maru536 | 2:8d119e9b8f5a | 47 | char id[MAX_ID_SIZE] = ""; |
| maru536 | 2:8d119e9b8f5a | 48 | char pwd[MAX_PWD_SIZE] = ""; |
| kaizen | 0:50932ef4b276 | 49 | |
| maru536 | 3:4b4eb90875bd | 50 | //Wifi AP Mode Server Start |
| kaizen | 0:50932ef4b276 | 51 | TCPServer srv; |
| kaizen | 0:50932ef4b276 | 52 | TCPSocket clt_sock; |
| kaizen | 0:50932ef4b276 | 53 | |
| maru536 | 3:4b4eb90875bd | 54 | //Wifi AP Mode Server init |
| maru536 | 2:8d119e9b8f5a | 55 | srv.open(&wifiInterface); |
| kaizen | 0:50932ef4b276 | 56 | srv.set_blocking(true); |
| maru536 | 2:8d119e9b8f5a | 57 | srv.bind(8080); |
| kaizen | 0:50932ef4b276 | 58 | srv.listen(); |
| kaizen | 0:50932ef4b276 | 59 | srv.accept(&clt_sock); |
| kaizen | 0:50932ef4b276 | 60 | |
| maru536 | 3:4b4eb90875bd | 61 | //Wifi AP Mode Server recv Wifi config info |
| kaizen | 0:50932ef4b276 | 62 | while (true) |
| kaizen | 0:50932ef4b276 | 63 | { |
| maru536 | 2:8d119e9b8f5a | 64 | int n = clt_sock.recv(buf, MAX_BUF_SIZE); |
| kaizen | 0:50932ef4b276 | 65 | if( n < 0 ) |
| kaizen | 0:50932ef4b276 | 66 | { |
| kaizen | 0:50932ef4b276 | 67 | clt_sock.close(); |
| kaizen | 0:50932ef4b276 | 68 | srv.close(); |
| kaizen | 0:50932ef4b276 | 69 | } |
| kaizen | 0:50932ef4b276 | 70 | if( n > 0 ) |
| kaizen | 0:50932ef4b276 | 71 | { |
| maru536 | 2:8d119e9b8f5a | 72 | buf[n] = '\0'; |
| maru536 | 2:8d119e9b8f5a | 73 | clt_sock.send(buf, n); |
| maru536 | 2:8d119e9b8f5a | 74 | break; |
| kaizen | 0:50932ef4b276 | 75 | } |
| kaizen | 0:50932ef4b276 | 76 | } |
| maru536 | 2:8d119e9b8f5a | 77 | |
| maru536 | 3:4b4eb90875bd | 78 | //Wifi AP Mode Server response Wifi config info |
| maru536 | 2:8d119e9b8f5a | 79 | sendMacResponse(wifiInterface, clt_sock); |
| maru536 | 2:8d119e9b8f5a | 80 | processWiFiJson(buf, pwd, id); |
| maru536 | 2:8d119e9b8f5a | 81 | |
| maru536 | 3:4b4eb90875bd | 82 | //free wifi AP Server |
| maru536 | 2:8d119e9b8f5a | 83 | clt_sock.close(); |
| maru536 | 2:8d119e9b8f5a | 84 | srv.close(); |
| maru536 | 2:8d119e9b8f5a | 85 | |
| maru536 | 3:4b4eb90875bd | 86 | #if MODE == DEMO_MODE |
| maru536 | 3:4b4eb90875bd | 87 | //Decoder Init |
| maru536 | 3:4b4eb90875bd | 88 | VS1053 player(PA_08, PA_07, PA_06, PA_00, PA_05, PA_01, PA_02); // mosi, miso, sck, cs, bsync, dreq, rst |
| maru536 | 3:4b4eb90875bd | 89 | player.hardwareReset(); //Make a reset to the VS1053 board |
| maru536 | 3:4b4eb90875bd | 90 | player.modeSwitch(); //Patch the VS1054 board to play MP3 files (very important!). |
| maru536 | 3:4b4eb90875bd | 91 | #endif |
| maru536 | 3:4b4eb90875bd | 92 | |
| maru536 | 3:4b4eb90875bd | 93 | //Wifi Station(Client) Mode start |
| maru536 | 2:8d119e9b8f5a | 94 | wifiInterface.connect(buf, pwd, STA_SECURITY); |
| maru536 | 4:a602935de142 | 95 | m_register.TurnOnLed(m_register.kWifiLedByte); |
| maru536 | 2:8d119e9b8f5a | 96 | TCPSocket *socket = new TCPSocket(&wifiInterface); |
| maru536 | 2:8d119e9b8f5a | 97 | |
| maru536 | 3:4b4eb90875bd | 98 | #if MODE == DEMO_MODE |
| maru536 | 3:4b4eb90875bd | 99 | //detecting start |
| maru536 | 3:4b4eb90875bd | 100 | detecting(player, socket, buf, id) |
| maru536 | 3:4b4eb90875bd | 101 | #endif |
| maru536 | 3:4b4eb90875bd | 102 | |
| maru536 | 3:4b4eb90875bd | 103 | #if MODE == TEST_MODE |
| maru536 | 3:4b4eb90875bd | 104 | //recv tts text |
| maru536 | 2:8d119e9b8f5a | 105 | recvInfo(socket, buf, id); |
| maru536 | 3:4b4eb90875bd | 106 | //recv tts data and play |
| maru536 | 2:8d119e9b8f5a | 107 | playTTS(socket, buf); |
| maru536 | 3:4b4eb90875bd | 108 | //recv android app push notification |
| maru536 | 2:8d119e9b8f5a | 109 | requestNoti(socket, id, buf); |
| maru536 | 3:4b4eb90875bd | 110 | #endif |
| maru536 | 2:8d119e9b8f5a | 111 | |
| maru536 | 3:4b4eb90875bd | 112 | //free wifi |
| maru536 | 2:8d119e9b8f5a | 113 | socket->close(); |
| maru536 | 2:8d119e9b8f5a | 114 | wifiInterface.disconnect(); |
| maru536 | 3:4b4eb90875bd | 115 | |
| maru536 | 3:4b4eb90875bd | 116 | #if MODE == DEMO_MODE |
| maru536 | 3:4b4eb90875bd | 117 | //free decoder |
| maru536 | 3:4b4eb90875bd | 118 | player.sendCancel(); |
| maru536 | 3:4b4eb90875bd | 119 | player.stop(); |
| maru536 | 3:4b4eb90875bd | 120 | #endif |
| maru536 | 2:8d119e9b8f5a | 121 | |
| maru536 | 2:8d119e9b8f5a | 122 | printf("D\n"); |
| maru536 | 2:8d119e9b8f5a | 123 | delete socket; |
| maru536 | 4:a602935de142 | 124 | |
| maru536 | 4:a602935de142 | 125 | m_register.BlackOutLed(); |
| kaizen | 0:50932ef4b276 | 126 | } |
