BLE-WiFi with BIOSensors

Dependencies:   AS7000 BNO055 NNN50_WIFI_API

DELTA NNN50 (Bluetooth LE 4.X & 802.11 b/g/n) with Bio Sensor (HRM, 9DoF motion Sensor) reference design.

Env. Setup step by step.

  1. Download or build a TCP Server on you host computer
    1. Please find out the TCP server code or install TCP server application in your host computer.
  2. Import this sample application and setup these information about AP & TCP Server
    1. *char* AP_SSID = "SOG";
    2. *char* AP_PWD = "1122334455667788";
    3. *char* TCP_SERVER_ADDRESS = "10.0.1.13";
    4. *int TCP_SERVER_PORT = 1030;
  3. Compiler your code and download to your mBed device.
  4. Control your mBed device
    1. Please use NORDSemi nRF Tool and setup and watch these information: GATT CMD: 0x00 (connect to AP, TCP Server, and create TCP socket), 0x02 disconnection TCP server, close socket, and WiFi sleep), 0xA1 (send sensor data to tcp server from out_buffer[]) and Status will be update by Bluetooth LE adv through manufacturing information
0x000x020xA1
WiFi,AP&TCP Server connectWiFi,AP, & TCP Server disconnectSend sensor data to TCP Server
Revision:
4:11b81280c65b
Parent:
3:9bd3e863e15b
Child:
5:ffe1a4c4881e
--- a/main.cpp	Sun Apr 02 10:16:20 2017 +0000
+++ b/main.cpp	Mon Apr 17 14:19:36 2017 +0000
@@ -15,24 +15,20 @@
 #include "EthernetInterface.h"
 #include "WIFIDevice.h"
 
-const char* ECHO_SERVER_ADDRESS = "192.168.1.100";
+const char* ECHO_SERVER_ADDRESS = "192.168.2.13";
 const int ECHO_SERVER_PORT = 1030;
 
-Serial uart(p17, p16);//temporary define for alpha release
-
 void scanCallback(tstrM2mWifiscanResult result)
 {
-    uart.printf("SSID: %s \n", result.au8SSID);
-    uart.printf("RSSI: %i \n", result.s8rssi);
+    printf("SSID: %s \n", result.au8SSID);
+    printf("RSSI: %i \n", result.s8rssi);
 }
 
 int main() {
 
     EthernetInterface eth;
     WIFIDevice wifi;
-    
-    uart.baud(9600);
-        
+
     eth.init();
 
     wifi.apScan(scanCallback);
@@ -42,14 +38,14 @@
     eth.connect();    
 
     if(wifi.is_AP_connected())
-        uart.printf("Connect Success! \n");
+        printf("Connect Success! \n");
     else
-        uart.printf("Connect Fail! \n");    
+        printf("Connect Fail! \n");    
 
-    uart.printf("MAC: %s\n", eth.getMACAddress());            
-    uart.printf("IP: %s\n", eth.getIPAddress());
-    uart.printf("Gateway: %s\n", eth.getGateway());
-    uart.printf("NetworkMask: %s\n", eth.getNetworkMask()); 
+    printf("MAC: %s\n", eth.getMACAddress());            
+    printf("IP: %s\n", eth.getIPAddress());
+    printf("Gateway: %s\n", eth.getGateway());
+    printf("NetworkMask: %s\n", eth.getNetworkMask()); 
 
     UDPSocket sock;
     sock.init();
@@ -58,14 +54,18 @@
     echo_server.set_address(ECHO_SERVER_ADDRESS, ECHO_SERVER_PORT);
     
     char out_buffer[] = "Hello World";
-    uart.printf("Sending  message '%s' to server (%s)\n",out_buffer,ECHO_SERVER_ADDRESS);
+    printf("Sending  message '%s' to server (%s)\n",out_buffer,ECHO_SERVER_ADDRESS);
     sock.sendTo(echo_server, out_buffer, sizeof(out_buffer));
     
-    char in_buffer[256];
+    char in_buffer[256];    //IMPORTANT, array size MUST >= the actual received data size or set to maximum of 1400 if there is uncertainty
     int n = sock.receiveFrom(echo_server, in_buffer, sizeof(in_buffer));
     
-    in_buffer[n] = '\0';
-    uart.printf("Received message from server: '%s'\n", in_buffer);
+    if(n <0)
+        in_buffer[0] = '\0';//IMPORTANT, in case n = -1 when set_bloacking is timeout, prevent the illegal array in_buffer[-1] access 
+    else
+        in_buffer[n] = '\0';
+        
+    printf("Received message from server: '%s'\n", in_buffer);
     
     sock.close();