Demo fro training

Dependencies:   X_NUCLEO_IKS01A1 d7a_1x mbed-rtos mbed wizzi-utils

Committer:
mikl_andre
Date:
Mon Nov 21 07:24:34 2016 +0000
Revision:
0:429446fe396d
Initial Revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikl_andre 0:429446fe396d 1 #include "mbed.h"
mikl_andre 0:429446fe396d 2 #include "simul.h"
mikl_andre 0:429446fe396d 3 #include "dbg.h"
mikl_andre 0:429446fe396d 4
mikl_andre 0:429446fe396d 5
mikl_andre 0:429446fe396d 6 unsigned int m_z=12434,m_w=33254;
mikl_andre 0:429446fe396d 7
mikl_andre 0:429446fe396d 8 unsigned int rnd() {
mikl_andre 0:429446fe396d 9 m_z = 36969 * (m_z & 65535) + (m_z >>16);
mikl_andre 0:429446fe396d 10 m_w = 18000 * (m_w & 65535) + (m_w >>16);
mikl_andre 0:429446fe396d 11 return ((m_z <<16) + m_w);
mikl_andre 0:429446fe396d 12 }
mikl_andre 0:429446fe396d 13
mikl_andre 0:429446fe396d 14 uint32_t g_simul_divider = 500;
mikl_andre 0:429446fe396d 15
mikl_andre 0:429446fe396d 16 void update_simul_param(uint32_t value)
mikl_andre 0:429446fe396d 17 {
mikl_andre 0:429446fe396d 18 g_simul_divider = value;
mikl_andre 0:429446fe396d 19 }
mikl_andre 0:429446fe396d 20
mikl_andre 0:429446fe396d 21 bool simul_sensor_value(int32_t* buf, uint32_t nb_values, int32_t min, int32_t max)
mikl_andre 0:429446fe396d 22 {
mikl_andre 0:429446fe396d 23 for (uint8_t i = 0; i < nb_values; i++)
mikl_andre 0:429446fe396d 24 {
mikl_andre 0:429446fe396d 25 int32_t new_value;
mikl_andre 0:429446fe396d 26
mikl_andre 0:429446fe396d 27 uint32_t r = rnd()%g_simul_divider;
mikl_andre 0:429446fe396d 28
mikl_andre 0:429446fe396d 29 if (r)
mikl_andre 0:429446fe396d 30 {
mikl_andre 0:429446fe396d 31 if (r%2)
mikl_andre 0:429446fe396d 32 {
mikl_andre 0:429446fe396d 33 new_value = buf[i] + 1;
mikl_andre 0:429446fe396d 34 }
mikl_andre 0:429446fe396d 35 else
mikl_andre 0:429446fe396d 36 {
mikl_andre 0:429446fe396d 37 new_value = buf[i] - 1;
mikl_andre 0:429446fe396d 38 }
mikl_andre 0:429446fe396d 39
mikl_andre 0:429446fe396d 40 if (new_value > max)
mikl_andre 0:429446fe396d 41 {
mikl_andre 0:429446fe396d 42 new_value = max;
mikl_andre 0:429446fe396d 43 }
mikl_andre 0:429446fe396d 44
mikl_andre 0:429446fe396d 45 if (new_value < min)
mikl_andre 0:429446fe396d 46 {
mikl_andre 0:429446fe396d 47 new_value = min;
mikl_andre 0:429446fe396d 48 }
mikl_andre 0:429446fe396d 49 }
mikl_andre 0:429446fe396d 50 else
mikl_andre 0:429446fe396d 51 {
mikl_andre 0:429446fe396d 52 new_value = (rnd()%(max - min)) + min;
mikl_andre 0:429446fe396d 53 }
mikl_andre 0:429446fe396d 54
mikl_andre 0:429446fe396d 55 buf[i] = new_value;
mikl_andre 0:429446fe396d 56 }
mikl_andre 0:429446fe396d 57
mikl_andre 0:429446fe396d 58 return false;
mikl_andre 0:429446fe396d 59 }
mikl_andre 0:429446fe396d 60