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 NerfUS

Committer:
GaiSensei
Date:
Sun Apr 09 21:22:08 2017 +0000
Revision:
40:1f0a5e5f24f6
Parent:
39:a98413395b20
Child:
46:853966aab733
Fix mallocs in interrupt. Use local variables instead of vector.push_back

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GaiSensei 36:f55ce07292c9 1 #include "mbed.h"
GaiSensei 39:a98413395b20 2 #include "RealDigitalOut.hpp"
GaiSensei 39:a98413395b20 3 #include "LedController.hpp"
GaiSensei 39:a98413395b20 4 #include "LedController.hpp"
GaiSensei 39:a98413395b20 5 #include "RealPwmOut.hpp"
GaiSensei 39:a98413395b20 6 #include "Servomotor.hpp"
GaiSensei 39:a98413395b20 7 #include "RealXbeeTransmitter.hpp"
GaiSensei 39:a98413395b20 8 #include "RealXbeeReceiver.hpp"
GaiSensei 39:a98413395b20 9 #include "Target.hpp"
GaiSensei 39:a98413395b20 10 #include "Bumper.hpp"
GaiSensei 39:a98413395b20 11 #include "TargetHitCallback.hpp"
GaiSensei 39:a98413395b20 12 #include "TargetMissedCallback.hpp"
GaiSensei 39:a98413395b20 13 #include "NerfusTicker.hpp"
GaiSensei 39:a98413395b20 14 #include "TargetManager.hpp"
GaiSensei 39:a98413395b20 15
GaiSensei 39:a98413395b20 16 #include <vector>
GaiSensei 39:a98413395b20 17
GaiSensei 39:a98413395b20 18 TargetManager* target_manager_pointer;
GaiSensei 39:a98413395b20 19
GaiSensei 39:a98413395b20 20 void target_manager_callback(vector<uint8_t> message, int address[8])
GaiSensei 39:a98413395b20 21 {
GaiSensei 39:a98413395b20 22 target_manager_pointer->execute(message, address);
GaiSensei 39:a98413395b20 23 }
dupm2216 0:e7c4a5d26268 24
GaiSensei 36:f55ce07292c9 25 int main()
Maxime Dupuis 2:6e467e4978f9 26 {
GaiSensei 39:a98413395b20 27 //Transmitter
GaiSensei 39:a98413395b20 28 RealXbeeTransmitter xbee_transmitter;
GaiSensei 40:1f0a5e5f24f6 29 xbee_transmitter.init();
GaiSensei 39:a98413395b20 30
GaiSensei 39:a98413395b20 31 //Target 0
GaiSensei 39:a98413395b20 32 RealPwmOut servo_pwm_out_0(p21);
GaiSensei 39:a98413395b20 33 Servomotor servomotor_0(servo_pwm_out_0);
GaiSensei 39:a98413395b20 34
GaiSensei 39:a98413395b20 35 RealDigitalOut ally_leds_0(p5);
GaiSensei 39:a98413395b20 36 RealDigitalOut ennemy_leds_0(p6);
GaiSensei 39:a98413395b20 37 LedController ally_leds_controller_0(ally_leds_0);
GaiSensei 39:a98413395b20 38 LedController ennemy_leds_controller_0(ennemy_leds_0);
GaiSensei 39:a98413395b20 39
GaiSensei 39:a98413395b20 40 Target target_0(servomotor_0, ally_leds_controller_0, ennemy_leds_controller_0, xbee_transmitter, 0);
GaiSensei 39:a98413395b20 41
GaiSensei 39:a98413395b20 42 //Target 1
GaiSensei 39:a98413395b20 43 RealPwmOut servo_pwm_out_1(p22);
GaiSensei 39:a98413395b20 44 Servomotor servomotor_1(servo_pwm_out_1);
GaiSensei 39:a98413395b20 45
GaiSensei 39:a98413395b20 46 RealDigitalOut ally_leds_1(p9);
GaiSensei 39:a98413395b20 47 RealDigitalOut ennemy_leds_1(p10);
GaiSensei 39:a98413395b20 48 LedController ally_leds_controller_1(ally_leds_1);
GaiSensei 39:a98413395b20 49 LedController ennemy_leds_controller_1(ennemy_leds_1);
GaiSensei 39:a98413395b20 50
GaiSensei 39:a98413395b20 51 Target target_1(servomotor_1, ally_leds_controller_1, ennemy_leds_controller_1, xbee_transmitter, 1);
GaiSensei 39:a98413395b20 52
GaiSensei 39:a98413395b20 53 //Target Manager
GaiSensei 39:a98413395b20 54 vector<TargetInterface*> targets;
GaiSensei 39:a98413395b20 55 targets.push_back(&target_0);
GaiSensei 39:a98413395b20 56 targets.push_back(&target_1);
GaiSensei 39:a98413395b20 57
GaiSensei 39:a98413395b20 58 NerfusTicker target_timeout_ticker_0;
GaiSensei 39:a98413395b20 59 NerfusTicker target_timeout_ticker_1;
GaiSensei 39:a98413395b20 60 std::vector<NerfusTickerInterface*> target_timeout_tickers;
GaiSensei 39:a98413395b20 61 target_timeout_tickers.push_back(&target_timeout_ticker_0);
GaiSensei 39:a98413395b20 62 target_timeout_tickers.push_back(&target_timeout_ticker_1);
GaiSensei 39:a98413395b20 63
GaiSensei 39:a98413395b20 64 TargetManager target_manager(targets, target_timeout_tickers);
GaiSensei 39:a98413395b20 65
GaiSensei 39:a98413395b20 66 //Timeout tickers
GaiSensei 39:a98413395b20 67 TargetMissedCallback target_missed_callback_0(target_manager, 0);
GaiSensei 39:a98413395b20 68 TargetMissedCallback target_missed_callback_1(target_manager, 1);
GaiSensei 39:a98413395b20 69 target_timeout_ticker_0.init(&target_missed_callback_0);
GaiSensei 39:a98413395b20 70 target_timeout_ticker_1.init(&target_missed_callback_1);
GaiSensei 39:a98413395b20 71
GaiSensei 39:a98413395b20 72 //Bumper 1
GaiSensei 39:a98413395b20 73 PinName bumper_0_pin = p11;
GaiSensei 39:a98413395b20 74 TargetHitCallback target_hit_callback_0(target_manager, 0);
GaiSensei 39:a98413395b20 75 Bumper bumper_0(bumper_0_pin, target_hit_callback_0);
GaiSensei 39:a98413395b20 76
GaiSensei 39:a98413395b20 77 //Bumper 2
GaiSensei 39:a98413395b20 78 PinName bumper_1_pin = p12;
GaiSensei 39:a98413395b20 79 TargetHitCallback target_hit_callback_1(target_manager, 1);
GaiSensei 39:a98413395b20 80 Bumper bumper_1(bumper_1_pin, target_hit_callback_1);
GaiSensei 39:a98413395b20 81
GaiSensei 39:a98413395b20 82 //Receiver
GaiSensei 39:a98413395b20 83 target_manager_pointer = &target_manager;
GaiSensei 39:a98413395b20 84 RealXbeeReceiver xbee_receiver;
GaiSensei 39:a98413395b20 85 xbee_receiver.start(&target_manager_callback);
GaiSensei 40:1f0a5e5f24f6 86
GaiSensei 39:a98413395b20 87 while(1)
GaiSensei 39:a98413395b20 88 {
GaiSensei 39:a98413395b20 89 }
GaiSensei 39:a98413395b20 90 }
GaiSensei 39:a98413395b20 91
GaiSensei 39:a98413395b20 92
GaiSensei 39:a98413395b20 93