#ifndef INC_CPPMAIN_H
#define INC_CPPMAIN_H

// ----------------------------------------------------------------------------------------------
// C++ Interface
// ----------------------------------------------------------------------------------------------

#ifdef __cplusplus
    #include <iostream>
    #include <cstdint>
    #include <string>

namespace Heck {
    // Serial Logging
    void log(std::string& msg);

    // DAC1
    void dac1_set(uint32_t val);
    void dac1_toggle();
    void dac_start_dma();
    void dac_stop_dma();

    // LED Green
    void led_green_toggle();
    void led_green_on();
    void led_green_off();

    // Callbacks
    void irq1_cb();
    void timer2_cb();
    void timer7_cb();

    // misc
    void bytebeat();
} // namespace Heck
#endif


// ----------------------------------------------------------------------------------------------
// C Interface
// ----------------------------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif

    void heck_cppmain(void);
    void heck_error_handler();

#ifdef __cplusplus
};
#endif

#endif /* INC_CPPMAIN_H */