void radio_rxhandler(uint8_t pipenumber) { if (_rx_packet.header.type == EMPTY) { Radio_Receive(&_rx_packet, sizeof(_rx_packet)); } else { puts("RX: dropping packet"); } }
/* * 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; } } }
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; }