diff --git a/libraries/AP_HAL_AVR_SITL/AP_HAL_AVR_SITL_Namespace.h b/libraries/AP_HAL_AVR_SITL/AP_HAL_AVR_SITL_Namespace.h index a70396185a..a551c42e41 100644 --- a/libraries/AP_HAL_AVR_SITL/AP_HAL_AVR_SITL_Namespace.h +++ b/libraries/AP_HAL_AVR_SITL/AP_HAL_AVR_SITL_Namespace.h @@ -11,8 +11,9 @@ namespace AVR_SITL { class SITLAnalogIn; class SITLRCInput; class SITLRCOutput; - class ADCSource; + class ADCSource; class RCInput; + class SITLUtil; } #endif // __AP_HAL_AVR_SITL_NAMESPACE_H__ diff --git a/libraries/AP_HAL_AVR_SITL/AnalogIn.cpp b/libraries/AP_HAL_AVR_SITL/AnalogIn.cpp index 8de0b5ebe3..38939c8170 100644 --- a/libraries/AP_HAL_AVR_SITL/AnalogIn.cpp +++ b/libraries/AP_HAL_AVR_SITL/AnalogIn.cpp @@ -3,7 +3,6 @@ #include #if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL -#include "HAL_AVR.h" #include "AP_HAL_AVR_SITL.h" #include "AnalogIn.h" #include diff --git a/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.cpp b/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.cpp index 54fa029563..382a8a7e58 100644 --- a/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.cpp +++ b/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.cpp @@ -17,6 +17,7 @@ #include "RCInput.h" #include "RCOutput.h" #include "SITL_State.h" +#include "Util.h" #include #include @@ -40,6 +41,8 @@ static SITLUARTDriver sitlUart0Driver(0, &sitlState); static SITLUARTDriver sitlUart1Driver(1, &sitlState); static SITLUARTDriver sitlUart2Driver(2, &sitlState); +static SITLUtil utilInstance; + HAL_AVR_SITL::HAL_AVR_SITL() : AP_HAL::HAL( &sitlUart0Driver, /* uartA */ @@ -53,7 +56,8 @@ HAL_AVR_SITL::HAL_AVR_SITL() : &emptyGPIO, /* gpio */ &sitlRCInput, /* rcinput */ &sitlRCOutput, /* rcoutput */ - &sitlScheduler), /* scheduler */ + &sitlScheduler, /* scheduler */ + &utilInstance), /* util */ _sitl_state(&sitlState) {} diff --git a/libraries/AP_HAL_AVR_SITL/Scheduler.cpp b/libraries/AP_HAL_AVR_SITL/Scheduler.cpp index 4b3cf923bf..f273ca8423 100644 --- a/libraries/AP_HAL_AVR_SITL/Scheduler.cpp +++ b/libraries/AP_HAL_AVR_SITL/Scheduler.cpp @@ -3,7 +3,6 @@ #include #if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL -#include "HAL_AVR.h" #include "AP_HAL_AVR_SITL.h" #include "Scheduler.h" #include diff --git a/libraries/AP_HAL_AVR_SITL/Util.cpp b/libraries/AP_HAL_AVR_SITL/Util.cpp new file mode 100644 index 0000000000..94e93d47cd --- /dev/null +++ b/libraries/AP_HAL_AVR_SITL/Util.cpp @@ -0,0 +1,44 @@ + +#include +#if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL +#include +#include + +int libc_vsnprintf(char* str, size_t size, const char *format, va_list ap) { + vsnprintf(str, size, format, ap); +} + +#include "Util.h" +using namespace AVR_SITL; + +int SITLUtil::snprintf(char* str, size_t size, const char *format, ...) +{ + va_list ap; + va_start(ap, format); + int res = libc_vsnprintf(str, size, format, ap); + va_end(ap); + return res; +} + +int SITLUtil::snprintf_P(char* str, size_t size, const prog_char_t *format, ...) +{ + va_list ap; + va_start(ap, format); + int res = libc_vsnprintf(str, size, format, ap); + va_end(ap); + return res; +} + + +int SITLUtil::vsnprintf(char* str, size_t size, const char *format, va_list ap) +{ + return libc_vsnprintf(str, size, format, ap); +} + +int SITLUtil::vsnprintf_P(char* str, size_t size, const prog_char_t *format, + va_list ap) +{ + return libc_vsnprintf(str, size, format, ap); +} + +#endif // CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL diff --git a/libraries/AP_HAL_AVR_SITL/Util.h b/libraries/AP_HAL_AVR_SITL/Util.h new file mode 100644 index 0000000000..4d055e2d41 --- /dev/null +++ b/libraries/AP_HAL_AVR_SITL/Util.h @@ -0,0 +1,17 @@ + +#ifndef __AP_HAL_SITL_UTIL_H__ +#define __AP_HAL_SITL_UTIL_H__ + +#include +#include "AP_HAL_AVR_SITL_Namespace.h" + +class AVR_SITL::SITLUtil : public AP_HAL::Util { +public: + int snprintf(char* str, size_t size, const char *format, ...); + int snprintf_P(char* str, size_t size, const prog_char_t *format, ...); + int vsnprintf(char* str, size_t size, const char *format, va_list ap); + int vsnprintf_P(char* str, size_t size, const prog_char_t *format, + va_list ap); +}; + +#endif // __AP_HAL_SITL_UTIL_H__ diff --git a/libraries/AP_HAL_AVR_SITL/sitl_barometer.cpp b/libraries/AP_HAL_AVR_SITL/sitl_barometer.cpp index 00a5d28e16..7b7c0f0e71 100644 --- a/libraries/AP_HAL_AVR_SITL/sitl_barometer.cpp +++ b/libraries/AP_HAL_AVR_SITL/sitl_barometer.cpp @@ -9,7 +9,6 @@ #include #if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL -#include "HAL_AVR.h" #include "AP_HAL_AVR_SITL.h" using namespace AVR_SITL;