#ifndef Entropy_h #define Entropy_h #include // Separate the ARM Due headers we use #ifdef ARDUINO_SAM_DUE #include #include #endif // Teensy required headers #ifdef TEENSYDUINO #include #endif // Separate AVR headers from ARM headers #ifdef __AVR__ #include #include #include #endif const uint32_t WDT_RETURN_BYTE=256; const uint32_t WDT_RETURN_WORD=65536; union ENTROPY_LONG_WORD { uint32_t int32; uint16_t int16[2]; uint8_t int8[4]; }; class EntropyClass { public: void initialize(void); uint32_t random(void); uint32_t random(uint32_t max); uint32_t random(uint32_t min, uint32_t max); uint8_t randomByte(void); uint16_t randomWord(void); float randomf(void); float randomf(float max); float randomf(float min, float max); float rnorm(float mean, float stdDev); uint8_t available(void); private: ENTROPY_LONG_WORD share_entropy; uint32_t retVal; uint8_t random8(void); uint16_t random16(void); }; extern EntropyClass Entropy; #endif