df

Dependencies:   mbed

Fork of APP1 by Team APP

Committer:
dupm2216
Date:
Tue Jan 17 00:06:38 2017 +0000
Revision:
15:b38d9d210e32
Parent:
13:bb9669053eb3
Child:
18:a21199781d20
Fini?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dupm2216 6:3facf0329142 1 #include "Utility.hpp"
dupm2216 15:b38d9d210e32 2 #include "mbed.h"
dupm2216 6:3facf0329142 3
dupm2216 6:3facf0329142 4 #include <cmath>
dupm2216 6:3facf0329142 5
dupm2216 6:3facf0329142 6 namespace utility
dupm2216 6:3facf0329142 7 {
dupm2216 6:3facf0329142 8 bool is_almost_equal(double a, double b, double tolerance)
dupm2216 6:3facf0329142 9 {
dupm2216 6:3facf0329142 10 double difference = std::abs(a-b);
dupm2216 6:3facf0329142 11 return (difference <= tolerance);
dupm2216 6:3facf0329142 12 }
dupm2216 6:3facf0329142 13
dupm2216 6:3facf0329142 14 //Return angle between 0 and 360 degree
dupm2216 6:3facf0329142 15 double wrap_angle(double angle)
dupm2216 6:3facf0329142 16 {
dupm2216 6:3facf0329142 17 return angle - 360 * std::floor( angle / 360 );
dupm2216 6:3facf0329142 18 }
dupm2216 6:3facf0329142 19
dupm2216 6:3facf0329142 20 double degree_from_radian(const double angle_radian)
dupm2216 6:3facf0329142 21 {
dupm2216 6:3facf0329142 22 const double angle_degree = angle_radian * 180.0 / PI;
dupm2216 6:3facf0329142 23 return wrap_angle(angle_degree);
dupm2216 6:3facf0329142 24 }
GaiSensei 12:1c341b119b23 25
GaiSensei 13:bb9669053eb3 26 unsigned int update_bit(const unsigned int previous_4_bytes, const int position, const bool new_bit_value)
GaiSensei 13:bb9669053eb3 27 {
dupm2216 15:b38d9d210e32 28 return update_bits(previous_4_bytes, position, position, 0xFFFFFFFF, new_bit_value);
GaiSensei 13:bb9669053eb3 29 }
GaiSensei 13:bb9669053eb3 30
dupm2216 15:b38d9d210e32 31 unsigned int update_bits(const unsigned int previous_4_bytes, const int start_bit, const int stop_bit, const unsigned int reserved_bits_mask, const unsigned int new_bits)
GaiSensei 12:1c341b119b23 32 {
dupm2216 15:b38d9d210e32 33 const unsigned int all_ones_but_n_zeros_right_shifted = (0xFFFFFFFF << (stop_bit - start_bit + 1));
dupm2216 15:b38d9d210e32 34 const unsigned int all_zeros_but_n_ones_right_shifted = ~all_ones_but_n_zeros_right_shifted;
dupm2216 15:b38d9d210e32 35
dupm2216 15:b38d9d210e32 36 const unsigned int all_zeros_but_ones_at_position = all_zeros_but_n_ones_right_shifted << start_bit;
dupm2216 15:b38d9d210e32 37 const unsigned int all_ones_but_zeros_at_position = ~all_zeros_but_ones_at_position;
dupm2216 15:b38d9d210e32 38
dupm2216 15:b38d9d210e32 39 const unsigned int all_zeros_but_new_bits_at_position = new_bits << start_bit;
dupm2216 15:b38d9d210e32 40 const unsigned int all_unchanged_but_zeros_at_position = previous_4_bytes & all_ones_but_zeros_at_position;
dupm2216 15:b38d9d210e32 41 const unsigned int all_unchanged_but_new_bit_value_at_position = all_unchanged_but_zeros_at_position | all_zeros_but_new_bits_at_position;
dupm2216 15:b38d9d210e32 42
dupm2216 15:b38d9d210e32 43 const unsigned int updated_bits_with_reserved_bits_at_zero = all_unchanged_but_new_bit_value_at_position & reserved_bits_mask;
GaiSensei 13:bb9669053eb3 44
dupm2216 15:b38d9d210e32 45 return updated_bits_with_reserved_bits_at_zero;
dupm2216 15:b38d9d210e32 46 }
dupm2216 15:b38d9d210e32 47
dupm2216 15:b38d9d210e32 48 void blink()
dupm2216 15:b38d9d210e32 49 {
dupm2216 15:b38d9d210e32 50 DigitalOut led(LED1);
dupm2216 15:b38d9d210e32 51 while(1)
dupm2216 15:b38d9d210e32 52 {
dupm2216 15:b38d9d210e32 53 led = 1;
dupm2216 15:b38d9d210e32 54 wait(0.2);
dupm2216 15:b38d9d210e32 55 led = 0;
dupm2216 15:b38d9d210e32 56 wait(0.2);
dupm2216 15:b38d9d210e32 57 }
GaiSensei 12:1c341b119b23 58 }
dupm2216 9:12519f9dd3cd 59 }