1d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ 2d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 3d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen/* 4d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen Part of the Wiring project - http://wiring.org.co 5d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen Copyright (c) 2004-06 Hernando Barragan 6d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/ 7d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 8d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen This library is free software; you can redistribute it and/or 9d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen modify it under the terms of the GNU Lesser General Public 10d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen License as published by the Free Software Foundation; either 11d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen version 2.1 of the License, or (at your option) any later version. 12d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 13d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen This library is distributed in the hope that it will be useful, 14d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen but WITHOUT ANY WARRANTY; without even the implied warranty of 15d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen Lesser General Public License for more details. 17d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 18d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen You should have received a copy of the GNU Lesser General 19d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen Public License along with this library; if not, write to the 20d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen Free Software Foundation, Inc., 59 Temple Place, Suite 330, 21d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen Boston, MA 02111-1307 USA 22d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 23d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen $Id$ 24d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen*/ 25d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 26d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chenextern "C" { 27d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen #include "stdlib.h" 28d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen} 29d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 30d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chenvoid randomSeed(unsigned int seed) 31d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen{ 32d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen if (seed != 0) { 33d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen srandom(seed); 34d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen } 35d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen} 36d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 37d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chenlong random(long howbig) 38d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen{ 39d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen if (howbig == 0) { 40d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen return 0; 41d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen } 42d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen return random() % howbig; 43d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen} 44d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 45d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chenlong random(long howsmall, long howbig) 46d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen{ 47d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen if (howsmall >= howbig) { 48d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen return howsmall; 49d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen } 50d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen long diff = howbig - howsmall; 51d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen return random(diff) + howsmall; 52d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen} 53d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 54d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chenlong map(long x, long in_min, long in_max, long out_min, long out_max) 55d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen{ 56d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; 57d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen} 58d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chen 59d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chenunsigned int makeWord(unsigned int w) { return w; } 60d5790d78880d4bd60be277ee20e53a851aa8c11Mike J. Chenunsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; }