/// This file deals with calculating RPM
#pragma once
#include "main.h"
#if !defined RPMTIMER
#warning RPMTIMER was not set
#endif
#if RPMTIMER==1
// construct macros to deal with interrupts from the given Timer channel
#define TIMER_IRQ_HANDLER TIM1_IRQHandler
#define TIMER_HANDLE htim1
#elif RPMTIMER==2
#define TIMER_IRQ_HANDLER TIM2_IRQHandler
#define TIMER_HANDLE htim2
#elif RPMTIMER==3
#define TIMER_IRQ_HANDLER TIM3_IRQHandler
#define TIMER_HANDLE htim3
#elif RPMTIMER==4
#define TIMER_IRQ_HANDLER TIM4_IRQHandler
#define TIMER_HANDLE htim4
#endif
#if defined RPMTIMER
#define RPM_FLAG (1UL << 16) // set high if the CB points are opened
#define RPM_SAMPLES 256 // sample times per 100mS or 1000mS when testing
#define RPM_COUNT_RATE 100000UL // Counter increments at 100KHz (need to match in STM32CubeMX)
#define RPM_AVERAGE 4
#if defined __cplusplus
extern "C"
{
#endif
// return rpm estimate or -1 if not calculated this time
extern int CalculateRPM(void);
#if defined __cplusplus
}
#endif
#endif