Simple LED control project using CC3100 as Access Point and socket
Fork of cc3100_Test_Demo by
main.cpp@12:1134132a35f1, 2017-05-26 (annotated)
- Committer:
- ArcN00b
- Date:
- Fri May 26 11:29:27 2017 +0000
- Revision:
- 12:1134132a35f1
- Parent:
- 11:43bc5ac03428
- Child:
- 13:0b58d32f9290
Gestione LED completa di messaggi
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dflet | 0:e89ba455dbcf | 1 | /* |
dflet | 0:e89ba455dbcf | 2 | * main.c - sample application to switch to AP mode and ping client |
dflet | 0:e89ba455dbcf | 3 | * |
dflet | 0:e89ba455dbcf | 4 | * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/ |
dflet | 0:e89ba455dbcf | 5 | * |
dflet | 0:e89ba455dbcf | 6 | * |
dflet | 0:e89ba455dbcf | 7 | * Redistribution and use in source and binary forms, with or without |
dflet | 0:e89ba455dbcf | 8 | * modification, are permitted provided that the following conditions |
dflet | 0:e89ba455dbcf | 9 | * are met: |
dflet | 0:e89ba455dbcf | 10 | * |
dflet | 0:e89ba455dbcf | 11 | * Redistributions of source code must retain the above copyright |
dflet | 0:e89ba455dbcf | 12 | * notice, this list of conditions and the following disclaimer. |
dflet | 0:e89ba455dbcf | 13 | * |
dflet | 0:e89ba455dbcf | 14 | * Redistributions in binary form must reproduce the above copyright |
dflet | 0:e89ba455dbcf | 15 | * notice, this list of conditions and the following disclaimer in the |
dflet | 0:e89ba455dbcf | 16 | * documentation and/or other materials provided with the |
dflet | 0:e89ba455dbcf | 17 | * distribution. |
dflet | 0:e89ba455dbcf | 18 | * |
dflet | 0:e89ba455dbcf | 19 | * Neither the name of Texas Instruments Incorporated nor the names of |
dflet | 0:e89ba455dbcf | 20 | * its contributors may be used to endorse or promote products derived |
dflet | 0:e89ba455dbcf | 21 | * from this software without specific prior written permission. |
dflet | 0:e89ba455dbcf | 22 | * |
dflet | 0:e89ba455dbcf | 23 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
dflet | 0:e89ba455dbcf | 24 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
dflet | 0:e89ba455dbcf | 25 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
dflet | 0:e89ba455dbcf | 26 | * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
dflet | 0:e89ba455dbcf | 27 | * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
dflet | 0:e89ba455dbcf | 28 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
dflet | 0:e89ba455dbcf | 29 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
dflet | 0:e89ba455dbcf | 30 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
dflet | 0:e89ba455dbcf | 31 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
dflet | 0:e89ba455dbcf | 32 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
dflet | 0:e89ba455dbcf | 33 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
dflet | 0:e89ba455dbcf | 34 | * |
dflet | 0:e89ba455dbcf | 35 | */ |
dflet | 0:e89ba455dbcf | 36 | |
dflet | 0:e89ba455dbcf | 37 | /* |
dflet | 0:e89ba455dbcf | 38 | * Application Name - Getting started with Wi-Fi Access-Point mode |
ArcN00b | 8:2acb25effa3a | 39 | * Application Overview - This sample application accessPointnstrates how |
dflet | 0:e89ba455dbcf | 40 | * to configure CC3100 in Access-Point mode. Any |
dflet | 0:e89ba455dbcf | 41 | * WLAN station in its range can connect/communicate |
dflet | 0:e89ba455dbcf | 42 | * to/with it as per the standard networking protocols. |
dflet | 0:e89ba455dbcf | 43 | * On a successful connection, the device ping's the |
dflet | 0:e89ba455dbcf | 44 | * connected station. |
dflet | 0:e89ba455dbcf | 45 | * Application Details - http://processors.wiki.ti.com/index.php/CC31xx_Getting_Started_with_WLAN_AP |
dflet | 0:e89ba455dbcf | 46 | * doc\examples\getting_started_with_wlan_ap.pdf |
dflet | 0:e89ba455dbcf | 47 | */ |
dflet | 0:e89ba455dbcf | 48 | |
ArcN00b | 9:30d6c10d4eab | 49 | #include "mbed.h" |
dflet | 0:e89ba455dbcf | 50 | #include "cc3100_simplelink.h" |
dflet | 0:e89ba455dbcf | 51 | #include "cc3100_sl_common.h" |
dflet | 0:e89ba455dbcf | 52 | |
dflet | 0:e89ba455dbcf | 53 | #include "fPtr_func.h" |
dflet | 3:b89198ac2efe | 54 | #include "cc3100.h" |
dflet | 0:e89ba455dbcf | 55 | #include "cc3100_spi.h" |
dflet | 0:e89ba455dbcf | 56 | #include "myBoardInit.h" |
ArcN00b | 9:30d6c10d4eab | 57 | #include <string.h> |
dflet | 0:e89ba455dbcf | 58 | |
dflet | 0:e89ba455dbcf | 59 | using namespace mbed_cc3100; |
dflet | 0:e89ba455dbcf | 60 | |
ArcN00b | 8:2acb25effa3a | 61 | #if (THIS_BOARD == MBED_BOARD_LPC4337) |
ArcN00b | 8:2acb25effa3a | 62 | //cc3100 _cc3100(p9, p10, p8, SPI(p5, p6, p7));//LPC1768 irq, nHib, cs, mosi, miso, sck |
ArcN00b | 8:2acb25effa3a | 63 | cc3100 _cc3100(P2_2, P3_5, P1_5, SPI(P1_4, P1_3, PF_4));//LPC4337 irq, nHib, cs, mosi, miso, sck |
ArcN00b | 9:30d6c10d4eab | 64 | //cc3100_socket _csk(_c3100.; |
ArcN00b | 8:2acb25effa3a | 65 | Serial pc(USBTX, USBRX);//lpc4337 |
ArcN00b | 8:2acb25effa3a | 66 | #elif (THIS_BOARD == MBED_BOARD_LPC1768) |
dflet | 0:e89ba455dbcf | 67 | //cc3100 _cc3100(p9, p10, p8, SPI(p5, p6, p7));//LPC1768 irq, nHib, cs, mosi, miso, sck |
dflet | 0:e89ba455dbcf | 68 | cc3100 _cc3100(p9, p10, p8, SPI(p11, p12, p13));//LPC1768 irq, nHib, cs, mosi, miso, sck |
dflet | 0:e89ba455dbcf | 69 | Serial pc(USBTX, USBRX);//lpc1768 |
dflet | 0:e89ba455dbcf | 70 | #elif (THIS_BOARD == ST_MBED_NUCLEOF411) |
dflet | 0:e89ba455dbcf | 71 | cc3100 _cc3100(PA_9, PC_7, PB_6, SPI(PA_7, PA_6, PA_5));//nucleoF411 irq, nHib, cs, mosi, miso, sck |
dflet | 0:e89ba455dbcf | 72 | Serial pc(SERIAL_TX, SERIAL_RX);//nucleoF411 |
dflet | 0:e89ba455dbcf | 73 | #elif (THIS_BOARD == ST_MBED_NUCLEOF401) |
dflet | 0:e89ba455dbcf | 74 | cc3100 _cc3100(PA_9, PC_7, PB_6, SPI(PA_7, PA_6, PA_5));//nucleoF401 irq, nHib, cs, mosi, miso, sck |
dflet | 0:e89ba455dbcf | 75 | Serial pc(SERIAL_TX, SERIAL_RX);//nucleoF401 |
dflet | 0:e89ba455dbcf | 76 | #elif (THIS_BOARD == EA_MBED_LPC4088) |
dflet | 0:e89ba455dbcf | 77 | cc3100 _cc3100(p9, p10, p8, SPI(p5, p6, p7));//LPC4088 irq, nHib, cs, mosi, miso, sck |
dflet | 0:e89ba455dbcf | 78 | Serial pc(USBTX, USBRX);//EA_lpc4088 |
dflet | 0:e89ba455dbcf | 79 | #elif (THIS_BOARD == ST_MBED_NUCLEOF103) |
dflet | 0:e89ba455dbcf | 80 | cc3100 _cc3100(PA_9, PC_7, PB_6, SPI(PA_7, PA_6, PA_5));//nucleoF103 irq, nHib, cs, mosi, miso, sck |
dflet | 0:e89ba455dbcf | 81 | Serial pc(SERIAL_TX, SERIAL_RX); |
dflet | 7:0687d16b9781 | 82 | #elif (THIS_BOARD == Seeed_Arch_Max) |
dflet | 7:0687d16b9781 | 83 | cc3100 _cc3100(PD_12, PD_13, PD_11, SPI(PB_5, PB_4, PB_3));//Seeed_Arch_Max irq, nHib, cs, mosi, miso, sck |
dflet | 5:d3b320ebd469 | 84 | Serial pc(USBTX, USBRX); |
dflet | 0:e89ba455dbcf | 85 | #else |
dflet | 0:e89ba455dbcf | 86 | #endif |
dflet | 0:e89ba455dbcf | 87 | |
ArcN00b | 9:30d6c10d4eab | 88 | /* Indirizzo IP del server, bisogna usare il formato long esadecimale |
ArcN00b | 9:30d6c10d4eab | 89 | * E.g: 0xc0a8010a == 192.168.1.1 */ |
ArcN00b | 9:30d6c10d4eab | 90 | #define IP_ADDR 0xc0a80101 |
ArcN00b | 9:30d6c10d4eab | 91 | #define PORT_NUM 5000 |
dflet | 0:e89ba455dbcf | 92 | |
ArcN00b | 9:30d6c10d4eab | 93 | #define BUF_SIZE 1400 |
ArcN00b | 9:30d6c10d4eab | 94 | #define NO_OF_PACKETS 1000 |
dflet | 0:e89ba455dbcf | 95 | /* |
dflet | 0:e89ba455dbcf | 96 | * GLOBAL VARIABLES -- Start |
dflet | 0:e89ba455dbcf | 97 | */ |
ArcN00b | 11:43bc5ac03428 | 98 | int32_t accessPoint = 1; |
dflet | 0:e89ba455dbcf | 99 | |
dflet | 0:e89ba455dbcf | 100 | /* |
dflet | 0:e89ba455dbcf | 101 | * GLOBAL VARIABLES -- End |
dflet | 0:e89ba455dbcf | 102 | */ |
dflet | 0:e89ba455dbcf | 103 | |
dflet | 0:e89ba455dbcf | 104 | /* |
dflet | 0:e89ba455dbcf | 105 | * STATIC FUNCTION DEFINITIONS -- Start |
dflet | 0:e89ba455dbcf | 106 | */ |
dflet | 0:e89ba455dbcf | 107 | |
dflet | 0:e89ba455dbcf | 108 | static void displayBanner(); |
dflet | 0:e89ba455dbcf | 109 | /* |
dflet | 0:e89ba455dbcf | 110 | * STATIC FUNCTION DEFINITIONS -- End |
dflet | 0:e89ba455dbcf | 111 | */ |
dflet | 0:e89ba455dbcf | 112 | |
dflet | 0:e89ba455dbcf | 113 | void station_app(void); |
dflet | 0:e89ba455dbcf | 114 | void AP_app(void); |
dflet | 0:e89ba455dbcf | 115 | |
ArcN00b | 9:30d6c10d4eab | 116 | DigitalOut myled1(LED1);//Azzurro |
ArcN00b | 9:30d6c10d4eab | 117 | DigitalOut myled2(LED2);//Giallo |
ArcN00b | 9:30d6c10d4eab | 118 | DigitalOut myled3(LED3);//Viola |
ArcN00b | 9:30d6c10d4eab | 119 | |
ArcN00b | 9:30d6c10d4eab | 120 | void white() { |
ArcN00b | 9:30d6c10d4eab | 121 | myled1 = 0; |
ArcN00b | 9:30d6c10d4eab | 122 | myled2 = 0; |
ArcN00b | 9:30d6c10d4eab | 123 | myled3 = 0; |
ArcN00b | 9:30d6c10d4eab | 124 | } |
ArcN00b | 9:30d6c10d4eab | 125 | |
ArcN00b | 9:30d6c10d4eab | 126 | void ledShow() { |
ArcN00b | 9:30d6c10d4eab | 127 | while(1) { |
ArcN00b | 9:30d6c10d4eab | 128 | myled1 = 1; |
ArcN00b | 9:30d6c10d4eab | 129 | myled2 = 1; |
ArcN00b | 9:30d6c10d4eab | 130 | myled3 = 1; |
ArcN00b | 9:30d6c10d4eab | 131 | wait(5); |
ArcN00b | 9:30d6c10d4eab | 132 | myled1 = 0; |
ArcN00b | 9:30d6c10d4eab | 133 | wait(5); |
ArcN00b | 9:30d6c10d4eab | 134 | myled1 = 1; |
ArcN00b | 9:30d6c10d4eab | 135 | myled2 = 0; |
ArcN00b | 9:30d6c10d4eab | 136 | wait(5); |
ArcN00b | 9:30d6c10d4eab | 137 | myled2 = 1; |
ArcN00b | 9:30d6c10d4eab | 138 | myled3 = 0; |
ArcN00b | 9:30d6c10d4eab | 139 | wait(5); |
ArcN00b | 9:30d6c10d4eab | 140 | myled2 = 0; |
ArcN00b | 9:30d6c10d4eab | 141 | wait(5); |
ArcN00b | 9:30d6c10d4eab | 142 | myled1 = 0; |
ArcN00b | 9:30d6c10d4eab | 143 | myled2 = 1; |
ArcN00b | 9:30d6c10d4eab | 144 | wait(5); |
ArcN00b | 9:30d6c10d4eab | 145 | myled2 = 0; |
ArcN00b | 9:30d6c10d4eab | 146 | myled3 = 1; |
ArcN00b | 9:30d6c10d4eab | 147 | wait(5); |
ArcN00b | 9:30d6c10d4eab | 148 | myled3 = 0; |
ArcN00b | 9:30d6c10d4eab | 149 | wait(5); |
ArcN00b | 9:30d6c10d4eab | 150 | } |
ArcN00b | 9:30d6c10d4eab | 151 | } |
dflet | 0:e89ba455dbcf | 152 | |
dflet | 0:e89ba455dbcf | 153 | int main(void) { |
dflet | 0:e89ba455dbcf | 154 | |
ArcN00b | 9:30d6c10d4eab | 155 | myled1 = 1; |
ArcN00b | 9:30d6c10d4eab | 156 | myled2 = 1; |
ArcN00b | 9:30d6c10d4eab | 157 | myled3 = 1; |
dflet | 0:e89ba455dbcf | 158 | pc.baud(115200); |
dflet | 0:e89ba455dbcf | 159 | |
dflet | 0:e89ba455dbcf | 160 | int32_t retVal = -1; |
dflet | 0:e89ba455dbcf | 161 | |
dflet | 0:e89ba455dbcf | 162 | retVal = _cc3100.initializeAppVariables(); |
dflet | 0:e89ba455dbcf | 163 | ASSERT_ON_ERROR(retVal); |
dflet | 0:e89ba455dbcf | 164 | |
dflet | 0:e89ba455dbcf | 165 | displayBanner(); |
dflet | 0:e89ba455dbcf | 166 | |
dflet | 0:e89ba455dbcf | 167 | _cc3100.CLR_STATUS_BIT(g_Status, STATUS_BIT_PING_DONE); |
dflet | 0:e89ba455dbcf | 168 | g_PingPacketsRecv = 0; |
dflet | 3:b89198ac2efe | 169 | |
dflet | 0:e89ba455dbcf | 170 | /* |
dflet | 0:e89ba455dbcf | 171 | * Following function configures the device to default state by cleaning |
dflet | 0:e89ba455dbcf | 172 | * the persistent settings stored in NVMEM (viz. connection profiles & |
dflet | 0:e89ba455dbcf | 173 | * policies, power policy etc) |
dflet | 0:e89ba455dbcf | 174 | * |
dflet | 0:e89ba455dbcf | 175 | * Applications may choose to skip this step if the developer is sure |
dflet | 0:e89ba455dbcf | 176 | * that the device is in its default state at start of application |
dflet | 0:e89ba455dbcf | 177 | * |
dflet | 0:e89ba455dbcf | 178 | * Note that all profiles and persistent settings that were done on the |
dflet | 0:e89ba455dbcf | 179 | * device will be lost |
dflet | 0:e89ba455dbcf | 180 | */ |
dflet | 0:e89ba455dbcf | 181 | retVal = _cc3100.configureSimpleLinkToDefaultState(); |
dflet | 0:e89ba455dbcf | 182 | |
dflet | 0:e89ba455dbcf | 183 | if(retVal < 0) { |
dflet | 0:e89ba455dbcf | 184 | if (DEVICE_NOT_IN_STATION_MODE == retVal) |
ArcN00b | 8:2acb25effa3a | 185 | printf(" Impossibile completare la configurazione della CC3100 \n\r"); |
dflet | 0:e89ba455dbcf | 186 | |
dflet | 0:e89ba455dbcf | 187 | LOOP_FOREVER(); |
dflet | 0:e89ba455dbcf | 188 | } |
dflet | 0:e89ba455dbcf | 189 | |
ArcN00b | 8:2acb25effa3a | 190 | printf(" CC3100 configurata nel suo stato di default \n\r"); |
dflet | 0:e89ba455dbcf | 191 | |
dflet | 0:e89ba455dbcf | 192 | /* |
dflet | 0:e89ba455dbcf | 193 | * Assumption is that the device is configured in station mode already |
dflet | 0:e89ba455dbcf | 194 | * and it is in its default state |
dflet | 0:e89ba455dbcf | 195 | */ |
dflet | 0:e89ba455dbcf | 196 | /* Initializing the CC3100 device */ |
dflet | 0:e89ba455dbcf | 197 | |
ArcN00b | 8:2acb25effa3a | 198 | if(!accessPoint){ |
dflet | 0:e89ba455dbcf | 199 | retVal = _cc3100.sl_Start(0, 0, 0); |
dflet | 0:e89ba455dbcf | 200 | |
dflet | 0:e89ba455dbcf | 201 | if ((retVal < 0) || (ROLE_STA != retVal) ){ |
ArcN00b | 8:2acb25effa3a | 202 | printf(" Impossibile avviare la CC3100 nella modalita' richiesta \n\r"); |
dflet | 0:e89ba455dbcf | 203 | LOOP_FOREVER(); |
dflet | 0:e89ba455dbcf | 204 | } |
dflet | 0:e89ba455dbcf | 205 | |
ArcN00b | 8:2acb25effa3a | 206 | printf(" CC3100 avviata come scheda di rete \n\r"); |
dflet | 0:e89ba455dbcf | 207 | } |
dflet | 0:e89ba455dbcf | 208 | |
ArcN00b | 8:2acb25effa3a | 209 | if(accessPoint == 0 ){ |
dflet | 0:e89ba455dbcf | 210 | station_app(); |
dflet | 0:e89ba455dbcf | 211 | }else{ |
dflet | 0:e89ba455dbcf | 212 | AP_app(); |
dflet | 0:e89ba455dbcf | 213 | } |
dflet | 0:e89ba455dbcf | 214 | return 0; |
dflet | 0:e89ba455dbcf | 215 | } |
dflet | 0:e89ba455dbcf | 216 | |
dflet | 0:e89ba455dbcf | 217 | /*! |
dflet | 0:e89ba455dbcf | 218 | \brief This function displays the application's banner |
dflet | 0:e89ba455dbcf | 219 | |
dflet | 0:e89ba455dbcf | 220 | \param None |
dflet | 0:e89ba455dbcf | 221 | |
dflet | 0:e89ba455dbcf | 222 | \return None |
dflet | 0:e89ba455dbcf | 223 | */ |
dflet | 0:e89ba455dbcf | 224 | static void displayBanner() |
dflet | 0:e89ba455dbcf | 225 | { |
ArcN00b | 8:2acb25effa3a | 226 | //int choose; |
ArcN00b | 8:2acb25effa3a | 227 | |
ArcN00b | 8:2acb25effa3a | 228 | if(accessPoint){ |
dflet | 0:e89ba455dbcf | 229 | printf("\n\r\n\r"); |
ArcN00b | 8:2acb25effa3a | 230 | printf(" CC3100 in avvio come Access Point "); |
dflet | 0:e89ba455dbcf | 231 | printf("\n\r*******************************************************************************\n\r"); |
ArcN00b | 10:d24deb1afd1b | 232 | //ledShow(); |
ArcN00b | 8:2acb25effa3a | 233 | //scanf("%s", &choose); |
ArcN00b | 8:2acb25effa3a | 234 | //printf("\n\r%d\n\r", choose); |
dflet | 0:e89ba455dbcf | 235 | |
dflet | 0:e89ba455dbcf | 236 | }else{ |
dflet | 0:e89ba455dbcf | 237 | printf("\n\r\n\r"); |
ArcN00b | 8:2acb25effa3a | 238 | printf(" CC3100 in avvio come scheda di rete "); |
dflet | 0:e89ba455dbcf | 239 | printf("\n\r*******************************************************************************\n\r"); |
dflet | 0:e89ba455dbcf | 240 | } |
dflet | 0:e89ba455dbcf | 241 | } |
dflet | 0:e89ba455dbcf | 242 | |
ArcN00b | 9:30d6c10d4eab | 243 | int32_t TcpServer(uint16_t Port) |
ArcN00b | 9:30d6c10d4eab | 244 | { |
ArcN00b | 9:30d6c10d4eab | 245 | SlSockAddrIn_t Addr; |
ArcN00b | 9:30d6c10d4eab | 246 | SlSockAddrIn_t LocalAddr; |
ArcN00b | 9:30d6c10d4eab | 247 | char buf[100], tmp[100]; |
ArcN00b | 9:30d6c10d4eab | 248 | int i, len; |
ArcN00b | 9:30d6c10d4eab | 249 | |
ArcN00b | 9:30d6c10d4eab | 250 | int16_t AddrSize = 0; |
ArcN00b | 9:30d6c10d4eab | 251 | int16_t SockID = 0; |
ArcN00b | 9:30d6c10d4eab | 252 | int32_t Status = 0; |
ArcN00b | 9:30d6c10d4eab | 253 | int16_t newSockID = 0; |
ArcN00b | 9:30d6c10d4eab | 254 | uint16_t LoopCount = 0; |
ArcN00b | 9:30d6c10d4eab | 255 | int16_t recvSize = 0; |
ArcN00b | 9:30d6c10d4eab | 256 | |
ArcN00b | 9:30d6c10d4eab | 257 | LocalAddr.sin_family = SL_AF_INET; |
ArcN00b | 9:30d6c10d4eab | 258 | LocalAddr.sin_port = _cc3100._socket.sl_Htons((int16_t)Port); |
ArcN00b | 9:30d6c10d4eab | 259 | LocalAddr.sin_addr.s_addr = 0; |
ArcN00b | 9:30d6c10d4eab | 260 | |
ArcN00b | 9:30d6c10d4eab | 261 | SockID = _cc3100._socket.sl_Socket(SL_AF_INET,SL_SOCK_STREAM, 0); |
ArcN00b | 9:30d6c10d4eab | 262 | if( SockID < 0 ) |
ArcN00b | 9:30d6c10d4eab | 263 | { |
ArcN00b | 9:30d6c10d4eab | 264 | printf(" Errore durante la creazione del socket \n\r"); |
ArcN00b | 9:30d6c10d4eab | 265 | ASSERT_ON_ERROR(SockID); |
ArcN00b | 9:30d6c10d4eab | 266 | } |
ArcN00b | 9:30d6c10d4eab | 267 | |
ArcN00b | 9:30d6c10d4eab | 268 | AddrSize = sizeof(SlSockAddrIn_t); |
ArcN00b | 9:30d6c10d4eab | 269 | Status = _cc3100._socket.sl_Bind(SockID, (SlSockAddr_t *)&LocalAddr, AddrSize); |
ArcN00b | 9:30d6c10d4eab | 270 | if( Status < 0 ) |
ArcN00b | 9:30d6c10d4eab | 271 | { |
ArcN00b | 9:30d6c10d4eab | 272 | _cc3100._socket.sl_Close(SockID); |
ArcN00b | 9:30d6c10d4eab | 273 | printf(" Errore durante il bind della porta \n\r"); |
ArcN00b | 9:30d6c10d4eab | 274 | ASSERT_ON_ERROR(Status); |
ArcN00b | 9:30d6c10d4eab | 275 | } |
ArcN00b | 9:30d6c10d4eab | 276 | |
ArcN00b | 9:30d6c10d4eab | 277 | Status = _cc3100._socket.sl_Listen(SockID, 0); |
ArcN00b | 9:30d6c10d4eab | 278 | if( Status < 0 ) |
ArcN00b | 9:30d6c10d4eab | 279 | { |
ArcN00b | 9:30d6c10d4eab | 280 | _cc3100._socket.sl_Close(SockID); |
ArcN00b | 9:30d6c10d4eab | 281 | printf(" Errore durante la listen \n\r"); |
ArcN00b | 9:30d6c10d4eab | 282 | ASSERT_ON_ERROR(Status); |
ArcN00b | 9:30d6c10d4eab | 283 | } |
ArcN00b | 9:30d6c10d4eab | 284 | |
ArcN00b | 9:30d6c10d4eab | 285 | printf("Socket in attesa di connessioni \n\r"); |
ArcN00b | 9:30d6c10d4eab | 286 | |
ArcN00b | 9:30d6c10d4eab | 287 | newSockID = _cc3100._socket.sl_Accept(SockID, (SlSockAddr_t *)&Addr, |
ArcN00b | 9:30d6c10d4eab | 288 | (SlSocklen_t*)&AddrSize); |
ArcN00b | 9:30d6c10d4eab | 289 | if( newSockID < 0 ) |
ArcN00b | 9:30d6c10d4eab | 290 | { |
ArcN00b | 9:30d6c10d4eab | 291 | _cc3100._socket.sl_Close(SockID); |
ArcN00b | 9:30d6c10d4eab | 292 | printf(" Errore durante la accept \n\r"); |
ArcN00b | 9:30d6c10d4eab | 293 | ASSERT_ON_ERROR(newSockID); |
ArcN00b | 9:30d6c10d4eab | 294 | } |
ArcN00b | 9:30d6c10d4eab | 295 | |
ArcN00b | 9:30d6c10d4eab | 296 | printf("Connessione accettata\n\r"); |
ArcN00b | 9:30d6c10d4eab | 297 | |
ArcN00b | 9:30d6c10d4eab | 298 | while (LoopCount < NO_OF_PACKETS) |
ArcN00b | 9:30d6c10d4eab | 299 | { |
ArcN00b | 9:30d6c10d4eab | 300 | recvSize = BUF_SIZE; |
ArcN00b | 9:30d6c10d4eab | 301 | do |
ArcN00b | 9:30d6c10d4eab | 302 | { |
ArcN00b | 9:30d6c10d4eab | 303 | Status = _cc3100._socket.sl_Recv(newSockID, &(buf), recvSize, 0); |
ArcN00b | 9:30d6c10d4eab | 304 | if( Status <= 0 ) |
ArcN00b | 9:30d6c10d4eab | 305 | { |
ArcN00b | 9:30d6c10d4eab | 306 | _cc3100._socket.sl_Close(newSockID); |
ArcN00b | 9:30d6c10d4eab | 307 | _cc3100._socket.sl_Close(SockID); |
ArcN00b | 9:30d6c10d4eab | 308 | printf(" Errore in ricezione \n\r"); |
ArcN00b | 9:30d6c10d4eab | 309 | ASSERT_ON_ERROR(TCP_RECV_ERROR); |
ArcN00b | 10:d24deb1afd1b | 310 | } else { |
ArcN00b | 9:30d6c10d4eab | 311 | // Rimuovo i caratteri strani |
ArcN00b | 9:30d6c10d4eab | 312 | for(i = 0; i < strlen(buf); i++) { |
ArcN00b | 9:30d6c10d4eab | 313 | if((buf[i] >= 65 && buf[i] <= 90) || (buf[i] >= 97 && buf[i] <= 122)){ |
ArcN00b | 10:d24deb1afd1b | 314 | //printf("%c ", buf[i]); |
ArcN00b | 9:30d6c10d4eab | 315 | len = i + 1; |
ArcN00b | 9:30d6c10d4eab | 316 | } |
ArcN00b | 9:30d6c10d4eab | 317 | } |
ArcN00b | 9:30d6c10d4eab | 318 | buf[len] = '\0'; |
ArcN00b | 10:d24deb1afd1b | 319 | printf("Ricevuto -> %s \n\r", buf); |
ArcN00b | 9:30d6c10d4eab | 320 | |
ArcN00b | 10:d24deb1afd1b | 321 | //Scelgo il colore da utilizzare |
ArcN00b | 10:d24deb1afd1b | 322 | if(strstr(buf,"Blu") != NULL || strstr(buf,"blu") != NULL) { |
ArcN00b | 9:30d6c10d4eab | 323 | white(); |
ArcN00b | 9:30d6c10d4eab | 324 | myled1 = 1; |
ArcN00b | 9:30d6c10d4eab | 325 | myled3 = 1; |
ArcN00b | 10:d24deb1afd1b | 326 | sprintf(tmp, "Led colorato di Blu \n"); |
ArcN00b | 10:d24deb1afd1b | 327 | _cc3100._socket.sl_Send(newSockID, &(tmp), strlen(tmp),0); |
ArcN00b | 10:d24deb1afd1b | 328 | |
ArcN00b | 10:d24deb1afd1b | 329 | } else if (strstr(buf,"Azzurro") != NULL || strstr(buf,"azzurro") != NULL){ |
ArcN00b | 10:d24deb1afd1b | 330 | white(); |
ArcN00b | 10:d24deb1afd1b | 331 | myled1 = 1; |
ArcN00b | 10:d24deb1afd1b | 332 | sprintf(tmp, "Led colorato di Azzurro \n"); |
ArcN00b | 10:d24deb1afd1b | 333 | _cc3100._socket.sl_Send(newSockID, &(tmp), strlen(tmp),0); |
ArcN00b | 10:d24deb1afd1b | 334 | |
ArcN00b | 10:d24deb1afd1b | 335 | } else if (strstr(buf,"Rosso") != NULL || strstr(buf,"rosso") != NULL){ |
ArcN00b | 10:d24deb1afd1b | 336 | white(); |
ArcN00b | 10:d24deb1afd1b | 337 | myled2 = 1; |
ArcN00b | 10:d24deb1afd1b | 338 | myled3 = 1; |
ArcN00b | 10:d24deb1afd1b | 339 | sprintf(tmp, "Led colorato di Rosso \n"); |
ArcN00b | 10:d24deb1afd1b | 340 | _cc3100._socket.sl_Send(newSockID, &(tmp), strlen(tmp),0); |
ArcN00b | 10:d24deb1afd1b | 341 | |
ArcN00b | 10:d24deb1afd1b | 342 | } else if (strstr(buf,"Verde") != NULL || strstr(buf,"verde") != NULL){ |
ArcN00b | 10:d24deb1afd1b | 343 | white(); |
ArcN00b | 10:d24deb1afd1b | 344 | myled1 = 1; |
ArcN00b | 10:d24deb1afd1b | 345 | myled2 = 1; |
ArcN00b | 10:d24deb1afd1b | 346 | sprintf(tmp, "Led colorato di Verde \n"); |
ArcN00b | 10:d24deb1afd1b | 347 | _cc3100._socket.sl_Send(newSockID, &(tmp), strlen(tmp),0); |
ArcN00b | 10:d24deb1afd1b | 348 | |
ArcN00b | 10:d24deb1afd1b | 349 | } else if (strstr(buf,"Giallo") != NULL || strstr(buf,"giallo") != NULL){ |
ArcN00b | 10:d24deb1afd1b | 350 | white(); |
ArcN00b | 10:d24deb1afd1b | 351 | myled2 = 1; |
ArcN00b | 10:d24deb1afd1b | 352 | sprintf(tmp, "Led colorato di Giallo \n"); |
ArcN00b | 10:d24deb1afd1b | 353 | _cc3100._socket.sl_Send(newSockID, &(tmp), strlen(tmp),0); |
ArcN00b | 10:d24deb1afd1b | 354 | |
ArcN00b | 10:d24deb1afd1b | 355 | } else if (strstr(buf,"Viola") != NULL || strstr(buf,"viola") != NULL){ |
ArcN00b | 10:d24deb1afd1b | 356 | white(); |
ArcN00b | 10:d24deb1afd1b | 357 | myled3 = 1; |
ArcN00b | 10:d24deb1afd1b | 358 | sprintf(tmp, "Led colorato di Viola \n"); |
ArcN00b | 10:d24deb1afd1b | 359 | _cc3100._socket.sl_Send(newSockID, &(tmp), strlen(tmp),0); |
ArcN00b | 10:d24deb1afd1b | 360 | |
ArcN00b | 10:d24deb1afd1b | 361 | } else if (strstr(buf,"Bianco") != NULL || strstr(buf,"bianco") != NULL){ |
ArcN00b | 10:d24deb1afd1b | 362 | white(); |
ArcN00b | 10:d24deb1afd1b | 363 | sprintf(tmp, "Led colorato di Bianco \n"); |
ArcN00b | 10:d24deb1afd1b | 364 | _cc3100._socket.sl_Send(newSockID, &(tmp), strlen(tmp),0); |
ArcN00b | 10:d24deb1afd1b | 365 | |
ArcN00b | 10:d24deb1afd1b | 366 | } else if (strstr(buf,"Off") != NULL || strstr(buf,"off") != NULL || strstr(buf,"Nero") != NULL || strstr(buf,"nero") != NULL){ |
ArcN00b | 10:d24deb1afd1b | 367 | myled1 = 1; |
ArcN00b | 10:d24deb1afd1b | 368 | myled2 = 1; |
ArcN00b | 10:d24deb1afd1b | 369 | myled3 = 1; |
ArcN00b | 10:d24deb1afd1b | 370 | sprintf(tmp, "Led spento \n"); |
ArcN00b | 10:d24deb1afd1b | 371 | _cc3100._socket.sl_Send(newSockID, &(tmp), strlen(tmp),0); |
ArcN00b | 10:d24deb1afd1b | 372 | |
ArcN00b | 10:d24deb1afd1b | 373 | } else { |
ArcN00b | 10:d24deb1afd1b | 374 | sprintf(tmp, "Hai inviato un colore non valido \n"); |
ArcN00b | 10:d24deb1afd1b | 375 | _cc3100._socket.sl_Send(newSockID, &(tmp), strlen(tmp),0); |
ArcN00b | 9:30d6c10d4eab | 376 | } |
ArcN00b | 9:30d6c10d4eab | 377 | } |
ArcN00b | 9:30d6c10d4eab | 378 | |
ArcN00b | 9:30d6c10d4eab | 379 | recvSize -= Status; |
ArcN00b | 9:30d6c10d4eab | 380 | } |
ArcN00b | 9:30d6c10d4eab | 381 | while(recvSize > 0); |
ArcN00b | 9:30d6c10d4eab | 382 | |
ArcN00b | 9:30d6c10d4eab | 383 | LoopCount++; |
ArcN00b | 9:30d6c10d4eab | 384 | } |
ArcN00b | 9:30d6c10d4eab | 385 | |
ArcN00b | 9:30d6c10d4eab | 386 | Status = _cc3100._socket.sl_Close(newSockID); |
ArcN00b | 9:30d6c10d4eab | 387 | ASSERT_ON_ERROR(Status); |
ArcN00b | 9:30d6c10d4eab | 388 | |
ArcN00b | 9:30d6c10d4eab | 389 | Status = _cc3100._socket.sl_Close(SockID); |
ArcN00b | 9:30d6c10d4eab | 390 | ASSERT_ON_ERROR(Status); |
ArcN00b | 9:30d6c10d4eab | 391 | |
ArcN00b | 9:30d6c10d4eab | 392 | return SUCCESS; |
ArcN00b | 9:30d6c10d4eab | 393 | } |
ArcN00b | 9:30d6c10d4eab | 394 | |
dflet | 0:e89ba455dbcf | 395 | void AP_app(void){ |
dflet | 0:e89ba455dbcf | 396 | |
dflet | 0:e89ba455dbcf | 397 | SlPingStartCommand_t PingParams = {0}; |
dflet | 0:e89ba455dbcf | 398 | SlPingReport_t Report = {0}; |
dflet | 5:d3b320ebd469 | 399 | // SlNetCfgIpV4Args_t ipV4 = {0}; |
dflet | 5:d3b320ebd469 | 400 | // SlNetAppDhcpServerBasicOpt_t dhcpParams = {0}; |
dflet | 0:e89ba455dbcf | 401 | |
dflet | 0:e89ba455dbcf | 402 | uint8_t SecType = 0; |
dflet | 0:e89ba455dbcf | 403 | int32_t role = ROLE_STA; |
dflet | 0:e89ba455dbcf | 404 | int32_t retVal = -1; |
ArcN00b | 10:d24deb1afd1b | 405 | char answer[20]; |
dflet | 0:e89ba455dbcf | 406 | |
dflet | 0:e89ba455dbcf | 407 | /* |
dflet | 0:e89ba455dbcf | 408 | * Assumption is that the device is configured in station mode already |
dflet | 0:e89ba455dbcf | 409 | * and it is in its default state |
dflet | 0:e89ba455dbcf | 410 | */ |
dflet | 0:e89ba455dbcf | 411 | role = _cc3100.sl_Start(0, 0, 0); |
dflet | 0:e89ba455dbcf | 412 | if (ROLE_AP == role) { |
dflet | 0:e89ba455dbcf | 413 | /* If the device is in AP mode, we need to wait for this event before doing anything */ |
dflet | 0:e89ba455dbcf | 414 | while(!_cc3100.IS_IP_ACQUIRED(g_Status,STATUS_BIT_IP_ACQUIRED)) { |
dflet | 3:b89198ac2efe | 415 | _cc3100._nonos._SlNonOsMainLoopTask(); |
dflet | 0:e89ba455dbcf | 416 | } |
dflet | 0:e89ba455dbcf | 417 | } else { |
dflet | 0:e89ba455dbcf | 418 | /* Configure CC3100 to start in AP mode */ |
dflet | 3:b89198ac2efe | 419 | retVal = _cc3100._wlan.sl_WlanSetMode(ROLE_AP); |
dflet | 0:e89ba455dbcf | 420 | if(retVal < 0) |
dflet | 0:e89ba455dbcf | 421 | LOOP_FOREVER(); |
dflet | 5:d3b320ebd469 | 422 | |
dflet | 5:d3b320ebd469 | 423 | /* Configure the SSID of the CC3100 */ |
dflet | 5:d3b320ebd469 | 424 | retVal = _cc3100._wlan.sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_SSID, |
dflet | 5:d3b320ebd469 | 425 | strlen(SSID_AP_MODE), (uint8_t *)SSID_AP_MODE); |
dflet | 5:d3b320ebd469 | 426 | if(retVal < 0) |
dflet | 5:d3b320ebd469 | 427 | LOOP_FOREVER(); |
dflet | 5:d3b320ebd469 | 428 | |
dflet | 5:d3b320ebd469 | 429 | SecType = SEC_TYPE_AP_MODE; |
dflet | 5:d3b320ebd469 | 430 | /* Configure the Security parameter the AP mode */ |
dflet | 5:d3b320ebd469 | 431 | retVal = _cc3100._wlan.sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_SECURITY_TYPE, 1, (uint8_t *)&SecType); |
dflet | 5:d3b320ebd469 | 432 | if(retVal < 0) |
dflet | 5:d3b320ebd469 | 433 | LOOP_FOREVER(); |
dflet | 5:d3b320ebd469 | 434 | |
dflet | 5:d3b320ebd469 | 435 | retVal = _cc3100._wlan.sl_WlanSet(SL_WLAN_CFG_AP_ID, WLAN_AP_OPT_PASSWORD, strlen(PASSWORD_AP_MODE), (uint8_t *)PASSWORD_AP_MODE); |
dflet | 5:d3b320ebd469 | 436 | if(retVal < 0) |
dflet | 5:d3b320ebd469 | 437 | LOOP_FOREVER(); |
dflet | 0:e89ba455dbcf | 438 | |
dflet | 0:e89ba455dbcf | 439 | retVal = _cc3100.sl_Stop(SL_STOP_TIMEOUT); |
dflet | 0:e89ba455dbcf | 440 | if(retVal < 0) |
dflet | 0:e89ba455dbcf | 441 | LOOP_FOREVER(); |
dflet | 0:e89ba455dbcf | 442 | |
dflet | 0:e89ba455dbcf | 443 | _cc3100.CLR_STATUS_BIT(g_Status, STATUS_BIT_IP_ACQUIRED); |
dflet | 0:e89ba455dbcf | 444 | |
dflet | 0:e89ba455dbcf | 445 | role = _cc3100.sl_Start(0, 0, 0); |
dflet | 0:e89ba455dbcf | 446 | if (ROLE_AP == role) { |
dflet | 0:e89ba455dbcf | 447 | /* If the device is in AP mode, we need to wait for this event before doing anything */ |
dflet | 0:e89ba455dbcf | 448 | while(!_cc3100.IS_IP_ACQUIRED(g_Status,STATUS_BIT_IP_ACQUIRED)) { |
dflet | 3:b89198ac2efe | 449 | _cc3100._nonos._SlNonOsMainLoopTask(); |
dflet | 0:e89ba455dbcf | 450 | } |
dflet | 0:e89ba455dbcf | 451 | } else { |
ArcN00b | 9:30d6c10d4eab | 452 | printf(" Impossibile completare l'avvio come Access Point \n\r"); |
dflet | 0:e89ba455dbcf | 453 | LOOP_FOREVER(); |
dflet | 0:e89ba455dbcf | 454 | } |
dflet | 0:e89ba455dbcf | 455 | } |
ArcN00b | 9:30d6c10d4eab | 456 | printf(" Avvio come Access Point completato \n\r"); |
dflet | 0:e89ba455dbcf | 457 | |
dflet | 0:e89ba455dbcf | 458 | /* Wait */ |
ArcN00b | 9:30d6c10d4eab | 459 | printf(" In attesa di qualcuno che si connetta\n\r"); |
dflet | 0:e89ba455dbcf | 460 | while((!_cc3100.IS_IP_LEASED(g_Status,STATUS_BIT_IP_LEASED)) || (!_cc3100.IS_STA_CONNECTED(g_Status,STATUS_BIT_STA_CONNECTED))) { |
dflet | 3:b89198ac2efe | 461 | _cc3100._nonos._SlNonOsMainLoopTask(); |
dflet | 0:e89ba455dbcf | 462 | } |
ArcN00b | 9:30d6c10d4eab | 463 | printf(" Un client sta tentando di connettersi \n\r"); |
ArcN00b | 10:d24deb1afd1b | 464 | /*printf(" In corso test di connettivita'... \n\r"); |
dflet | 0:e89ba455dbcf | 465 | |
ArcN00b | 10:d24deb1afd1b | 466 | // Set the ping parameters |
dflet | 0:e89ba455dbcf | 467 | PingParams.PingIntervalTime = PING_INTERVAL; |
dflet | 0:e89ba455dbcf | 468 | PingParams.PingSize = PING_SIZE; |
dflet | 0:e89ba455dbcf | 469 | PingParams.PingRequestTimeout = PING_TIMEOUT; |
dflet | 0:e89ba455dbcf | 470 | PingParams.TotalNumberOfAttempts = PING_ATTEMPTS; |
dflet | 0:e89ba455dbcf | 471 | PingParams.Flags = 0; |
ArcN00b | 10:d24deb1afd1b | 472 | PingParams.Ip = g_StationIP; // Fill the station IP address connected to CC3100 |
dflet | 0:e89ba455dbcf | 473 | |
ArcN00b | 10:d24deb1afd1b | 474 | // Ping client connected to CC3100 |
dflet | 3:b89198ac2efe | 475 | retVal = _cc3100._netapp.sl_NetAppPingStart((SlPingStartCommand_t*)&PingParams, SL_AF_INET, (SlPingReport_t*)&Report, &SimpleLinkPingReport); |
dflet | 0:e89ba455dbcf | 476 | if(retVal < 0) |
dflet | 0:e89ba455dbcf | 477 | LOOP_FOREVER(); |
dflet | 0:e89ba455dbcf | 478 | |
ArcN00b | 10:d24deb1afd1b | 479 | // Wait |
dflet | 0:e89ba455dbcf | 480 | while(!_cc3100.IS_PING_DONE(g_Status,STATUS_BIT_PING_DONE)) { |
dflet | 3:b89198ac2efe | 481 | _cc3100._nonos._SlNonOsMainLoopTask(); |
dflet | 0:e89ba455dbcf | 482 | } |
dflet | 0:e89ba455dbcf | 483 | |
dflet | 0:e89ba455dbcf | 484 | if (0 == g_PingPacketsRecv) { |
ArcN00b | 9:30d6c10d4eab | 485 | printf(" Impossibile connettersi correttamente al client \n\r"); |
dflet | 0:e89ba455dbcf | 486 | //ASSERT_ON_ERROR(LAN_CONNECTION_FAILED); |
ArcN00b | 9:30d6c10d4eab | 487 | printf(" ERRORE numero %d\n\r", LAN_CONNECTION_FAILED); |
ArcN00b | 10:d24deb1afd1b | 488 | }*/ |
dflet | 0:e89ba455dbcf | 489 | |
ArcN00b | 9:30d6c10d4eab | 490 | printf(" Client correttamente connesso \n\r"); |
ArcN00b | 9:30d6c10d4eab | 491 | |
ArcN00b | 9:30d6c10d4eab | 492 | //Funzione che gestisce e crea la socket |
ArcN00b | 10:d24deb1afd1b | 493 | sprintf(answer,"si"); |
ArcN00b | 10:d24deb1afd1b | 494 | while(1) { |
ArcN00b | 10:d24deb1afd1b | 495 | printf(" Socket in apertura \n\r"); |
ArcN00b | 10:d24deb1afd1b | 496 | retVal = TcpServer(PORT_NUM); |
ArcN00b | 10:d24deb1afd1b | 497 | if(retVal < 0) |
ArcN00b | 10:d24deb1afd1b | 498 | printf(" Socket chiuso \n\r"); |
ArcN00b | 10:d24deb1afd1b | 499 | } |
dflet | 0:e89ba455dbcf | 500 | } |
dflet | 0:e89ba455dbcf | 501 | |
ArcN00b | 8:2acb25effa3a | 502 | int32_t pingToHost(char* host) { |
ArcN00b | 8:2acb25effa3a | 503 | |
ArcN00b | 8:2acb25effa3a | 504 | SlPingStartCommand_t pingParams = {0}; |
ArcN00b | 8:2acb25effa3a | 505 | SlPingReport_t pingReport = {0}; |
ArcN00b | 8:2acb25effa3a | 506 | |
ArcN00b | 8:2acb25effa3a | 507 | uint32_t ipAddr = 0; |
ArcN00b | 8:2acb25effa3a | 508 | |
ArcN00b | 8:2acb25effa3a | 509 | int32_t retVal = -1; |
ArcN00b | 8:2acb25effa3a | 510 | |
ArcN00b | 8:2acb25effa3a | 511 | _cc3100.CLR_STATUS_BIT(g_Status, STATUS_BIT_PING_DONE); |
ArcN00b | 8:2acb25effa3a | 512 | g_PingPacketsRecv = 0; |
ArcN00b | 8:2acb25effa3a | 513 | |
ArcN00b | 8:2acb25effa3a | 514 | /* Set the ping parameters */ |
ArcN00b | 8:2acb25effa3a | 515 | pingParams.PingIntervalTime = PING_INTERVAL; |
ArcN00b | 8:2acb25effa3a | 516 | pingParams.PingSize = PING_PKT_SIZE; |
ArcN00b | 8:2acb25effa3a | 517 | pingParams.PingRequestTimeout = PING_TIMEOUT; |
ArcN00b | 8:2acb25effa3a | 518 | pingParams.TotalNumberOfAttempts = PING_ATTEMPTS; |
ArcN00b | 8:2acb25effa3a | 519 | pingParams.Flags = 0; |
ArcN00b | 8:2acb25effa3a | 520 | pingParams.Ip = g_GatewayIP; |
ArcN00b | 8:2acb25effa3a | 521 | |
ArcN00b | 8:2acb25effa3a | 522 | /* Check for Internet connection */ |
ArcN00b | 8:2acb25effa3a | 523 | retVal = _cc3100._netapp.sl_NetAppDnsGetHostByName((unsigned char *)host, strlen(host), &ipAddr, SL_AF_INET); |
ArcN00b | 8:2acb25effa3a | 524 | if(retVal < 0) { |
ArcN00b | 8:2acb25effa3a | 525 | printf(" Impossibile trovare l'host \n\r"); |
ArcN00b | 8:2acb25effa3a | 526 | return retVal; |
ArcN00b | 8:2acb25effa3a | 527 | } else |
ArcN00b | 8:2acb25effa3a | 528 | printf(" Avvio ping\n"); |
ArcN00b | 8:2acb25effa3a | 529 | |
ArcN00b | 8:2acb25effa3a | 530 | /* Replace the ping address to match HOST_NAME's IP address */ |
ArcN00b | 8:2acb25effa3a | 531 | pingParams.Ip = ipAddr; |
ArcN00b | 8:2acb25effa3a | 532 | |
ArcN00b | 8:2acb25effa3a | 533 | /* Try to ping HOST_NAME */ |
ArcN00b | 8:2acb25effa3a | 534 | retVal = _cc3100._netapp.sl_NetAppPingStart( (SlPingStartCommand_t*)&pingParams, SL_AF_INET, |
ArcN00b | 8:2acb25effa3a | 535 | (SlPingReport_t*)&pingReport, SimpleLinkPingReport); |
ArcN00b | 8:2acb25effa3a | 536 | if(retVal < 0) { |
ArcN00b | 8:2acb25effa3a | 537 | printf(" Impossibile connettersi all'host \n\r"); |
ArcN00b | 8:2acb25effa3a | 538 | return retVal; |
ArcN00b | 8:2acb25effa3a | 539 | } |
ArcN00b | 8:2acb25effa3a | 540 | |
ArcN00b | 8:2acb25effa3a | 541 | /* Wait */ |
ArcN00b | 8:2acb25effa3a | 542 | while(!_cc3100.IS_PING_DONE(g_Status,STATUS_BIT_PING_DONE)) { _cc3100._nonos._SlNonOsMainLoopTask(); } |
ArcN00b | 8:2acb25effa3a | 543 | |
ArcN00b | 8:2acb25effa3a | 544 | if (0 == g_PingPacketsRecv) { |
ArcN00b | 8:2acb25effa3a | 545 | printf(" Il test non e' andato a buon fine \n\r"); |
ArcN00b | 8:2acb25effa3a | 546 | return retVal; |
ArcN00b | 8:2acb25effa3a | 547 | } |
ArcN00b | 8:2acb25effa3a | 548 | |
ArcN00b | 8:2acb25effa3a | 549 | return 0; |
ArcN00b | 8:2acb25effa3a | 550 | |
ArcN00b | 8:2acb25effa3a | 551 | } |
ArcN00b | 8:2acb25effa3a | 552 | |
ArcN00b | 8:2acb25effa3a | 553 | void station_app(void) { |
dflet | 0:e89ba455dbcf | 554 | |
dflet | 0:e89ba455dbcf | 555 | int32_t retVal = -1; |
ArcN00b | 8:2acb25effa3a | 556 | char host[100]; |
dflet | 5:d3b320ebd469 | 557 | |
dflet | 0:e89ba455dbcf | 558 | /* Connecting to WLAN AP */ |
dflet | 0:e89ba455dbcf | 559 | retVal = _cc3100.establishConnectionWithAP(); |
dflet | 0:e89ba455dbcf | 560 | if(retVal < 0) |
dflet | 0:e89ba455dbcf | 561 | { |
ArcN00b | 8:2acb25effa3a | 562 | printf(" Impossibile connettersi \n\r"); |
dflet | 0:e89ba455dbcf | 563 | LOOP_FOREVER(); |
dflet | 5:d3b320ebd469 | 564 | } |
ArcN00b | 8:2acb25effa3a | 565 | printf(" Connessione stabilita con l'Access Point \n\r"); |
dflet | 5:d3b320ebd469 | 566 | |
ArcN00b | 8:2acb25effa3a | 567 | printf(" Test di connettivita' in corso... \n\r"); |
dflet | 0:e89ba455dbcf | 568 | retVal = _cc3100.checkLanConnection(); |
ArcN00b | 8:2acb25effa3a | 569 | if(retVal < 0) { |
dflet | 0:e89ba455dbcf | 570 | printf(" Device couldn't connect to LAN \n\r"); |
dflet | 0:e89ba455dbcf | 571 | LOOP_FOREVER(); |
dflet | 0:e89ba455dbcf | 572 | } |
ArcN00b | 8:2acb25effa3a | 573 | printf(" Connesso alla rete locale con successo \r\n"); |
dflet | 5:d3b320ebd469 | 574 | |
dflet | 0:e89ba455dbcf | 575 | retVal = _cc3100.checkInternetConnection(); |
dflet | 0:e89ba455dbcf | 576 | if(retVal < 0) |
dflet | 0:e89ba455dbcf | 577 | { |
dflet | 0:e89ba455dbcf | 578 | printf(" Device couldn't connect to the internet \n\r"); |
dflet | 0:e89ba455dbcf | 579 | LOOP_FOREVER(); |
dflet | 0:e89ba455dbcf | 580 | } |
dflet | 0:e89ba455dbcf | 581 | |
ArcN00b | 8:2acb25effa3a | 582 | printf(" Connesso ad internet con successo"); |
ArcN00b | 8:2acb25effa3a | 583 | |
ArcN00b | 8:2acb25effa3a | 584 | // Esegue ping finchè connesso |
ArcN00b | 8:2acb25effa3a | 585 | while(1) { |
ArcN00b | 8:2acb25effa3a | 586 | printf(" \n\rInserire un host a cui fare il ping \n\r"); |
ArcN00b | 8:2acb25effa3a | 587 | scanf("%s", host); |
ArcN00b | 8:2acb25effa3a | 588 | |
ArcN00b | 8:2acb25effa3a | 589 | if(pingToHost(host) == 0) |
ArcN00b | 8:2acb25effa3a | 590 | printf("\nTest completato senza errori\n\r"); |
ArcN00b | 8:2acb25effa3a | 591 | |
ArcN00b | 8:2acb25effa3a | 592 | } |
dflet | 0:e89ba455dbcf | 593 | } |