Gordon Sulc
/
Bee
Diff: bees.cpp
- Revision:
- 0:178a07cd3e39
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bees.cpp Fri Dec 16 03:45:52 2011 +0000 @@ -0,0 +1,138 @@ +#include "bees.h" + +int find_pollen() { + return 1; +} +int return_home() { + return 1; +} +int send_directions() { + //while(!xbee.readable()) {} + //read header + + //read contents + int i = 0; + while(1){ + xbee.putc(directions[i] + 2); + if(DEBUG) + pc.printf("Sending %d\n\r", directions[i]); + if(directions[i] == TERMINATE_CHAR) { + if (DEBUG) + pc.printf("Successfully transfered directions.\n\r"); + return 1; + } + i++; + } + + if (DEBUG) + pc.printf("Error writing directions.\n\r"); + return 0; +} + +/********************************************************* + Name: get_directions + inputs: + void + outputs: + int: 1 = completed sucessfully; 0 = unsuccessful + Purpose: gets directions on where to move +*********************************************************/ +int get_directions() { + //int buff[DIRECTIONS]; + int i; + // wait until the xbee can be read + //while(!xbee.readable()) {} + //read header + + //read contents + i = 0; + while(1){ + directions[i] = xbee.getc() - 2; + if (DEBUG) + pc.printf("dir %d\n\r", directions[i]); + if(directions[i] == TERMINATE_CHAR) + return 1; //successfully transfered directions + i++; + } + + if (DEBUG) + pc.printf("Error reading directions.\n\r"); + return 0; +} + +int gather() { + return 1; +} + +int goto_pollen() { + return 1; +} + +void blaze() { + int i; + for (i = 0; i < (2*DIRECTIONS); i++) { + directions[i] = rand() % 3 - 1; + directions[++i] = rand() % 20 + 51; + if(DEBUG){ + pc.printf("Directions: %d, %d\n\r", directions[i-1], directions[i]); + } + } + directions[i] = TERMINATE_CHAR; + if(DEBUG) + pc.printf("Temrinate\n\r"); +} + +int copy() { + static int direct = 0; + static int state = 0; + + /*if(dotype == GetMove) { + current_move = directions[direct]; + + }*/ + + //else if (dotype == DoMove) { + + static int current_move; + + if(state == 0) { + current_move = directions[direct]; + if(DEBUG) + pc.printf("Oh! got the Move! %d\n\r", current_move); + state = 1; + } + else if (state == 2) { + if(move_state == Stopped) + state = 0; + if(DEBUG) + pc.printf("Waiting for Next Move\n\r"); + } + + else if (state == 1) { + if (current_move == TERMINATE_CHAR) { + l_motor.speed(NEUTRAL); + r_motor.speed(NEUTRAL); + move_state = Stopped; + return 1; + } + else if (current_move <= 1) { + if(DEBUG) + pc.printf("I like to rotate! \n\r"); + rotate(current_move); + //if((r_tics >= r_goal) || (l_tics >= l_goal)) + direct++; + } + else if (current_move >= 20) { + if(DEBUG) + pc.printf("I like to move it move it! \n\r"); + + move(0.5, current_move); + //if((r_tics >= r_goal) || (l_tics >= l_goal)) + direct++; + } + state = 2; + } + + return 0; +} +