1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| // récupère l'adresse de la chaine qui correspond à la valeur de l'enum
// enumVal : valeur de l'enum à rechercher
// list : list de pointeur contenant tous les enums gérés (=> chaines de caractères associés)
ROM UINT8* getEnumString(INT32 enumVal, ROM ENUMLIST *list){
static ROM UINT8 strErr[] = "not found";
UINT32 i;
ROM ENUMLIST_ELMT *listEnum;
printf("list(value: %ld): .addr=%p, .size:%ld\r\n", enumVal, list, list->size);
printf("\tsizeof(*list): %ld, sizeof(ENUMLIST_ELMT): %ld\r\n", sizeof(*list), sizeof(ROM ENUMLIST_ELMT));
for(i=0; i<list->size; i++){
listEnum = &(list->listEnum[i]); // list->listEnum est un tableau d'elements de type ENUMLIST_ELMT
if (listEnum->val == enumVal){
printf("\t[OK]addr enum: %p, val: %ld, addr string: %p, val string: %s\r\n", listEnum, listEnum->val, listEnum->str, listEnum->str);
return listEnum->str;
} else if (listEnum->val > enumVal){
printf("\t[ERR]addr enum: %p, val: %ld, addr string: %p, val string: %s\r\n", listEnum, listEnum->val, listEnum->str, listEnum->str);
return strErr;
}
printf("\t[NOK]addr enum: %p, val: %ld, addr string: %p, val string: %s\r\n", listEnum, listEnum->val, listEnum->str, listEnum->str);
//listEnum++;
}
printf("\t[ERR]%s => addr: %p\r\n", strErr, strErr);
return strErr;
} |
Partager