add dictionary for splitflap flaps

main
Simon Frei 4 years ago
parent 7ea69ccbd8
commit ea054fc0d3
  1. 59
      ADIS_tinyK22_SplitFlap/source/lib/dict.c
  2. 29
      ADIS_tinyK22_SplitFlap/source/lib/dict.h
  3. 3
      ADIS_tinyK22_SplitFlap/source/platform.c
  4. 52
      ADIS_tinyK22_SplitFlap/source/splitflap.c
  5. 6
      ADIS_tinyK22_SplitFlap/source/splitflap.h
  6. 55
      ADIS_tinyK22_SplitFlap/source/splitflap_flaps.h

@ -0,0 +1,59 @@
/*
* dict.c
*
* Created on: 30 Sep 2022
* Author: simon
*/
#include "dict.h"
dict_t** dictAlloc(void){
return malloc(sizeof(dict_t));
}
void dictDealoc(dict_t** dict){
free(dict);
}
void* getItem(dict_t* dict, char* key){
dict_t *ptr;
for(ptr =dict; ptr !=NULL; ptr=ptr->next){
if(strcmp(ptr->key, key) == 0){
return ptr->value;
}
}
return NULL;
}
void delItem(dict_t** dict, char* key){
dict_t *ptr, *prev;
for(ptr=*dict, prev=NULL; ptr!=NULL; prev=ptr, ptr=ptr->next){
if(strcmp(ptr->key, key) == 0){ // key match?
if(ptr->next != NULL){ // not at end of dict?
if(prev == NULL){
*dict = ptr->next; // item is first one in dict
}else{
prev->next = ptr->next; // not first and last -> set to next
}
}else if(prev != NULL){
prev->next = NULL; // at end, delete last item
}else{
*dict=NULL; // first and last -> only one item in dict
}
}
free(ptr->key);
free(ptr);
}
}
void addItem(dict_t** dict, char* key, void* value){
delItem(dict, key); // if item already exists delete it!
dict_t *d = malloc(sizeof(struct dict_t_struct)); // new dict
d->key = malloc(strlen(key)+1);
// set values
strcpy(d->key, key);
d->value = value;
d->next = *dict;
// item at first pos
*dict=d;
}

@ -0,0 +1,29 @@
/*
* dict.h
*
* Created on: 30 Sep 2022
* Author: simon
*/
#ifndef LIB_DICT_H_
#define LIB_DICT_H_
#include "string.h"
typedef struct dict_t_struct {
char *key;
void *value;
struct dict_t_struct *next;
} dict_t;
dict_t** dictAlloc(void);
void dictDealoc(dict_t** dict);
void* getItem(dict_t* dict, char* key);
void delItem(dict_t** dict, char* key);
void addItem(dict_t** dict, char* key, void* value);
#endif /* LIB_DICT_H_ */

