Program for test the tcp/ip communication between mbed and Android phone

Dependencies:   EthernetInterface mbed-rtos mbed

Notebook page HERE

Committer:
edodm85
Date:
Wed Jul 20 20:24:15 2016 +0000
Revision:
0:149b394928f3
First commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edodm85 0:149b394928f3 1 /*
edodm85 0:149b394928f3 2 * Author: Edoardo De Marchi
edodm85 0:149b394928f3 3 * Date: 20/07/16
edodm85 0:149b394928f3 4 * Notes: Test ethernet server (for Android connection)
edodm85 0:149b394928f3 5 */
edodm85 0:149b394928f3 6
edodm85 0:149b394928f3 7 #include "main.h"
edodm85 0:149b394928f3 8
edodm85 0:149b394928f3 9
edodm85 0:149b394928f3 10
edodm85 0:149b394928f3 11 int Init()
edodm85 0:149b394928f3 12 {
edodm85 0:149b394928f3 13 led1 = 0;
edodm85 0:149b394928f3 14 led2 = 0;
edodm85 0:149b394928f3 15 led3 = 0;
edodm85 0:149b394928f3 16 led4 = 0;
edodm85 0:149b394928f3 17
edodm85 0:149b394928f3 18
edodm85 0:149b394928f3 19 // ETHERNET
edodm85 0:149b394928f3 20 eth.init(ip, mask, gateway);
edodm85 0:149b394928f3 21 eth.connect();
edodm85 0:149b394928f3 22 server.bind(ECHO_SERVER_PORT);
edodm85 0:149b394928f3 23 server.listen(1);
edodm85 0:149b394928f3 24 pc.printf("IP Address is %s\r\n", eth.getIPAddress());
edodm85 0:149b394928f3 25
edodm85 0:149b394928f3 26 pc.printf("%s - speed: %d Mbps\n", get_transmission_status(), get_connection_speed());
edodm85 0:149b394928f3 27
edodm85 0:149b394928f3 28 // THREAD
edodm85 0:149b394928f3 29 osThreadCreate(osThread(net_thread), NULL);
edodm85 0:149b394928f3 30
edodm85 0:149b394928f3 31 return 0;
edodm85 0:149b394928f3 32 }
edodm85 0:149b394928f3 33
edodm85 0:149b394928f3 34
edodm85 0:149b394928f3 35
edodm85 0:149b394928f3 36
edodm85 0:149b394928f3 37 int main (void)
edodm85 0:149b394928f3 38 {
edodm85 0:149b394928f3 39 bool eth_status = false;
edodm85 0:149b394928f3 40 bool eth_status_temp = true;
edodm85 0:149b394928f3 41
edodm85 0:149b394928f3 42 Init();
edodm85 0:149b394928f3 43
edodm85 0:149b394928f3 44 while (true)
edodm85 0:149b394928f3 45 {
edodm85 0:149b394928f3 46 if(!get_link_status())
edodm85 0:149b394928f3 47 {
edodm85 0:149b394928f3 48 eth_status = true;
edodm85 0:149b394928f3 49 }else
edodm85 0:149b394928f3 50 {
edodm85 0:149b394928f3 51 eth_status = false;
edodm85 0:149b394928f3 52 eth_status_temp = true;
edodm85 0:149b394928f3 53 led1 = 0;
edodm85 0:149b394928f3 54 }
edodm85 0:149b394928f3 55
edodm85 0:149b394928f3 56 if(eth_status == eth_status_temp)
edodm85 0:149b394928f3 57 {
edodm85 0:149b394928f3 58 eth_status_temp = !eth_status;
edodm85 0:149b394928f3 59 pc.printf("Check cable connection\r\n");
edodm85 0:149b394928f3 60 led1 = 1;
edodm85 0:149b394928f3 61 eth_status = false;
edodm85 0:149b394928f3 62 if(checketh)
edodm85 0:149b394928f3 63 {
edodm85 0:149b394928f3 64 client.close();
edodm85 0:149b394928f3 65 pc.printf("Connection close.\r\n");
edodm85 0:149b394928f3 66 checketh = false;
edodm85 0:149b394928f3 67 }
edodm85 0:149b394928f3 68 }
edodm85 0:149b394928f3 69 led2 = !led2;
edodm85 0:149b394928f3 70 osDelay(500);
edodm85 0:149b394928f3 71 }
edodm85 0:149b394928f3 72 }
edodm85 0:149b394928f3 73
edodm85 0:149b394928f3 74
edodm85 0:149b394928f3 75 void net_thread(void const *argument)
edodm85 0:149b394928f3 76 {
edodm85 0:149b394928f3 77 while (true)
edodm85 0:149b394928f3 78 {
edodm85 0:149b394928f3 79 led3 = 1;
edodm85 0:149b394928f3 80 server.accept(client);
edodm85 0:149b394928f3 81 checketh = true;
edodm85 0:149b394928f3 82 pc.printf("Connection from: %s\r\n", client.get_address());
edodm85 0:149b394928f3 83 while (true)
edodm85 0:149b394928f3 84 {
edodm85 0:149b394928f3 85 led3 = 0;
edodm85 0:149b394928f3 86 int n = client.receive(bufferRX, sizeof(bufferRX)); // ritorna il numero di byte spediti
edodm85 0:149b394928f3 87 if (n <= 0) break;
edodm85 0:149b394928f3 88
edodm85 0:149b394928f3 89 bufferRX[n]=0; // make terminater
edodm85 0:149b394928f3 90 parse_cmd(n);
edodm85 0:149b394928f3 91 }
edodm85 0:149b394928f3 92 checketh = false;
edodm85 0:149b394928f3 93 client.close();
edodm85 0:149b394928f3 94 pc.printf("Connection close.\r\n");
edodm85 0:149b394928f3 95 }
edodm85 0:149b394928f3 96 }
edodm85 0:149b394928f3 97
edodm85 0:149b394928f3 98
edodm85 0:149b394928f3 99 void parse_cmd(int sizeCMD)
edodm85 0:149b394928f3 100 {
edodm85 0:149b394928f3 101 new_send = false;
edodm85 0:149b394928f3 102 printf("cmd << %s\r\n", bufferRX);
edodm85 0:149b394928f3 103
edodm85 0:149b394928f3 104 sprintf(bufferTX, "CMD Received\r\n");
edodm85 0:149b394928f3 105 client.send_all(bufferTX, sizeof(bufferTX));
edodm85 0:149b394928f3 106
edodm85 0:149b394928f3 107 memset(bufferTX, 0, sizeof(bufferTX));
edodm85 0:149b394928f3 108 memset(bufferRX, 0, sizeof(bufferRX));
edodm85 0:149b394928f3 109 }