mirror of https://github.com/ArduPilot/ardupilot
SITL: add simulator for 1-LED boards
This commit is contained in:
parent
7a15b4aae5
commit
647048f703
|
@ -1094,6 +1094,9 @@ void Aircraft::update_external_payload(const struct sitl_input &input)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if AP_SIM_GPIO_LED_1_ENABLED
|
||||||
|
sim_led1.update(*this);
|
||||||
|
#endif
|
||||||
#if AP_SIM_GPIO_LED_2_ENABLED
|
#if AP_SIM_GPIO_LED_2_ENABLED
|
||||||
sim_led2.update(*this);
|
sim_led2.update(*this);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include <Filter/Filter.h>
|
#include <Filter/Filter.h>
|
||||||
#include "SIM_JSON_Master.h"
|
#include "SIM_JSON_Master.h"
|
||||||
#include "ServoModel.h"
|
#include "ServoModel.h"
|
||||||
|
#include "SIM_GPIO_LED_1.h"
|
||||||
#include "SIM_GPIO_LED_2.h"
|
#include "SIM_GPIO_LED_2.h"
|
||||||
#include "SIM_GPIO_LED_3.h"
|
#include "SIM_GPIO_LED_3.h"
|
||||||
#include "SIM_GPIO_LED_RGB.h"
|
#include "SIM_GPIO_LED_RGB.h"
|
||||||
|
@ -377,6 +378,9 @@ private:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if AP_SIM_GPIO_LED_1_ENABLED
|
||||||
|
GPIO_LED_1 sim_led1{8}; // pin to match sitl.h
|
||||||
|
#endif
|
||||||
#if AP_SIM_GPIO_LED_2_ENABLED
|
#if AP_SIM_GPIO_LED_2_ENABLED
|
||||||
GPIO_LED_2 sim_led2{13, 14}; // pins to match sitl.h
|
GPIO_LED_2 sim_led2{13, 14}; // pins to match sitl.h
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
#include "SIM_config.h"
|
||||||
|
|
||||||
|
#if AP_SIM_GPIO_LED_1_ENABLED
|
||||||
|
|
||||||
|
#include "SIM_GPIO_LED_1.h"
|
||||||
|
|
||||||
|
#include <SITL/SITL.h>
|
||||||
|
|
||||||
|
using namespace SITL;
|
||||||
|
|
||||||
|
void GPIO_LED_1::init()
|
||||||
|
{
|
||||||
|
leds.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GPIO_LED_1::update(const class Aircraft &aircraft)
|
||||||
|
{
|
||||||
|
if (!init_done) {
|
||||||
|
init();
|
||||||
|
init_done = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const uint16_t pin_mask = AP::sitl()->pin_mask.get();
|
||||||
|
const bool new_led_states[1] {
|
||||||
|
((pin_mask & uint16_t((1U<<LED_A_PIN))) != 0),
|
||||||
|
};
|
||||||
|
|
||||||
|
leds.set_state(new_led_states);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
Simulator for GPIO-based "Board LEDs"
|
||||||
|
|
||||||
|
./Tools/autotest/sim_vehicle.py -v ArduCopter --gdb --debug --rgbled
|
||||||
|
|
||||||
|
reboot
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "SIM_config.h"
|
||||||
|
|
||||||
|
#if AP_SIM_GPIO_LED_1_ENABLED
|
||||||
|
|
||||||
|
#include "SIM_LED_n.h"
|
||||||
|
|
||||||
|
namespace SITL {
|
||||||
|
|
||||||
|
class GPIO_LED_1
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
GPIO_LED_1(uint8_t _LED_A_PIN) :
|
||||||
|
LED_A_PIN{_LED_A_PIN}
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void update(const class Aircraft &aircraft);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
void init();
|
||||||
|
bool init_done;
|
||||||
|
|
||||||
|
SIM_LED_n<1>::LEDColour colours[1] {
|
||||||
|
SIM_LED_n<1>::LEDColour::RED,
|
||||||
|
};
|
||||||
|
|
||||||
|
SIM_LED_n<1> leds{"GPIO_LED_1", colours};
|
||||||
|
|
||||||
|
uint8_t LED_A_PIN;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace SITL
|
||||||
|
|
||||||
|
#endif // AP_SIM_GPIO_LED_2_ENABLED
|
|
@ -90,6 +90,7 @@ void SIM_LED_n<NUM_LEDS>::init()
|
||||||
pthread_create(&thread, NULL, update_thread_start, this);
|
pthread_create(&thread, NULL, update_thread_start, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template class SIM_LED_n<1>;
|
||||||
template class SIM_LED_n<2>;
|
template class SIM_LED_n<2>;
|
||||||
template class SIM_LED_n<3>;
|
template class SIM_LED_n<3>;
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,10 @@
|
||||||
#define AP_SIM_LED_N_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL) && defined(WITH_SITL_RGBLED)
|
#define AP_SIM_LED_N_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL) && defined(WITH_SITL_RGBLED)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef AP_SIM_GPIO_LED_1_ENABLED
|
||||||
|
#define AP_SIM_GPIO_LED_1_ENABLED AP_SIM_LED_N_ENABLED && 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef AP_SIM_GPIO_LED_2_ENABLED
|
#ifndef AP_SIM_GPIO_LED_2_ENABLED
|
||||||
#define AP_SIM_GPIO_LED_2_ENABLED AP_SIM_LED_N_ENABLED && 0
|
#define AP_SIM_GPIO_LED_2_ENABLED AP_SIM_LED_N_ENABLED && 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -36,7 +40,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef AP_SIM_GPIO_LED_RGB_ENABLED
|
#ifndef AP_SIM_GPIO_LED_RGB_ENABLED
|
||||||
#define AP_SIM_GPIO_LED_RGB_ENABLED AP_SIM_LED_N_ENABLED
|
#define AP_SIM_GPIO_LED_RGB_ENABLED AP_SIM_LED_N_ENABLED && 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef AP_SIM_LOWEHEISER_ENABLED
|
#ifndef AP_SIM_LOWEHEISER_ENABLED
|
||||||
|
|
Loading…
Reference in New Issue