ECE 2036 Project

Dependencies:   mbed wave_player 4DGL-uLCD-SE

Committer:
rconnorlawson
Date:
Fri Nov 03 18:48:48 2017 +0000
Revision:
0:cf4396614a79
Emptied shell code (including doubly linked list) and added comments for all the functionality.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rconnorlawson 0:cf4396614a79 1 #include "math_extra.h"
rconnorlawson 0:cf4396614a79 2 #include <stdint.h>
rconnorlawson 0:cf4396614a79 3
rconnorlawson 0:cf4396614a79 4 int in_range(int x, int lower, int upper)
rconnorlawson 0:cf4396614a79 5 {
rconnorlawson 0:cf4396614a79 6 return (x > lower && x < upper);
rconnorlawson 0:cf4396614a79 7 }
rconnorlawson 0:cf4396614a79 8
rconnorlawson 0:cf4396614a79 9 float clamp(float x, float limit)
rconnorlawson 0:cf4396614a79 10 {
rconnorlawson 0:cf4396614a79 11 x = (x > limit) ? limit : x;
rconnorlawson 0:cf4396614a79 12 x = (x < -limit) ? -limit : x;
rconnorlawson 0:cf4396614a79 13 return x;
rconnorlawson 0:cf4396614a79 14 }
rconnorlawson 0:cf4396614a79 15
rconnorlawson 0:cf4396614a79 16 int sgn(float x)
rconnorlawson 0:cf4396614a79 17 {
rconnorlawson 0:cf4396614a79 18 return (x > 0.0) - (x < 0.0);
rconnorlawson 0:cf4396614a79 19 }
rconnorlawson 0:cf4396614a79 20
rconnorlawson 0:cf4396614a79 21 float coin_flip()
rconnorlawson 0:cf4396614a79 22 {
rconnorlawson 0:cf4396614a79 23 // Compute psuedorandom numbers! Don't worry about how this works.
rconnorlawson 0:cf4396614a79 24 // If you really must know, search for "Linear-feedback shift register"
rconnorlawson 0:cf4396614a79 25 static uint16_t rand = 0xA1B2;
rconnorlawson 0:cf4396614a79 26 uint16_t bit = ((rand >> 0) ^ (rand >> 2) ^ (rand >> 3) ^ (rand >> 5) ) & 1;
rconnorlawson 0:cf4396614a79 27 rand = (rand >> 1) | (bit << 15);
rconnorlawson 0:cf4396614a79 28 return (rand & 1) ? 1.0 : -1.0;
rconnorlawson 0:cf4396614a79 29 }