/* * splitflap.h * * Created on: 29.09.2022 * Author: jonas */ #ifndef SPLITFLAP_H_ #define SPLITFLAP_H_ #include #include "McuULN2003.h" #include "McuGPIO.h" /****** SETTINGS ******/ #define SPLITFLAP_CONFIG_USE_FREERTOS_HEAP 0 /****** TYPES ******/ /* define splitflap handle type. SF_Handle_t points to SF_t */ typedef void* SF_Handle_t; typedef struct { McuULN2003_Handle_t motor; McuGPIO_Handle_t magSensor; int id; } SF_t; typedef struct { McuULN2003_Config_t motorConfig; McuGPIO_Config_t magSensorConfig; } SF_Config_t; /****** FUNCTIONS ******/ /* split flap initialization * only pass configured types, they do not need to be initialized. * Initialization will be made inside the SF_Init method */ SF_Handle_t SF_Init(SF_Config_t* instance, int id); /* split flap moves number of steps maybe uint16_t? */ void SF_MoveSteps(SF_Handle_t instance, uint8_t steps); /* get mag sensor state. returns true if sensor is at zero position, otherwise false */ bool SF_GetMagSensorAtZeroPosition(SF_Handle_t instance); /* split flap deinitialization */ void SF_Deinit(SF_Handle_t instance); #endif /* SPLITFLAP_H_ */