Seongbin Lim
/
sb_first_project
This is a very simple guide, reviewing the steps required to get Blinky working on an Mbed OS platform.
main.cpp
- Committer:
- sb8718
- Date:
- 2020-06-02
- Revision:
- 140:2252b2df4bc6
- Parent:
- 138:e829be898713
- Child:
- 141:ba61e3c64a6d
File content as of revision 140:2252b2df4bc6:
#include "mbed.h" #define SERVER_IP "192.168.0.53" #define SERVER_PORT 50000 Serial pc(USBTX, USBRX, 115200); WiFiInterface *wifi; TCPSocket socket; Thread sock_thread; char rx_buf_pc[100]; int index = 0; volatile int flag; void rx_cb(void) { char ch; ch = pc.getc(); pc.putc(ch); rx_buf_pc[index++] = ch; if (ch == 0x0D) { pc.putc(0x0A); rx_buf_pc[--index] = '\0'; index = 0; flag = 1; } } void rx_thread() { char* buf = (char*)malloc(1024); while(true) { nsapi_size_or_error_t size = socket.recv(buf, 1024); if (size <= 0) { if (size == NSAPI_ERROR_WOULD_BLOCK) continue; pc.printf("Error while receiving data from TCP socket (%d)\r\n", size); return; } buf[size] = '\0'; pc.printf("\r\nRX data: (%d) %s \r\n", size, buf); } } int main() { SocketAddress sockAddr; SocketAddress serverAddr(SERVER_IP, SERVER_PORT); pc.printf("\r\n WiFi TCP Client example\r\n"); wifi = WiFiInterface::get_default_instance(); if (!wifi) { pc.printf("ERROR: No WiFiInterface found.\n"); while(1); } pc.printf("Connecting to %s...\r\n", MBED_CONF_APP_WIFI_SSID); int ret = wifi->connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2); if (ret != 0) { pc.printf("Connection error!!\r\n"); while(1); } pc.printf("Success!!\r\n"); pc.printf("RSSI: %d\r\n", wifi->get_rssi()); wifi->get_ip_address(&sockAddr); pc.printf("IP : %s, ", sockAddr.get_ip_address()); pc.printf("Netmask: %s, ", wifi->get_netmask()); wifi->get_gateway(&sockAddr); pc.printf("Gateway: %s\r\n", sockAddr.get_ip_address()); socket.open(wifi); int response = socket.connect(serverAddr); if (0 != response) { pc.printf("Enter connecting: %d\r\n", response); socket.close(); wifi->disconnect(); while(1); } sock_thread.start(&rx_thread); //pc.attach(&rx_cb); while(1) { flag = 0; pc.printf("Enter characters to send to a server: "); while (flag != 1) { char ch; if (pc.readable()) { ch = pc.getc(); pc.putc(ch); rx_buf_pc[index++] = ch; if (ch == 0x0D) { pc.putc(0x0A); rx_buf_pc[--index] = '\0'; index = 0; flag = 1; } } } if (!strcmp(rx_buf_pc, "q") || !strcmp(rx_buf_pc, "Q")) { break; } else { int len = strlen(rx_buf_pc); pc.printf("Sent: %s (%d)\r\n", rx_buf_pc, len); rx_buf_pc[len++] = 0x0D; rx_buf_pc[len++] = 0x0A; socket.send((const char *) rx_buf_pc, len); Thread::wait(500); } } socket.close(); wifi->disconnect(); sock_thread.join(); pc.printf("RX sock_thread joined!!\r\n"); pc.printf("\nDone\r\n"); Thread::wait(osWaitForever); }