Project

General

Profile

Revision 1991

Updated some random number generators to have more entropy.

View differences:

trunk/code/projects/traffic_navigation/validTurns.c
22 22
#define SHIFT(s)( (s)<<1)
23 23
#define RESEED(s)( (s)=( ( ((GET16(s)^GET14(s))^GET13(s))^GET11(s) ) | SHIFT(s) ) )/*reseeding the first bit of the number with bits from the number*/
24 24

  
25
unsigned int seed = 0xC0DE;
26
int randomNumGen(int max){
27
	//int a = 0;    // not currently in use
28
	//int b = 0xBEEF;
29
	seed++;
30
	return seed%4;	
25
unsigned int turnseed = 0xC0DE;
26
int resolvRandomNumberGen(int max){
27
	turnseed *= (rtc_get() + encoder_read(LEFT))%9;
28
	return turnseed % max;
31 29
}
32 30

  
33 31
/*
34
int randomNumGen(int max){
35
	return rtc_get() % max;
36
}
37
int randomNumGen(int max){
38
	int a = 1337;
39
	int b = 0xDEADBEEF;
40
	seed++;
41
	return seed%max;	
42
}
43
*/
44

  
45
/*
46 32
int getIntersectType(int barcode)
47 33
{
48 34
	return randomNumGen(5);
......
54 40
}
55 41
*/
56 42

  
57
int getTurnType(int barcode)
43
char getTurnType(char barcode)
58 44
{
59 45
	return randomNumGen(4);
60 46
}
trunk/code/projects/traffic_navigation/main-new.c
9 9

  
10 10
#include "traffic_navigation.h"
11 11
#include "../linefollowing/lineDrive.h"
12
#define ORB_INTERSECTION
13
#define DEBUG_INTERSECTION
12 14
#ifdef MAIN_NEW
13 15

  
14 16
#ifdef ORB_INTERSECTION
......
50 52
	id = get_robotid();
51 53
	sign = 0;
52 54
	ORB1_DBG_CLR(GREEN);
53
	delay_ms(1000);
55
	delay_ms(500);
54 56
	ORB1_DBG_CLR(ORB_OFF);
55 57
	
56 58
	//Test code
......
89 91
					default:
90 92
						//we have a barcode!
91 93
						state = SINTERSECTION_ENTER;
94
						usb_puts("Read Barcode #:");
95
						usb_puti(sign);
96
						usb_putc('\n');
92 97
						done = true;
93 98
						break;
94 99

  
......
117 122
			intersectionNum = getIntersectNum(sign);
118 123
			if(intersectionNum == (char) -1){ //invalid
119 124
				state = SROAD;
125
				usb_puts("Barcode has invalid intersectionNum\n");
120 126
				break;
121 127
			}
122 128
			turnDir = validateTurn(sign, getTurnType(sign));
123 129
			if(turnDir == (char) -1){ //invalid
124 130
				state = SROAD;
131
				usb_puts("Barcode has invalid turn\n");
125 132
				break;
126 133
			}
127 134

  
......
487 494
}
488 495

  
489 496
unsigned char resolvRandomNumberGen(){
490
	if ((resolvSeed *= (rtc_get())%9) == 0){
497
	if ((resolvSeed *= (rtc_get() + encoder_read(LEFT))%9) == 0){
491 498
		return resolvSeed + 1; //0 is a reseved priority value for the last
492 499
		                 //bot that is already in the queue.
493 500
	}

Also available in: Unified diff