@ -11,6 +11,7 @@
#include "McuLED.h" #include "McuLED.h"
#include "McuGPIO.h" #include "McuGPIO.h"
#include "McuULN2003.h" #include "McuULN2003.h"
#include "splitflap.h"
void PL_Init(void){ void PL_Init(void){
McuLib_Init(); McuLib_Init();
@ -18,10 +19,12 @@ void PL_Init(void){
McuGPIO_Init(); McuGPIO_Init();
McuLED_Init(); McuLED_Init();
McuULN2003_Init(); McuULN2003_Init();
SF_InitConfig();
} }
void PL_Deinit(void){ void PL_Deinit(void){
SF_DeInitConfig();
McuULN2003_Deinit(); McuULN2003_Deinit();
McuLED_Deinit(); McuLED_Deinit();
McuGPIO_Deinit(); McuGPIO_Deinit();

@ -1,4 +1,5 @@
/* /*
#include <splitflap_flaps.h>
* splitflap.c * splitflap.c
* *
* Created on: 29.09.2022 * Created on: 29.09.2022
@ -9,6 +10,57 @@
#include "McuULN2003.h" #include "McuULN2003.h"
#include <stdbool.h> #include <stdbool.h>
#include "McuWait.h" #include "McuWait.h"
#include "lib/dict.h"
#include "splitflap_flaps.h"
static dict_t **splitFlapDict;
void SF_InitConfig(void){
splitFlapDict = dictAlloc();
addItem(splitFlapDict, SF_A, 0);
addItem(splitFlapDict, SF_B, 0);
addItem(splitFlapDict, SF_C, 0);
addItem(splitFlapDict, SF_D, 0);
addItem(splitFlapDict, SF_E, 0);
addItem(splitFlapDict, SF_F, 0);
addItem(splitFlapDict, SF_G, 0);
addItem(splitFlapDict, SF_H, 0);
addItem(splitFlapDict, SF_J, 0);
addItem(splitFlapDict, SF_K, 0);
addItem(splitFlapDict, SF_L, 0);
addItem(splitFlapDict, SF_M, 0);
addItem(splitFlapDict, SF_N, 0);
addItem(splitFlapDict, SF_O, 0);
addItem(splitFlapDict, SF_P, 0);
addItem(splitFlapDict, SF_Q, 0);
addItem(splitFlapDict, SF_R, 0);
addItem(splitFlapDict, SF_S, 0);
addItem(splitFlapDict, SF_T, 0);
addItem(splitFlapDict, SF_U, 0);
addItem(splitFlapDict, SF_V, 0);
addItem(splitFlapDict, SF_W, 0);
addItem(splitFlapDict, SF_X, 0);
addItem(splitFlapDict, SF_Y, 0);
addItem(splitFlapDict, SF_Z, 0);
addItem(splitFlapDict, SF_0, 0);
addItem(splitFlapDict, SF_1, 0);
addItem(splitFlapDict, SF_2, 0);
addItem(splitFlapDict, SF_3, 0);
addItem(splitFlapDict, SF_4, 0);
addItem(splitFlapDict, SF_5, 0);
addItem(splitFlapDict, SF_6, 0);
addItem(splitFlapDict, SF_7, 0);
addItem(splitFlapDict, SF_8, 0);
addItem(splitFlapDict, SF_9, 0);
addItem(splitFlapDict, SF_EXCLAMATION, 0);
addItem(splitFlapDict, SF_QUESTION, 0);
addItem(splitFlapDict, SF_COLON, 0);
addItem(splitFlapDict, SF_SPACE, 0);
}
void SF_DeInitConfig(void){
dictDealoc(splitFlapDict);
}
SF_Handle_t SF_Init(SF_Config_t* instance, int id){ SF_Handle_t SF_Init(SF_Config_t* instance, int id){
SF_t* splitflap; SF_t* splitflap;

@ -35,6 +35,12 @@ typedef struct {
/****** FUNCTIONS ******/ /****** FUNCTIONS ******/
/* initializes dictonary with splitflap flaps position */
void SF_InitConfig(void);
/* free splitflap flaps dictionary */
void SF_DeInitConfig(void);
/* split flap initialization /* split flap initialization
* only pass configured types, they do not need to be initialized. * only pass configured types, they do not need to be initialized.
* Initialization will be made inside the SF_Init method */ * Initialization will be made inside the SF_Init method */

@ -0,0 +1,55 @@
/*
* splitflap_display.h
*
* Created on: 30 Sep 2022
* Author: simon
*/
#ifndef SPLITFLAP_FLAPS_H_
#define SPLITFLAP_FLAPS_H_
#include <string.h>
#define SF_A (char*)'A'
#define SF_B (char*)'B'
#define SF_C (char*)'C'
#define SF_D (char*)'D'
#define SF_E (char*)'E'
#define SF_F (char*)'F'
#define SF_G (char*)'G'
#define SF_H (char*)'H'
#define SF_I (char*)'I'
#define SF_J (char*)'J'
#define SF_K (char*)'K'
#define SF_L (char*)'L'
#define SF_M (char*)'M'
#define SF_N (char*)'N'
#define SF_O (char*)'O'
#define SF_P (char*)'P'
#define SF_Q (char*)'Q'
#define SF_R (char*)'R'
#define SF_S (char*)'S'
#define SF_T (char*)'T'
#define SF_U (char*)'U'
#define SF_V (char*)'V'
#define SF_W (char*)'W'
#define SF_X (char*)'X'
#define SF_Y (char*)'Y'
#define SF_Z (char*)'Z'
#define SF_0 (char*)'0'
#define SF_1 (char*)'1'
#define SF_2 (char*)'2'
#define SF_3 (char*)'3'
#define SF_4 (char*)'4'
#define SF_5 (char*)'5'
#define SF_6 (char*)'6'
#define SF_7 (char*)'7'
#define SF_8 (char*)'8'
#define SF_9 (char*)'9'
#define SF_EXCLAMATION (char*)'!'
#define SF_QUESTION (char*)'?'
#define SF_COLON (char*)':'
#define SF_SPACE (char*)' '
#endif /* SPLITFLAP_FLAPS_H_ */
Loading…
Cancel
Save