F742ZG

Dependencies:   mbed X_NUCLEO_IKS01A2 mbed-rtos

Dependents:   ros_button_2021 test test2

Files at this revision

API Documentation at this revision

Comitter:
howanglam3
Date:
Sat Jun 12 16:01:51 2021 +0000
Parent:
0:4e088cbb2dbf
Commit message:
use as library

Changed in this revision

main.cpp Show diff for this revision Revisions of this file
main.txt Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Oct 23 07:11:35 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,237 +0,0 @@
-#include "mbed.h"
-#include "rtos/rtos.h"
-#include "Teseo-LIV3F.h"
-#include <cstdlib>
-#include <vector>
-#include "XNucleoIKS01A2.h"
-
-/*cose per gps*/
-static Thread t1;
-static Thread t2;
-
-static Mutex data_access;
-
-static Timer system_timer;
-static Serial usb_serial(USBTX, USBRX, 9600);
-static Serial *serial_debug= &usb_serial;
-
-
-static Teseo_LIV3F Teseo(D8,       D13,        D6,      PE_7,          PE_8,          &usb_serial);
-
-
-struct gps_coordinate{
-    float lat;
-    char lat_cardinal;
-    float longitud;
-    char long_cardinal;
-    bool valid;
-    
-    
-    
-    };
-    
-    gps_coordinate myPosition;
-
-
-
-/*cose per sensori*/
-
-static Thread t3;
-
-static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5);
-
-
-/* Retrieve the composing elements of the expansion board */
-static LSM303AGRMagSensor *magnetometer = mems_expansion_board->magnetometer;
-static HTS221Sensor *hum_temp = mems_expansion_board->ht_sensor;
-static LPS22HBSensor *press_temp = mems_expansion_board->pt_sensor;
-static LSM6DSLSensor *acc_gyro = mems_expansion_board->acc_gyro;
-static LSM303AGRAccSensor *accelerometer = mems_expansion_board->accelerometer;
-
-void f1 (){
-    
-    enum nmea_msg_id id;
-    
-    
-  
-
-
-    Teseo.Reset(serial_debug);
-    Teseo.startListener(serial_debug);
-
-    while(1) {
-        osEvent evt = Teseo.queue.get();
-        if (evt.status == osEventMessage) {
-            struct teseo_msg *message = (struct teseo_msg *)evt.value.p;
-            if (message->len){
-                id = Teseo.MsgDetect(message->buf, message->len, serial_debug);
-                
-           }
-           
-           if (id==1){
-               
-               
-               
-               
-               //da qui converto il messaggio in coordinate//
-               data_access.lock();
-               
-               vector<char> pos;
-              
-               
-               //latitudine
-             // printf ("latitudine=");
-               
-               int cursor;
-               for (int i=7;;i++){
-                   cursor=i;
-                   if (message->buf[i] == ',')
-                        break;
-                   pos.push_back(message->buf[i]);
-                  
-                  
-                }
-            
-       
-                //ma quanto è cool? conversione da vector ad array e poi a float
-                myPosition.lat=  atof (&pos[0]);
-            //    printf ("%f",myPosition.lat);
-             //   printf ("  ");
-                
-                myPosition.lat_cardinal= message->buf[cursor+1];
-              //  printf ("%c   ",myPosition.lat_cardinal);
-                
-                pos.clear();
-                
-                
-              //  printf ("longitudine=");
-               
-               
-               for (int i=cursor+3;;i++){
-                   cursor=i;
-                   if (message->buf[i] == ',')
-                        break;
-                   pos.push_back(message->buf[i]);
-                  
-                  
-                }
-            
-       
-                
-                myPosition.longitud=  atof (&pos[0]);
-              //  printf ("%f",myPosition.longitud);
-              //  printf ("  ");
-                
-                myPosition.long_cardinal= message->buf[cursor+1];
-               // printf ("%c   ",myPosition.long_cardinal);
-                
-                for (int i=cursor+3;;i++){
-                   cursor=i;
-                   if (message->buf[i] == 'A' ){
-                        myPosition.valid=true;
-                        break;
-                    }else if (message->buf[i] == 'V' ) {
-                        myPosition.valid=false;
-                        break;
-                                                
-                    }
-                   
-                  
-                  
-                }
-                
-                if (myPosition.valid==true){
-                  // printf ("Valid");
-                   }
-                   
-                   
-                if (myPosition.valid==false){
-                   //printf ("Not Valid");
-                   }
-               
-               
-               data_access.unlock();
-               
-              // printf ("\n\r");
-               
-               }
-           
-
-            Teseo.mpool.free(message);
-        }
-
-    }
-    
-}
-
-
-
-void f2 (){
-   Thread::wait (1000);
- 
-   Thread::wait (2000);
-   while (true){ 
-   Thread::wait (3000);
-        data_access.lock();
-    
-        printf ("lat:%f %c, lon:%f %c, %d\n\r",myPosition.lat,myPosition.lat_cardinal, myPosition.longitud, myPosition.long_cardinal, myPosition.valid );
-    
-    
-    
-        data_access.unlock();
-    }
-    
-}
-
-
-void accgyro_thread(){
-    
-    uint8_t id;
-  float value1, value2;
-  char buffer1[32], buffer2[32];
-  int32_t axes[3];
-  int32_t axesOld[3];
-  float odr =208.0f;
-  
-  
-  /* Enable all sensors */
-  
-  accelerometer->enable();
-  acc_gyro->enable_x();
-  acc_gyro->enable_g();
-  acc_gyro->set_g_odr (odr);
-  
-  while (true){
-    
-    Thread::wait (5000);
-    
-    
-    acc_gyro->get_g_axes(axes);
-    printf("LSM6DSL [gyro/mdps]:   %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
-    
-    
-    acc_gyro->get_x_axes(axes);
-   printf("LSM6DSL [acc/mg]:      %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
-
-    
-    
-    }
-    
-    
-}
-
-
-
-
-int main() {
-    
-    t1.start(f1);
-   
-    t2.start (f2);
-    
-    t3.start (accgyro_thread);
-    
-    
-    
-    
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.txt	Sat Jun 12 16:01:51 2021 +0000
@@ -0,0 +1,237 @@
+#include "mbed.h"
+#include "rtos/rtos.h"
+#include "Teseo-LIV3F.h"
+#include <cstdlib>
+#include <vector>
+#include "XNucleoIKS01A2.h"
+
+/*cose per gps*/
+static Thread t1;
+static Thread t2;
+
+static Mutex data_access;
+
+static Timer system_timer;
+static Serial usb_serial(USBTX, USBRX, 9600);
+static Serial *serial_debug= &usb_serial;
+
+
+static Teseo_LIV3F Teseo(D8,       D13,        D6,      PE_7,          PE_8,          &usb_serial);
+
+
+struct gps_coordinate{
+    float lat;
+    char lat_cardinal;
+    float longitud;
+    char long_cardinal;
+    bool valid;
+    
+    
+    
+    };
+    
+    gps_coordinate myPosition;
+
+
+
+/*cose per sensori*/
+
+static Thread t3;
+
+static XNucleoIKS01A2 *mems_expansion_board = XNucleoIKS01A2::instance(D14, D15, D4, D5);
+
+
+/* Retrieve the composing elements of the expansion board */
+static LSM303AGRMagSensor *magnetometer = mems_expansion_board->magnetometer;
+static HTS221Sensor *hum_temp = mems_expansion_board->ht_sensor;
+static LPS22HBSensor *press_temp = mems_expansion_board->pt_sensor;
+static LSM6DSLSensor *acc_gyro = mems_expansion_board->acc_gyro;
+static LSM303AGRAccSensor *accelerometer = mems_expansion_board->accelerometer;
+
+void f1 (){
+    
+    enum nmea_msg_id id;
+    
+    
+  
+
+
+    Teseo.Reset(serial_debug);
+    Teseo.startListener(serial_debug);
+
+    while(1) {
+        osEvent evt = Teseo.queue.get();
+        if (evt.status == osEventMessage) {
+            struct teseo_msg *message = (struct teseo_msg *)evt.value.p;
+            if (message->len){
+                id = Teseo.MsgDetect(message->buf, message->len, serial_debug);
+                
+           }
+           
+           if (id==1){
+               
+               
+               
+               
+               //da qui converto il messaggio in coordinate//
+               data_access.lock();
+               
+               vector<char> pos;
+              
+               
+               //latitudine
+             // printf ("latitudine=");
+               
+               int cursor;
+               for (int i=7;;i++){
+                   cursor=i;
+                   if (message->buf[i] == ',')
+                        break;
+                   pos.push_back(message->buf[i]);
+                  
+                  
+                }
+            
+       
+                //ma quanto è cool? conversione da vector ad array e poi a float
+                myPosition.lat=  atof (&pos[0]);
+            //    printf ("%f",myPosition.lat);
+             //   printf ("  ");
+                
+                myPosition.lat_cardinal= message->buf[cursor+1];
+              //  printf ("%c   ",myPosition.lat_cardinal);
+                
+                pos.clear();
+                
+                
+              //  printf ("longitudine=");
+               
+               
+               for (int i=cursor+3;;i++){
+                   cursor=i;
+                   if (message->buf[i] == ',')
+                        break;
+                   pos.push_back(message->buf[i]);
+                  
+                  
+                }
+            
+       
+                
+                myPosition.longitud=  atof (&pos[0]);
+              //  printf ("%f",myPosition.longitud);
+              //  printf ("  ");
+                
+                myPosition.long_cardinal= message->buf[cursor+1];
+               // printf ("%c   ",myPosition.long_cardinal);
+                
+                for (int i=cursor+3;;i++){
+                   cursor=i;
+                   if (message->buf[i] == 'A' ){
+                        myPosition.valid=true;
+                        break;
+                    }else if (message->buf[i] == 'V' ) {
+                        myPosition.valid=false;
+                        break;
+                                                
+                    }
+                   
+                  
+                  
+                }
+                
+                if (myPosition.valid==true){
+                  // printf ("Valid");
+                   }
+                   
+                   
+                if (myPosition.valid==false){
+                   //printf ("Not Valid");
+                   }
+               
+               
+               data_access.unlock();
+               
+              // printf ("\n\r");
+               
+               }
+           
+
+            Teseo.mpool.free(message);
+        }
+
+    }
+    
+}
+
+
+
+void f2 (){
+   Thread::wait (1000);
+ 
+   Thread::wait (2000);
+   while (true){ 
+   Thread::wait (3000);
+        data_access.lock();
+    
+        printf ("lat:%f %c, lon:%f %c, %d\n\r",myPosition.lat,myPosition.lat_cardinal, myPosition.longitud, myPosition.long_cardinal, myPosition.valid );
+    
+    
+    
+        data_access.unlock();
+    }
+    
+}
+
+
+void accgyro_thread(){
+    
+    uint8_t id;
+  float value1, value2;
+  char buffer1[32], buffer2[32];
+  int32_t axes[3];
+  int32_t axesOld[3];
+  float odr =208.0f;
+  
+  
+  /* Enable all sensors */
+  
+  accelerometer->enable();
+  acc_gyro->enable_x();
+  acc_gyro->enable_g();
+  acc_gyro->set_g_odr (odr);
+  
+  while (true){
+    
+    Thread::wait (5000);
+    
+    
+    acc_gyro->get_g_axes(axes);
+    printf("LSM6DSL [gyro/mdps]:   %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
+    
+    
+    acc_gyro->get_x_axes(axes);
+   printf("LSM6DSL [acc/mg]:      %6ld, %6ld, %6ld\r\n", axes[0], axes[1], axes[2]);
+
+    
+    
+    }
+    
+    
+}
+
+
+
+
+int main() {
+    
+    t1.start(f1);
+   
+    t2.start (f2);
+    
+    t3.start (accgyro_thread);
+    
+    
+    
+    
+}