Make IR timing and RX terminal state explicit

This commit is contained in:
2026-09-04 19:22:03 +03:00
parent 6c97d33c7c
commit 00e101990f
8 changed files with 869 additions and 29 deletions

View File

@ -0,0 +1,60 @@
#pragma once
#include <cstddef>
#include <cstdint>
class __FlashStringHelper;
#define F(value) reinterpret_cast<const __FlashStringHelper *>(value)
struct GPIO_TypeDef
{
uint32_t BSRR = 0U;
uint32_t IDR = 0U;
};
using IRQn_Type = int;
enum TimerFormat_t : uint8_t { TICK_FORMAT = 0, MICROSEC_FORMAT, HERTZ_FORMAT };
constexpr uint8_t LOW = 0U;
constexpr uint8_t HIGH = 1U;
constexpr uint8_t INPUT = 0U;
constexpr uint8_t OUTPUT = 1U;
class HardwareTimer
{
public:
void pause() {}
void resume() {}
void setOverflow(uint32_t value, TimerFormat_t = TICK_FORMAT) { overflow_ = value; }
uint32_t getOverflow(TimerFormat_t = TICK_FORMAT) { return overflow_; }
uint32_t getPrescaleFactor() { return 1U; }
uint32_t getTimerClkFreq() { return 12000000U; }
void attachInterrupt(uint8_t, void (*)()) {}
private:
uint32_t overflow_ = 1U;
};
inline GPIO_TypeDef arduinoStubPort;
inline GPIO_TypeDef *digitalPinToPort(uint8_t) { return &arduinoStubPort; }
inline uint16_t digitalPinToBitMask(uint8_t) { return 1U; }
inline void pinMode(uint8_t, uint8_t) {}
inline void digitalWrite(uint8_t, uint8_t) {}
inline void NVIC_SetPriority(IRQn_Type, uint8_t) {}
inline void noInterrupts() {}
inline void interrupts() {}
inline uint32_t arduinoStubMicros = 0U;
inline uint32_t micros() { return arduinoStubMicros; }
inline uint32_t millis() { return arduinoStubMicros / 1000U; }
class Print
{
public:
template <typename T> void print(const T &) {}
template <typename T> void println(const T &) {}
void println() {}
};
using ArduinoSerialStub = Print;
inline ArduinoSerialStub Serial;