00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00145
00146
00147
00148
00149 #include <aversive.h>
00150
00156 struct menu {
00157 uint8_t type;
00158 void * data;
00159 };
00160
00161
00162
00163
00164
00165
00167 struct menu * menu_left(struct menu * m);
00168
00172 struct menu * menu_right(struct menu * m);
00173
00176 struct menu * menu_down(struct menu * m);
00177
00180 struct menu * menu_up(struct menu * m);
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00194 struct menu * menu_default_update(struct menu * m, char c);
00195
00197 void menu_default_display(struct menu * m);
00198
00199
00200
00201
00202
00203
00204
00206 char * menu_get_name(struct menu * m);
00207
00209 uint8_t menu_get_type(struct menu * m);
00210
00213 uint8_t menu_call_fct(struct menu * m);
00214
00216 struct menu * menu_get_previous(struct menu * m);
00217
00219 struct menu * menu_get_next(struct menu * m);
00220
00222 struct menu * menu_get_parent(struct menu * m);
00223
00225 struct menu * menu_get_first_son(struct menu * m);
00226
00228 struct menu * menu_get_sub(struct menu * m, uint8_t num);
00229
00231 uint8_t menu_get_sub_howmany(struct menu * m);
00232
00233
00234
00235
00236
00237
00238 #define MENU_TYPE_ROOT 0
00239 #define MENU_TYPE_MENU 1
00240 #define MENU_TYPE_FCT_HDR 2
00241 #define MENU_TYPE_FCT_PTR 3
00242 #define MENU_TYPE_FCT_DATA 4
00243 #define MENU_TYPE_END 5
00244 #define MENU_TYPE_UNKNOWN 255
00245
00246 #define MENU_ROOT(text) { MENU_TYPE_ROOT, (void *)text }
00247
00248 #define MENU_START(text) { MENU_TYPE_MENU, (void *)text }
00249
00250 #define MENU_END() { MENU_TYPE_END, NULL }
00251
00252 #define MENU_FCT(text, f, data) \
00253 { MENU_TYPE_FCT_HDR, (void *)text }, \
00254 { MENU_TYPE_FCT_PTR, (void *)f }, \
00255 { MENU_TYPE_FCT_DATA, (void *)data }
00256
00257