fixed multi splitflap

main
Jonas Arnold 4 years ago
parent b7128dcf08
commit cf354910d0
  1. 2
      ADIS_tinyK22_SplitFlap/source/application.c
  2. 50
      ADIS_tinyK22_SplitFlap/source/multi-splitflap.c
  3. 7
      ADIS_tinyK22_SplitFlap/source/multi-splitflap.h

@ -40,7 +40,7 @@ void App_Init(void){
LED_blue = McuLED_InitLed(&config); LED_blue = McuLED_InitLed(&config);
configureSplitflaps(); configureSplitflaps();
MultiSplitFlap_Init(); MultiSplitFlap_Init(2);
MultiSplitFlap_AddFlap(splitflap0); MultiSplitFlap_AddFlap(splitflap0);
MultiSplitFlap_AddFlap(splitflap1); MultiSplitFlap_AddFlap(splitflap1);
} }

@ -5,41 +5,63 @@
* Author: jonas * Author: jonas
*/ */
#include <stdio.h>
#include <stdbool.h>
#include "multi-splitflap.h" #include "multi-splitflap.h"
#include "fsl_debug_console.h" #include "fsl_debug_console.h"
static dict_t **flapDict; static dict_t **flapDict;
static uint8_t amountOfFlaps = 0; static uint8_t numberOfFlaps = 0;
static uint8_t addedFlaps = 0;
static const uint8_t BYTES_PER_KEY = 3;
static char* flapKeys[] = {};
void MultiSplitFlap_Init(void){ void initFlapKeys(uint8_t numberOfFlaps);
amountOfFlaps = 0;
void MultiSplitFlap_Init(uint8_t numOfFlaps){
numberOfFlaps = numOfFlaps;
addedFlaps = 0;
flapDict = dictAlloc(); flapDict = dictAlloc();
((dict_t*)flapDict)->key=NULL; ((dict_t*)flapDict)->key=NULL;
((dict_t*)flapDict)->value=NULL; ((dict_t*)flapDict)->value=NULL;
((dict_t*)flapDict)->next=NULL; ((dict_t*)flapDict)->next=NULL;
initFlapKeys(numberOfFlaps);
}
void initFlapKeys(uint8_t numberOfFlaps){
for (uint8_t i = 0; i < numberOfFlaps; ++i) {
/* get a memory place for the key */
#if SPLITFLAP_CONFIG_USE_FREERTOS_HEAP
flapKeys[i] = pvPortMalloc(sizeof(BYTES_PER_KEY));
#else
if((flapKeys[i] = malloc(BYTES_PER_KEY)) == NULL){
PRINTF("Reserving memory for flap num. %i failed!:\n", i);
}
sprintf(flapKeys[i], "%i", i);
#endif
}
} }
void MultiSplitFlap_Deinit(void){ void MultiSplitFlap_Deinit(void){
dictDealoc(flapDict); dictDealoc(flapDict);
amountOfFlaps = 0; addedFlaps = 0;
numberOfFlaps = 0;
} }
uint8_t MultiSplitFlap_GetAmountOfSplitFlaps(void){ uint8_t MultiSplitFlap_GetAmountOfAddedSplitFlaps(void){
return amountOfFlaps; return addedFlaps;
} }
void MultiSplitFlap_AddFlap(SF_Handle_t splitflap){ void MultiSplitFlap_AddFlap(SF_Handle_t splitflap){
PRINTF("Adding split flap to multi splitflap combination:\n"); PRINTF("Adding split flap to multi splitflap combination...\n");
addItem(flapDict, (char*)&amountOfFlaps, (SF_Handle_t*)splitflap); addItem(flapDict, flapKeys[addedFlaps], (SF_Handle_t*)splitflap);
//TODO probably starting with 0 does not work since its a pointer to the number 0 PRINTF("Added flap nr. %i/%i.\n", addedFlaps+1, numberOfFlaps);
PRINTF("Added flap nr. %i. There are now %i flaps.\n", amountOfFlaps, ++amountOfFlaps); addedFlaps++;
} }
void MultiSplitFlap_Display(char* sentence[]){ void MultiSplitFlap_Display(char* sentence[]){
SF_Handle_t* sfHandle0 = (SF_Handle_t*)(getItem(*flapDict, (char*)0)); SF_t* sf0 = (SF_t*)(SF_Handle_t)(getItem(*flapDict, flapKeys[0]));
SF_Handle_t* sfHandle1 = (SF_Handle_t*)(getItem(*flapDict, (char*)1)); SF_t* sf1 = (SF_t*)(SF_Handle_t)(getItem(*flapDict, flapKeys[1]));
SF_t* sf0 = (SF_t*)sfHandle0;
SF_t* sf1 = (SF_t*)sfHandle1;
int32_t test = McuULN2003_GetPos(sf1->motor); int32_t test = McuULN2003_GetPos(sf1->motor);
} }

@ -10,8 +10,9 @@
#include "splitflap.h" #include "splitflap.h"
/* initialize dictionary */ /* initialize dictionary
void MultiSplitFlap_Init(void); * numberOfFlaps: Number of flaps to be added to the combination */
void MultiSplitFlap_Init(uint8_t numOfFlaps);
/* de-initialize: deallocate memory etc. */ /* de-initialize: deallocate memory etc. */
void MultiSplitFlap_Deinit(void); void MultiSplitFlap_Deinit(void);
@ -25,6 +26,6 @@ void MultiSplitFlap_AddFlap(SF_Handle_t splitflap);
void MultiSplitFlap_Display(char* sentence[]); void MultiSplitFlap_Display(char* sentence[]);
/* returns the amount of registered split flap displays in the combination */ /* returns the amount of registered split flap displays in the combination */
uint8_t MultiSplitFlap_GetAmountOfSplitFlaps(void); uint8_t MultiSplitFlap_GetAmountOfAddedSplitFlaps(void);
#endif /* MULTI_SPLITFLAP_H_ */ #endif /* MULTI_SPLITFLAP_H_ */

Loading…
Cancel
Save