#ifndef HOST_G4_WRAPPER
#define HOST_G4_WRAPPER
#include "device_registers.h"
#undef RCC
#undef GPIOA
#undef GPIOB
#undef GPIOF
#undef TIM1
#undef SPI2
extern RCC_TypeDef rcc;
extern GPIO_TypeDef ga,gb,gf;
extern TIM_TypeDef timer;
extern SPI_TypeDef spi;
#define RCC (&rcc)
#define GPIOA (&ga)
#define GPIOB (&gb)
#define GPIOF (&gf)
#define TIM1 (&timer)
#define SPI2 (&spi)
#ifdef HOST_INTEGRATED
void host_dsb(void);
void host_wait(void);
#define __DSB() host_dsb()
#define __WFI() host_wait()
#else
#define __DSB() ((void)0)
#endif

#undef TIM2
extern TIM_TypeDef timer2;
#define TIM2 (&timer2)
typedef struct {volatile uint32_t CTRL,LOAD,VAL,CALIB;} host_systick_type;
extern host_systick_type systick;
extern unsigned host_systick_config_calls;
#define SysTick (&systick)
#define SysTick_CTRL_ENABLE_Msk 1u
#define SysTick_CTRL_TICKINT_Msk 2u
#define SysTick_CTRL_CLKSOURCE_Msk 4u
#define SysTick_CTRL_COUNTFLAG_Msk (1u<<16)
static inline uint32_t SysTick_Config(uint32_t ticks){++host_systick_config_calls;if(ticks==0||ticks>0x1000000u)return 1;SysTick->LOAD=ticks-1;SysTick->VAL=0;SysTick->CTRL=7;return 0;}
#endif
