Sample code for AT&T IoT Services DevLab with IoT StarterKit.

Dependencies:   FXOS8700CQ M2XStreamClient-JMF WNCInterface jsonlite mbed-rtos mbed

Fork of WNCInterface_M2Xdemo by Avnet

Revision:
5:8099493f2c35
Parent:
4:08979e323c6e
--- a/sensors.cpp	Wed Apr 05 04:53:25 2017 +0000
+++ b/sensors.cpp	Wed Apr 05 16:37:18 2017 +0000
@@ -152,9 +152,7 @@
         //PRINTF("Read Si7020 Humidity = 0x%02X%02X\n", Humidity[0], Humidity[1]);
         int rh_code = (Humidity[0] << 8) + Humidity[1];
         float fRh = (125.0*rh_code/65536.0) - 6.0; //from datasheet
-        //PRINTF("Si7020 Humidity = %*.*f %%\n", 4, 2, fRh); //double % sign for escape //PRINTF("%*.*f\n", myFieldWidth, myPrecision, myFloatValue);
-        SENSOR_DATA.fHumidity = fRh;
-        sprintf(SENSOR_DATA.Humidity_Si7020, "%0.2f", fRh);
+        SENSOR_DATA.Humidity_Si7020 = fRh;
         
         //Command to read temperature when humidity is already done:
         I2C_WriteSingleByte(Si7020_PMOD_I2C_ADDR, 0xE0, false);
@@ -162,9 +160,7 @@
         //PRINTF("Read Si7020 Temperature = 0x%02X%02X\n", Temperature[0], Temperature[1]);
         int temp_code = (Temperature[0] << 8) + Temperature[1];
         float fTemp = (175.72*temp_code/65536.0) - 46.85; //from datasheet in Celcius
-        SENSOR_DATA.fTemperature = fTemp;
-        //PRINTF("Si7020 Temperature = %*.*f deg C\n", 4, 2, fTemp);
-        sprintf(SENSOR_DATA.Temperature_Si7020, "%0.2f", fTemp);
+        SENSOR_DATA.Temperature_Si7020 = fTemp;
     } //bool bSi7020_present = true
 
 } //Read_Si7020()
@@ -304,7 +300,7 @@
             sprintf(SENSOR_DATA.Proximity, "Object Very Near\0");
         }
 #else    
-        sprintf(SENSOR_DATA.Proximity, "%d\0", PS1);
+        SENSOR_DATA.Proximity = PS1;
 #endif            
     
         //Force ALS read:
@@ -318,13 +314,13 @@
         //PRINTF("UV_INDEX_Data = %d\n", UV_INDEX);
     
         //PRINTF("Ambient Light Visible  Sensor = %d\n", ALS_VIS);
-        sprintf(SENSOR_DATA.AmbientLightVis, "%d", ALS_VIS);
+        SENSOR_DATA.AmbientLightVis = ALS_VIS;
         //PRINTF("Ambient Light Infrared Sensor = %d\n", ALS_IR);
-        sprintf(SENSOR_DATA.AmbientLightIr, "%d", ALS_IR);
+        SENSOR_DATA.AmbientLightIr = ALS_IR;
         //float fUV_value = (UV_INDEX -50.0)/10000.0;
         float fUV_value = (UV_INDEX)/100.0; //this is the aux reading
         //PRINTF("UV_Data = %0.2f\n", fUV_value);
-        sprintf(SENSOR_DATA.UVindex, "%0.2f", fUV_value);
+        SENSOR_DATA.UVindex = fUV_value;
     } //bSi1145_present = true
 } //Read_Si1145()
 
@@ -365,9 +361,9 @@
         fxos.enable();
         fxos.get_data(&accel_data, &magn_data);
         //PRINTF("Roll=%5d, Pitch=%5d, Yaw=%5d;\r\n", magn_data.x, magn_data.y, magn_data.z);
-        sprintf(SENSOR_DATA.MagnetometerX, "%5d", magn_data.x);
-        sprintf(SENSOR_DATA.MagnetometerY, "%5d", magn_data.y);
-        sprintf(SENSOR_DATA.MagnetometerZ, "%5d", magn_data.z);
+        SENSOR_DATA.MagnetometerX = magn_data.x;
+        SENSOR_DATA.MagnetometerY = magn_data.y;
+        SENSOR_DATA.MagnetometerZ = magn_data.z;
     
         //Try to normalize (/2048) the values so they will match the eCompass output:
         float fAccelScaled_x, fAccelScaled_y, fAccelScaled_z;
