Exemple #1
0
void radio_rxhandler(uint8_t pipenumber) {
    if (_rx_packet.header.type == EMPTY) {
        Radio_Receive(&_rx_packet, sizeof(_rx_packet));
    } else {
        puts("RX: dropping packet");
    }
}
Exemple #2
0
/*
 * To be completed.
 * This is the side where we decompose the content of the packet
 * and find out what command was sent from the Base Station
 */
void radio_rxhandler(uint8_t pipenumber)
{
//	Serial.println("radio_rxhandler");

    Radio_Receive(&packet);

    if (packet.type == COMMAND) {
        Serial.println("Received Command");

        switch (packet.payload.hovercraftData.command) {

        case NONE:
            Serial.println("Command is NONE");
            break;

        case TURN_LEFT:
            Serial.println("Command is TURN_LEFT");
            break;

        case TURN_RIGHT:
            Serial.println("Command is TURN_RIGHT");
            break;

        case NEXT_LEFT:
            Serial.println("Command is NEXT_LEFT");
            break;

        case NEXT_RIGHT:
            Serial.println("Command is NEXT_RIGHT");
            break;

        case STOP:
            Serial.println("Command is STOP");
            command = STOP;
            break;

        case FORWARD:
            Serial.println("Command is FORWARD");
            command = FOLLOW_WALL;
            break;

        case REVERSE:
            Serial.println("Command is REVERSE");
            break;

        case FOLLOW_WALL:
            Serial.println("Command is FOLLOW_WALL");
            break;

        default:
            break;
        }
    }
}
Exemple #3
0
int main()
{
	init();
	pinMode(14, OUTPUT);
	pinMode(15, OUTPUT);
	digitalWrite(15, LOW);

	pinMode(radioPowerPin, OUTPUT);		// power cycle radio
	digitalWrite(radioPowerPin, LOW);
	delay(100);
	digitalWrite(radioPowerPin, HIGH);
	delay(100);

	pinMode(sonarPowerPin, OUTPUT);
	pinMode(sonarGroundPin, OUTPUT);
	digitalWrite(sonarGroundPin, LOW);
	digitalWrite(sonarPowerPin, HIGH);
	Sonar_Init();

	Radio_Init();
	Radio_Configure(RADIO_2MBPS, RADIO_HIGHEST_POWER);
	Radio_Configure_Rx(RADIO_PIPE_0, sensor_address, ENABLE);



	for (;;)
	{
		if (radio_flag)
		{
			radio_flag = 0;
			Radio_Receive(&packet);				// assumption: radio FIFO contains just one packet
			if (packet.type == REQUEST_ECHO)
			{
				Sonar_PreTrigger();
				Radio_Set_Tx_Addr(packet.payload.request.return_address);
				packet.type = CONFIRM_ECHO;
				packet.payload.confirm.station_id = STATION_ID;
				Radio_Transmit(&packet, RADIO_WAIT_FOR_TX);
				// sonar is triggered as soon as the explorer acknowledges it received the confirmation
				Sonar_Trigger();
				delay(50);
				digitalWrite(14, LOW);
			}
			packet.type = EMPTY;
		}
	}

	for (;;);
	return 0;
}