diff --git a/libraries/AP_HAL_AVR_SITL/AP_HAL_AVR_SITL.h b/libraries/AP_HAL_AVR_SITL/AP_HAL_AVR_SITL.h new file mode 100644 index 0000000000..26192824a3 --- /dev/null +++ b/libraries/AP_HAL_AVR_SITL/AP_HAL_AVR_SITL.h @@ -0,0 +1,9 @@ + +#ifndef __AP_HAL_AVR_SITL_H__ +#define __AP_HAL_AVR_SITL_H__ + +#include "AP_HAL_AVR_SITL_Namespace.h" +#include "HAL_AVR_SITL_Class.h" + +#endif // __AP_HAL_AVR_SITL_H__ + 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 new file mode 100644 index 0000000000..cf7c52620b --- /dev/null +++ b/libraries/AP_HAL_AVR_SITL/AP_HAL_AVR_SITL_Namespace.h @@ -0,0 +1,9 @@ + +#ifndef __AP_HAL_AVR_SITL_NAMESPACE_H__ +#define __AP_HAL_AVR_SITL_NAMESPACE_H__ + +namespace AP_HAL_AVR_SITL { + class SITLUARTDriver; +} + +#endif // __AP_HAL_AVR_SITL_NAMESPACE_H__ diff --git a/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.cpp b/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.cpp new file mode 100644 index 0000000000..27e65e6536 --- /dev/null +++ b/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.cpp @@ -0,0 +1,49 @@ + +#include + +#if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL + +#include +#include +#include +#include "AP_HAL_AVR_SITL_Namespace.h" +#include "HAL_AVR_SITL_Class.h" + +// XXX placeholder +uint8_t isrRegistry; + +static AVRScheduler avrScheduler; + +HAL_AVR_SITL::HAL_AVR_SITL() : + AP_HAL::HAL( + NULL, /* uartA */ + NULL, /* uartB */ + NULL, /* uartC */ + NULL, /* i2c */ + NULL, /* spi */ + NULL, /* analogin */ + NULL, /* storage */ + NULL, /* console */ + NULL, /* gpio */ + NULL, /* rcinput */ + NULL, /* rcoutput */ + &avrScheduler) /* scheduler */ +{} + +void HAL_AVR_SITL::init(void* machtnichts) const { + + scheduler->init((void*)&isrRegistry); + uartA->begin(115200); + console->init((void*) uartA); + + rcin->init((void*)&isrRegistry); + rcout->init(NULL); + spi->init(NULL); + i2c->begin(); + i2c->setTimeout(100); + analogin->init(NULL); +} + +const HAL_AVR_SITL AP_HAL_AVR_SITL; + +#endif // CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL diff --git a/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.h b/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.h new file mode 100644 index 0000000000..9d6409fef5 --- /dev/null +++ b/libraries/AP_HAL_AVR_SITL/HAL_AVR_SITL_Class.h @@ -0,0 +1,18 @@ + +#ifndef __AP_HAL_AVR_SITL_CLASS_H__ +#define __AP_HAL_AVR_SITL_CLASS_H__ + +#include + +#if CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL + +class HAL_AVR_SITL :: public AP_HAL::HAL { + HAL_AVR_SITL(); + void init(void*) const; +}; + +extern const HAL_AVR_SITL AP_HAL_AVR_SITL; + +#endif // CONFIG_HAL_BOARD == HAL_BOARD_AVR_SITL +#endif // __AP_HAL_AVR_SITL_CLASS_H__ +