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