Advanced Distributed Systems module at HSLU
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

51 lines
1.1 KiB

/*
* splitflap.h
*
* Created on: 29.09.2022
* Author: jonas
*/
#ifndef SPLITFLAP_H_
#define SPLITFLAP_H_
#include <stdbool.h>
#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_ */