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