Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define NBRMAXMENU 5
- #define TAILLE_BUFFER_MENU 20
- //declaration de la structure
- typedef struct {
- uint8_t niveauMenu;
- uint8_t positionMenu;
- uint8_t niveauParent;
- uint8_t niveauEnfant;
- const char* description;
- } STR_MENUDEF;
- const char TXT_PREDEFINI[] PROGMEM = "Predefini";
- const char TXT_MANUEL[] PROGMEM = "Manuel";
- const char TXT_QUITTER[] PROGMEM = "Quitter";
- const STR_MENUDEF _m1 PROGMEM = {1,1,1,2,TXT_PREDEFINI};
- const STR_MENUDEF _m2 PROGMEM = {1,2,1,27,TXT_MANUEL};
- const STR_MENUDEF _m3 PROGMEM = {1,3,1,0,TXT_QUITTER};
- const STR_MENUDEF tabMenuStruct[] PROGMEM = { _m1, _m2,_m3 };
- int8_t tabMenuIndex[NBRMAXMENU];
- void initTabMenuIndex(){
- for(uint8_t i = 0 ; i < sizeof(tabMenuIndex); i++){
- tabMenuIndex[i]=-1;
- }
- }
- void getIndexMenu(uint8_t niveau){
- uint8_t tabIndex=0;
- initTabMenuIndex();
- for(int i = 0 ; i < (sizeof(tabMenuStruct) / sizeof(tabMenuStruct[0])) ; i++){
- int niveauMenu;
- niveauMenu = pgm_read_byte((&(tabMenuStruct[i]).niveauMenu)) ;
- if( niveauMenu == niveau){
- if(tabIndex < NBRMAXMENU ){
- tabMenuIndex[tabIndex]=i;
- tabIndex++;
- }
- }
- }
- }
- void getMenu(uint8_t indexMenu, STR_MENUDEF *p_menu){
- p_menu->niveauMenu = (uint8_t) pgm_read_byte((&(tabMenuStruct[indexMenu]).niveauMenu)) ;
- p_menu->positionMenu = pgm_read_byte((&(tabMenuStruct[indexMenu]).positionMenu)) ;
- p_menu->niveauParent = pgm_read_byte((&(tabMenuStruct[indexMenu]).niveauParent)) ;
- p_menu->niveauEnfant = pgm_read_byte((&(tabMenuStruct[indexMenu]).niveauEnfant)) ;
- char description[TAILLE_BUFFER_MENU];
- strcpy_P(description, (char*)pgm_read_word(&(tabMenuStruct[indexMenu].description)));
- p_menu->description = description;
- }
- void test1(){
- STR_MENUDEF str_menu ={0,0,0,0,""};
- getMenu(1,&str_menu);
- Serial.println(F( " ----- TEST 1 ------- " ));
- Serial.print(F( " str_menu.niveauMenu " ));
- Serial.println( str_menu.niveauMenu );
- Serial.print(F( " str_menu.positionMenu " ));
- Serial.println( str_menu.positionMenu );
- Serial.print(F( " str_menu.niveauParent " ));
- Serial.println( str_menu.niveauParent );
- Serial.print(F( " str_menu.niveauEnfant " ));
- Serial.println( str_menu.niveauEnfant );
- Serial.print(F( " str_menu.description " ));
- Serial.println( str_menu.description );
- }
- void test2(){
- Serial.println(F( " ----- TEST 2 ------- " ));
- getIndexMenu(1);
- for(uint8_t i =0 ; i < sizeof(tabMenuIndex) ; i++){
- if(tabMenuIndex[i] >= 0 ){
- Serial.print(F( " tabMenuIndex[i] " ));
- Serial.println( tabMenuIndex[i] );
- STR_MENUDEF str_menu ={0,0,0,0,""};
- getMenu(tabMenuIndex[i],&str_menu);
- Serial.print(F( " str_menu.niveauMenu " ));
- Serial.println( str_menu.niveauMenu );
- Serial.print(F( " str_menu.positionMenu " ));
- Serial.println( str_menu.positionMenu );
- Serial.print(F( " str_menu.niveauParent " ));
- Serial.println( str_menu.niveauParent );
- Serial.print(F( " str_menu.niveauEnfant " ));
- Serial.println( str_menu.niveauEnfant );
- Serial.print(F( " str_menu.description " ));
- Serial.println( str_menu.description );
- }
- }
- }
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(9600);
- //test1();
- test2();
- }
- void loop() {
- // put your main code here, to run repeatedly:
- }
Advertisement
Add Comment
Please, Sign In to add comment