NerfUS / Mbed 2 deprecated NerfUSTarget

Dependencies:   LedController mbed-rtos mbed NerfUSXbee Servomotor TargetManager

Fork of NerfUS by NerfUS

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Target.cpp Source File

Target.cpp

00001 #include "Target.hpp"
00002 
00003 int coordinator_address[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
00004 
00005 Target::Target(ServomotorInterface& servomotor,
00006         LedControllerInterface& ally_leds,
00007         LedControllerInterface& enemy_leds,
00008         XbeeTransmitterInterface& xbee_transmitter,
00009         const int target_number):
00010     servomotor(servomotor),
00011     ally_leds(ally_leds),
00012     enemy_leds(enemy_leds),
00013     xbee_transmitter(xbee_transmitter),
00014     target_number(target_number)
00015 {
00016 }
00017 
00018 void Target::execute_command(Mode mode, int timeout_ms)
00019 {
00020     if(mode == Ally)
00021     {
00022         ally_command();
00023     }
00024     else
00025     {
00026         enemy_command();
00027     }
00028 }
00029 
00030 
00031 void Target::ally_command()
00032 {
00033     servomotor.set_position_up();
00034     ally_leds.turn_on();
00035 }
00036 
00037 void Target::enemy_command()
00038 {
00039     servomotor.set_position_up();
00040     enemy_leds.turn_on();
00041 }
00042 
00043 void Target::generate_message(uint8_t target_number, Result result, uint16_t time_taken_ms, uint8_t* message) const
00044 {
00045     const uint8_t time_taken_msb = time_taken_ms >> 8;
00046     const uint8_t time_taken_lsb = (time_taken_ms << 8) >> 8;
00047 
00048     message[0] = target_number;
00049     message[1] = result;
00050     message[2] = time_taken_msb;
00051     message[3] = time_taken_lsb;
00052 }
00053 
00054 void Target::timeout(const int time_taken_ms)
00055 {    
00056     servomotor.set_position_down();
00057     ally_leds.turn_off();
00058     enemy_leds.turn_off();
00059     
00060     uint8_t message[4];
00061     generate_message(target_number, Target::RESULT_MISSED, time_taken_ms, message);
00062     xbee_transmitter.transmit(message, 4, coordinator_address);
00063 }
00064 
00065 void Target::hit(const int time_taken_ms)
00066 {
00067     servomotor.set_position_down();
00068     ally_leds.turn_off();
00069     enemy_leds.turn_off();
00070     
00071     uint8_t message[4];
00072     generate_message(target_number, Target::RESULT_HIT, time_taken_ms, message);
00073     xbee_transmitter.transmit(message, 4, coordinator_address);
00074 }