NerfUS mobile node that manages a target for the Nerf gun firing range
Dependencies: LedController mbed-rtos mbed NerfUSXbee Servomotor TargetManager
Fork of NerfUS by
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 }
Generated on Thu Jul 14 2022 01:50:39 by
1.7.2
