This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.

Dependencies:   RemoteIR

Committer:
sb8718
Date:
Tue Jun 02 01:43:23 2020 +0000
Revision:
140:2252b2df4bc6
Parent:
138:e829be898713
Child:
141:ba61e3c64a6d
TCP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sb8718 109:5274dd9bebe1 1 #include "mbed.h"
sb8718 140:2252b2df4bc6 2
sb8718 140:2252b2df4bc6 3 #define SERVER_IP "192.168.0.53"
sb8718 137:81b5a1672c6a 4 #define SERVER_PORT 50000
sb8718 140:2252b2df4bc6 5
sb8718 137:81b5a1672c6a 6 Serial pc(USBTX, USBRX, 115200);
sb8718 137:81b5a1672c6a 7 WiFiInterface *wifi;
sb8718 140:2252b2df4bc6 8
sb8718 137:81b5a1672c6a 9 TCPSocket socket;
sb8718 137:81b5a1672c6a 10 Thread sock_thread;
sb8718 140:2252b2df4bc6 11
sb8718 137:81b5a1672c6a 12 char rx_buf_pc[100];
sb8718 137:81b5a1672c6a 13 int index = 0;
sb8718 140:2252b2df4bc6 14 volatile int flag;
sb8718 128:29911670c7fd 15
sb8718 140:2252b2df4bc6 16 void rx_cb(void)
sb8718 137:81b5a1672c6a 17 {
sb8718 137:81b5a1672c6a 18 char ch;
sb8718 137:81b5a1672c6a 19 ch = pc.getc();
sb8718 137:81b5a1672c6a 20 pc.putc(ch);
sb8718 137:81b5a1672c6a 21 rx_buf_pc[index++] = ch;
sb8718 140:2252b2df4bc6 22 if (ch == 0x0D) {
sb8718 137:81b5a1672c6a 23 pc.putc(0x0A);
sb8718 137:81b5a1672c6a 24 rx_buf_pc[--index] = '\0';
sb8718 137:81b5a1672c6a 25 index = 0;
sb8718 137:81b5a1672c6a 26 flag = 1;
sb8718 137:81b5a1672c6a 27 }
sb8718 137:81b5a1672c6a 28 }
sb8718 135:03997cc206a4 29
sb8718 140:2252b2df4bc6 30
sb8718 140:2252b2df4bc6 31 void rx_thread()
sb8718 137:81b5a1672c6a 32 {
sb8718 137:81b5a1672c6a 33 char* buf = (char*)malloc(1024);
sb8718 140:2252b2df4bc6 34
sb8718 140:2252b2df4bc6 35 while(true)
sb8718 140:2252b2df4bc6 36 {
sb8718 137:81b5a1672c6a 37 nsapi_size_or_error_t size = socket.recv(buf, 1024);
sb8718 140:2252b2df4bc6 38 if (size <= 0)
sb8718 140:2252b2df4bc6 39 {
sb8718 137:81b5a1672c6a 40 if (size == NSAPI_ERROR_WOULD_BLOCK) continue;
sb8718 140:2252b2df4bc6 41
sb8718 137:81b5a1672c6a 42 pc.printf("Error while receiving data from TCP socket (%d)\r\n", size);
sb8718 137:81b5a1672c6a 43 return;
sb8718 137:81b5a1672c6a 44 }
sb8718 140:2252b2df4bc6 45 buf[size] = '\0';
sb8718 137:81b5a1672c6a 46 pc.printf("\r\nRX data: (%d) %s \r\n", size, buf);
sb8718 137:81b5a1672c6a 47 }
sb8718 137:81b5a1672c6a 48 }
sb8718 130:d19783810c05 49
sb8718 140:2252b2df4bc6 50
sb8718 135:03997cc206a4 51 int main() {
sb8718 137:81b5a1672c6a 52 SocketAddress sockAddr;
sb8718 137:81b5a1672c6a 53 SocketAddress serverAddr(SERVER_IP, SERVER_PORT);
sb8718 140:2252b2df4bc6 54
sb8718 137:81b5a1672c6a 55 pc.printf("\r\n WiFi TCP Client example\r\n");
sb8718 140:2252b2df4bc6 56
sb8718 137:81b5a1672c6a 57 wifi = WiFiInterface::get_default_instance();
sb8718 137:81b5a1672c6a 58 if (!wifi)
sb8718 137:81b5a1672c6a 59 {
sb8718 137:81b5a1672c6a 60 pc.printf("ERROR: No WiFiInterface found.\n");
sb8718 137:81b5a1672c6a 61 while(1);
sb8718 137:81b5a1672c6a 62 }
sb8718 140:2252b2df4bc6 63
sb8718 137:81b5a1672c6a 64 pc.printf("Connecting to %s...\r\n", MBED_CONF_APP_WIFI_SSID);
sb8718 140:2252b2df4bc6 65 int ret = wifi->connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
sb8718 137:81b5a1672c6a 66 if (ret != 0)
sb8718 137:81b5a1672c6a 67 {
sb8718 137:81b5a1672c6a 68 pc.printf("Connection error!!\r\n");
sb8718 137:81b5a1672c6a 69 while(1);
sb8718 137:81b5a1672c6a 70 }
sb8718 140:2252b2df4bc6 71
sb8718 137:81b5a1672c6a 72 pc.printf("Success!!\r\n");
sb8718 137:81b5a1672c6a 73 pc.printf("RSSI: %d\r\n", wifi->get_rssi());
sb8718 140:2252b2df4bc6 74
sb8718 140:2252b2df4bc6 75 wifi->get_ip_address(&sockAddr);
sb8718 140:2252b2df4bc6 76 pc.printf("IP : %s, ", sockAddr.get_ip_address());
sb8718 140:2252b2df4bc6 77
sb8718 140:2252b2df4bc6 78 pc.printf("Netmask: %s, ", wifi->get_netmask());
sb8718 140:2252b2df4bc6 79
sb8718 138:e829be898713 80 wifi->get_gateway(&sockAddr);
sb8718 137:81b5a1672c6a 81 pc.printf("Gateway: %s\r\n", sockAddr.get_ip_address());
sb8718 140:2252b2df4bc6 82
sb8718 137:81b5a1672c6a 83 socket.open(wifi);
sb8718 137:81b5a1672c6a 84 int response = socket.connect(serverAddr);
sb8718 140:2252b2df4bc6 85 if (0 != response)
sb8718 137:81b5a1672c6a 86 {
sb8718 140:2252b2df4bc6 87 pc.printf("Enter connecting: %d\r\n", response);
sb8718 137:81b5a1672c6a 88 socket.close();
sb8718 137:81b5a1672c6a 89 wifi->disconnect();
sb8718 137:81b5a1672c6a 90 while(1);
sb8718 140:2252b2df4bc6 91 }
sb8718 140:2252b2df4bc6 92
sb8718 137:81b5a1672c6a 93 sock_thread.start(&rx_thread);
sb8718 140:2252b2df4bc6 94 //pc.attach(&rx_cb);
sb8718 140:2252b2df4bc6 95
sb8718 140:2252b2df4bc6 96 while(1)
sb8718 137:81b5a1672c6a 97 {
sb8718 137:81b5a1672c6a 98 flag = 0;
sb8718 137:81b5a1672c6a 99 pc.printf("Enter characters to send to a server: ");
sb8718 140:2252b2df4bc6 100 while (flag != 1)
sb8718 140:2252b2df4bc6 101 {
sb8718 140:2252b2df4bc6 102 char ch;
sb8718 140:2252b2df4bc6 103 if (pc.readable())
sb8718 140:2252b2df4bc6 104 {
sb8718 140:2252b2df4bc6 105 ch = pc.getc();
sb8718 140:2252b2df4bc6 106 pc.putc(ch);
sb8718 140:2252b2df4bc6 107 rx_buf_pc[index++] = ch;
sb8718 140:2252b2df4bc6 108 if (ch == 0x0D) {
sb8718 140:2252b2df4bc6 109 pc.putc(0x0A);
sb8718 140:2252b2df4bc6 110 rx_buf_pc[--index] = '\0';
sb8718 140:2252b2df4bc6 111 index = 0;
sb8718 140:2252b2df4bc6 112 flag = 1;
sb8718 140:2252b2df4bc6 113 }
sb8718 140:2252b2df4bc6 114 }
sb8718 137:81b5a1672c6a 115 }
sb8718 140:2252b2df4bc6 116
sb8718 140:2252b2df4bc6 117 if (!strcmp(rx_buf_pc, "q") || !strcmp(rx_buf_pc, "Q"))
sb8718 140:2252b2df4bc6 118 {
sb8718 137:81b5a1672c6a 119 break;
sb8718 140:2252b2df4bc6 120 }
sb8718 140:2252b2df4bc6 121 else
sb8718 140:2252b2df4bc6 122 {
sb8718 137:81b5a1672c6a 123 int len = strlen(rx_buf_pc);
sb8718 137:81b5a1672c6a 124 pc.printf("Sent: %s (%d)\r\n", rx_buf_pc, len);
sb8718 137:81b5a1672c6a 125 rx_buf_pc[len++] = 0x0D;
sb8718 137:81b5a1672c6a 126 rx_buf_pc[len++] = 0x0A;
sb8718 140:2252b2df4bc6 127 socket.send((const char *) rx_buf_pc, len);
sb8718 140:2252b2df4bc6 128 Thread::wait(500);
sb8718 130:d19783810c05 129 }
sb8718 131:8fb226cc407c 130 }
sb8718 140:2252b2df4bc6 131
sb8718 137:81b5a1672c6a 132 socket.close();
sb8718 137:81b5a1672c6a 133 wifi->disconnect();
sb8718 137:81b5a1672c6a 134 sock_thread.join();
sb8718 137:81b5a1672c6a 135 pc.printf("RX sock_thread joined!!\r\n");
sb8718 137:81b5a1672c6a 136 pc.printf("\nDone\r\n");
sb8718 137:81b5a1672c6a 137 Thread::wait(osWaitForever);
sb8718 140:2252b2df4bc6 138 }