@@ -375,9 +371,9 @@
         fAccelScaled_y = (accel_data.y/2048.0);
         fAccelScaled_z = (accel_data.z/2048.0);
         //PRINTF("Acc: X=%2.3f Y=%2.3f Z=%2.3f;\r\n", fAccelScaled_x, fAccelScaled_y, fAccelScaled_z);
-        sprintf(SENSOR_DATA.AccelX, "%2.3f", fAccelScaled_x);
-        sprintf(SENSOR_DATA.AccelY, "%2.3f", fAccelScaled_y);
-        sprintf(SENSOR_DATA.AccelZ, "%2.3f", fAccelScaled_z);
+        SENSOR_DATA.AccelX = fAccelScaled_x;
+        SENSOR_DATA.AccelY = fAccelScaled_y;
+        SENSOR_DATA.AccelZ = fAccelScaled_z;
     } //bMotionSensor_present
 } //Read_motion_sensor()
 
@@ -417,150 +413,15 @@
     {
         double fTemp = hts221.readTemperature();
         double fRh = hts221.readHumidity();
-        sprintf(SENSOR_DATA.Temperature, "%0.2f", fTemp);
-        sprintf(SENSOR_DATA.Humidity, "%02d", fRh);
-        SENSOR_DATA.fTemperature = fTemp;
-        SENSOR_DATA.fHumidity = fRh;
+        SENSOR_DATA.Temperature = fTemp;
+        SENSOR_DATA.Humidity = fRh;
         
     } //bHTS221_present
 } //Read_HTS221()
 
