diff --git a/ADIS_tinyK22_SplitFlap/source/splitflap.c b/ADIS_tinyK22_SplitFlap/source/splitflap.c index d94d421..879d115 100644 --- a/ADIS_tinyK22_SplitFlap/source/splitflap.c +++ b/ADIS_tinyK22_SplitFlap/source/splitflap.c @@ -9,18 +9,24 @@ #include "McuULN2003.h" SF_Handle_t SF_Init(SF_Config_t* instance, int id){ - SF_t splitflap; + SF_t* splitflap; - splitflap.magSensor = McuGPIO_InitGPIO(&instance->magSensorConfig); - splitflap.motor = McuULN2003_InitMotor(&instance->motorConfig); - splitflap.id = id; +#if SPLITFLAP_CONFIG_USE_FREERTOS_HEAP + splitflap = (SF_t*)pvPortMalloc(sizeof(SF_t)); /* get a new device descriptor */ +#else + splitflap = (SF_t*)malloc(sizeof(SF_t)); /* get a new device descriptor */ +#endif - return &splitflap; + splitflap->magSensor = McuGPIO_InitGPIO(&instance->magSensorConfig); + splitflap->motor = McuULN2003_InitMotor(&instance->motorConfig); + splitflap->id = id; + + return splitflap; } -void SF_Deinit(SF_t* instance){ - McuULN2003_DeinitMotor(&instance->motorConfig); - McuGPIO_DeinitGPIO(&instance->magSensorConfig); +void SF_Deinit(SF_Handle_t instance){ + McuULN2003_DeinitMotor(((SF_t*)instance)->motor); + McuGPIO_DeinitGPIO(((SF_t*)instance)->magSensor); } diff --git a/ADIS_tinyK22_SplitFlap/source/splitflap.h b/ADIS_tinyK22_SplitFlap/source/splitflap.h index c07091a..e6d1695 100644 --- a/ADIS_tinyK22_SplitFlap/source/splitflap.h +++ b/ADIS_tinyK22_SplitFlap/source/splitflap.h @@ -11,6 +11,12 @@ #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; @@ -25,10 +31,14 @@ typedef struct { McuGPIO_Config_t magSensorConfig; } SF_Config_t; -/* split flap initialization */ + +/****** 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 deinitialization */ -void SF_Deinit(SF_Handle_t* instance); +void SF_Deinit(SF_Handle_t instance); #endif /* SPLITFLAP_H_ */