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
source/Target.cpp
- Committer:
- Maxime Dupuis
- Date:
- 2017-03-11
- Revision:
- 24:801271795da0
- Parent:
- 23:fb47bceb61da
- Child:
- 36:f55ce07292c9
File content as of revision 24:801271795da0:
#include "Target.hpp" Target::Target(ServomotorInterface& servomotor, LedControllerInterface& ally_leds, LedControllerInterface& enemy_leds, XbeeTransmitterInterface& xbee_transmitter, const int target_number): servomotor(servomotor), ally_leds(ally_leds), enemy_leds(enemy_leds), xbee_transmitter(xbee_transmitter), target_number(target_number) { } void Target::execute_command(Mode mode, int timeout_ms) { if(mode == Ally) { ally_command(); } else { enemy_command(); } } void Target::ally_command() { servomotor.set_position_up(); ally_leds.turn_on(); } void Target::enemy_command() { servomotor.set_position_up(); enemy_leds.turn_on(); } std::vector<uint8_t> Target::generate_message(uint8_t target_number, Result result, uint16_t time_taken_ms) const { const uint8_t time_taken_msb = time_taken_ms >> 8; const uint8_t time_taken_lsb = (time_taken_ms << 8) >> 8; std::vector<uint8_t> message; message.push_back(target_number); message.push_back(result); message.push_back(time_taken_msb); message.push_back(time_taken_lsb); return message; } void Target::timeout(const int time_taken_ms) { const std::vector<uint8_t> message = generate_message(target_number, Target::RESULT_MISSED, time_taken_ms); xbee_transmitter.transmit(message); } void Target::hit(const int time_taken_ms) { const std::vector<uint8_t> message = generate_message(target_number, Target::RESULT_HIT, time_taken_ms); xbee_transmitter.transmit(message); }