-
-#ifdef USE_VIRTUAL_SENSORS
-bool bUsbConnected = false;
-volatile uint8_t usb_uart_rx_buff[256];
-//volatile uint8_t usb_uart_tx_buff[256];
-volatile unsigned char usb_uart_rx_buff_putptr = 0;
-volatile unsigned char usb_uart_rx_buff_getptr = 0;
-//volatile unsigned char usb_uart_tx_buff_putptr = 0;
-//volatile unsigned char usb_uart_tx_buff_getptr = 0;
-char usbhost_rx_string[256];
-unsigned char usbhost_rxstring_index;
-char usbhost_tx_string[256];
-
-
-float f_sensor1_value = 12.3;
-float f_sensor2_value = 45.6;
-float f_sensor3_value = 78.9;
-float f_sensor4_value = 78.9;
-float f_sensor5_value = 78.9;
-float f_sensor6_value = 78.9;
-float f_sensor7_value = 78.9;
-float f_sensor8_value = 78.9;
-char usb_sensor_string[110];
-
-
-//********************************************************************************************************************************************
-//* Parse the input sensor data from the USB host
-//********************************************************************************************************************************************
-int parse_usbhost_message()
-{
-    //PRINTF("String = %s\n", usbhost_rx_string); //test
-    uint8_t length;
-    uint8_t x ;
-    //It seems that sscanf needs 11 characters to store a 7-character number.  There must be some formatting and termination values...
-    char Record[8][11]; //There are 8 sensors with up to 7 characters each
-    char StringRecord[110]; //There are is a sensor "string" with up to 100 characters in it
-
-    // Data format is:  "S1:1234,S2:5678,S3:1234,S4:5678,S5:1234,S6:5678,S7:5678,S8:5678,S9:abcde...\n"
-    int args_assigned = sscanf(usbhost_rx_string, "%[^','],%[^','],%[^','],%[^','],%[^','],%[^','],%[^','],%[^','],%[^\n]", Record[0], Record[1], Record[2], Record[3], Record[4], Record[5], Record[6], Record[7],  StringRecord);
-
-    //StringRecord[109] = '\0';
-    //PRINTF("Last = %s\n", StringRecord); //test
-
-    if (args_assigned == 9)
-    { //sscanf was able to assign all 9 values
-        for (x=0; x < 8; x++)  // loop through the 8 sensors
-        {
-            // Strip the "Sx:" label characters from the field value
-            length = strlen(Record[x]);             // max of 7 characters but could be less
-            strncpy(Record[x], Record[x] + 3, length);
-            Record[x][length] = '\0';              // null termination character manually added
-        }
-        length = strlen(StringRecord);
-        strncpy(StringRecord, StringRecord + 3, length);
-        StringRecord[length] = '\0';   // null termination character manually added
-    
-        if ((usbhost_rx_string[0] == 'S') && (usbhost_rx_string[1] == '1')) //The message starts with "S1"
-        {
-            f_sensor1_value = atof(Record[0]);
-            f_sensor2_value = atof(Record[1]);
-            f_sensor3_value = atof(Record[2]);
-            f_sensor4_value = atof(Record[3]);
-            f_sensor5_value = atof(Record[4]);
-            f_sensor6_value = atof(Record[5]);
-            f_sensor7_value = atof(Record[6]);
-            f_sensor8_value = atof(Record[7]);
-            sprintf(usb_sensor_string,StringRecord);
-            //PRINTF("Received = %s, %s, %s, %s, %s, %s, %s, %s, %s\n", Record[0], Record[1], Record[2], Record[3], Record[4], Record[5], Record[6], Record[7], usb_sensor_string); //test
-            sprintf(SENSOR_DATA.Virtual_Sensor1, "%s", Record[0]);
-            sprintf(SENSOR_DATA.Virtual_Sensor2, "%s", Record[1]);
-            sprintf(SENSOR_DATA.Virtual_Sensor3, "%s", Record[2]);
-            sprintf(SENSOR_DATA.Virtual_Sensor4, "%s", Record[3]);
-            sprintf(SENSOR_DATA.Virtual_Sensor5, "%s", Record[4]);
-            sprintf(SENSOR_DATA.Virtual_Sensor6, "%s", Record[5]);
-            sprintf(SENSOR_DATA.Virtual_Sensor7, "%s", Record[6]);
-            sprintf(SENSOR_DATA.Virtual_Sensor8, "%s", Record[7]);
-        }
-    } //sscanf was able to assign all values
-    return args_assigned;
-} //parse_usbhost_message()
-
-//********************************************************************************************************************************************
-//* Process any received message from the USB host
-//********************************************************************************************************************************************
-void process_usb_rx(unsigned char ucNewRxByte)
-{
-    if (ucNewRxByte == '?')
-    { //just pinging
-        usbhost_rxstring_index = 0;
-        return;
-    } //just pinging
-    usbhost_rx_string[usbhost_rxstring_index++] = ucNewRxByte;
-    if (ucNewRxByte == '\n')
-    { //end of message
-        usbhost_rx_string[usbhost_rxstring_index] = 0; //null terminate string
-        usbhost_rxstring_index = 0;
-        parse_usbhost_message();
-    } //end of message
-} //process_usb_rx()
-
-void ProcessUsbInterface(void)
-{
-    //Process the USB host UART receive commands:
-    if (usb_uart_rx_buff_getptr != usb_uart_rx_buff_putptr)
-    {
-        bUsbConnected = true;
-        while (usb_uart_rx_buff_getptr != usb_uart_rx_buff_putptr)
-        {
-            unsigned char ucByteFromHost = usb_uart_rx_buff[usb_uart_rx_buff_getptr++]; //Copy latest received byte
-            process_usb_rx(ucByteFromHost);
-        }  //while (usb_uart_rx_buff_getptr != usb_uart_rx_buff_putptr)
-    } // if there are USB UART bytes to receive
-    //USB host UART transmit:
-    //while (usb_uart_tx_buff_getptr != usb_uart_tx_buff_putptr)
-    //{
-        //pc.putc(usb_uart_tx_buff[usb_uart_tx_buff_getptr++]);
-    //}
-} //ProcessUsbInterface()
-
-// This function is called when a character goes into the RX buffer.
-void UsbUartRxCallback(MODSERIAL_IRQ_INFO *info) 
-{
-    // Get the pointer to our MODSERIAL object that invoked this callback.
-    MODSERIAL *pc = info->serial;
-    while (pc->readable())
-    {
-        usb_uart_rx_buff[usb_uart_rx_buff_putptr++] = pc->getcNb();
-    }
-}
-#endif
  
 void sensors_init(void)
 {
-#ifdef USE_VIRTUAL_SENSORS
-   pc.attach(&UsbUartRxCallback, MODSERIAL::RxIrq);
-#endif
     Init_HTS221();
     Init_Si7020();
     Init_Si1145();