Unina Corse EL / Mbed 2 deprecated f4_sd_imu_4

Dependencies:   SDFileSystem_conMOD mbed-rtos mbed

Fork of f4_sd_imu_4 by ratto killer

Committer:
rattokiller
Date:
Sun Jan 21 20:40:24 2018 +0000
Revision:
11:3b5e035ffef9
programma con scrittura sd con concorenza

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rattokiller 11:3b5e035ffef9 1 char num_n0(int a){
rattokiller 11:3b5e035ffef9 2 return a%256;
rattokiller 11:3b5e035ffef9 3 }
rattokiller 11:3b5e035ffef9 4 char num_n1(int a){
rattokiller 11:3b5e035ffef9 5 return (char)( a / 256);
rattokiller 11:3b5e035ffef9 6 }
rattokiller 11:3b5e035ffef9 7
rattokiller 11:3b5e035ffef9 8 typedef struct {
rattokiller 11:3b5e035ffef9 9 char ax[2];
rattokiller 11:3b5e035ffef9 10 char ay[2];
rattokiller 11:3b5e035ffef9 11 char az[2];
rattokiller 11:3b5e035ffef9 12 char gx[2];
rattokiller 11:3b5e035ffef9 13 char gy[2];
rattokiller 11:3b5e035ffef9 14 char gz[2];
rattokiller 11:3b5e035ffef9 15 } message_t;
rattokiller 11:3b5e035ffef9 16
rattokiller 11:3b5e035ffef9 17 void copia(message_t & a, message_t b){
rattokiller 11:3b5e035ffef9 18 for(int i=0;i<2;i++){
rattokiller 11:3b5e035ffef9 19 a.ax[i]=b.ax[i];
rattokiller 11:3b5e035ffef9 20 a.ay[i]=b.ay[i];
rattokiller 11:3b5e035ffef9 21 a.az[i]=b.az[i];
rattokiller 11:3b5e035ffef9 22 a.gx[i]=b.gx[i];
rattokiller 11:3b5e035ffef9 23 a.gy[i]=b.gy[i];
rattokiller 11:3b5e035ffef9 24 a.gz[i]=b.gz[i];
rattokiller 11:3b5e035ffef9 25
rattokiller 11:3b5e035ffef9 26 }
rattokiller 11:3b5e035ffef9 27
rattokiller 11:3b5e035ffef9 28 }
rattokiller 11:3b5e035ffef9 29 void scrivi_imu(message_t* );
rattokiller 11:3b5e035ffef9 30 MemoryPool<message_t, 16> mpool;
rattokiller 11:3b5e035ffef9 31 Queue<message_t, 16> queue;
rattokiller 11:3b5e035ffef9 32
rattokiller 11:3b5e035ffef9 33 /* Send Thread */
rattokiller 11:3b5e035ffef9 34 void invia_m (int ax,int ay,int az,int gx,int gy,int gz) {
rattokiller 11:3b5e035ffef9 35
rattokiller 11:3b5e035ffef9 36 {
rattokiller 11:3b5e035ffef9 37
rattokiller 11:3b5e035ffef9 38 message_t *message = mpool.alloc();
rattokiller 11:3b5e035ffef9 39 message->ax[0] = num_n0(ax); message->ax[1] = num_n1(ax);
rattokiller 11:3b5e035ffef9 40 message->ay[0] = num_n0(ay); message->ay[1] = num_n1(ay);
rattokiller 11:3b5e035ffef9 41 message->az[0] = num_n0(az); message->az[1] = num_n1(az);
rattokiller 11:3b5e035ffef9 42 message->gx[0] = num_n0(gx); message->gx[1] = num_n1(gx);
rattokiller 11:3b5e035ffef9 43 message->gy[0] = num_n0(gy); message->gy[1] = num_n1(gy);
rattokiller 11:3b5e035ffef9 44 message->gz[0] = num_n0(gz); message->gz[1] = num_n1(gz);
rattokiller 11:3b5e035ffef9 45 queue.put(message);
rattokiller 11:3b5e035ffef9 46 Thread::wait(1000);
rattokiller 11:3b5e035ffef9 47 }
rattokiller 11:3b5e035ffef9 48 }
rattokiller 11:3b5e035ffef9 49
rattokiller 11:3b5e035ffef9 50 void scrivi_m(void) {
rattokiller 11:3b5e035ffef9 51
rattokiller 11:3b5e035ffef9 52
rattokiller 11:3b5e035ffef9 53 while (true) {
rattokiller 11:3b5e035ffef9 54 Thread::wait(0.001);
rattokiller 11:3b5e035ffef9 55 osEvent evt = queue.get();
rattokiller 11:3b5e035ffef9 56 while (evt.status == osEventMessage) {
rattokiller 11:3b5e035ffef9 57 message_t *message = (message_t*)evt.value.p;
rattokiller 11:3b5e035ffef9 58
rattokiller 11:3b5e035ffef9 59
rattokiller 11:3b5e035ffef9 60 scrivi_imu(message);
rattokiller 11:3b5e035ffef9 61
rattokiller 11:3b5e035ffef9 62
rattokiller 11:3b5e035ffef9 63 mpool.free(message);
rattokiller 11:3b5e035ffef9 64 osEvent evt = queue.get();
rattokiller 11:3b5e035ffef9 65 }
rattokiller 11:3b5e035ffef9 66 }
rattokiller 11:3b5e035ffef9 67 }