#include #include #include #include #include #include #include #include uint8_t detected_levels_count; #define DETECTED_LEVELS_COUNT_MAX 255 char detected_levels_name[DETECTED_LEVELS_COUNT_MAX][9]; #define DETECTED_LEVEL_DESCRIPTION_LENGTH_MAX 48 char detected_level_description[DETECTED_LEVEL_DESCRIPTION_LENGTH_MAX + 1]; #define DETECTED_LEVELS_START_OF_DESCRIPTION 6 static const char detected_levels_start[] = { 0xBD, 0xEE, 0x01, 0x00 }; void detect_levels(void) { char *detected_name; uint8_t *detect_pos = NULL; detected_levels_count = 0; while ((detected_name = ti_Detect(&detect_pos, detected_levels_start)) != NULL) { strcpy(&detected_levels_name[detected_levels_count++][0], detected_name); if (detected_levels_count == DETECTED_LEVELS_COUNT_MAX) break; } ti_CloseAll(); } void detect_level_description(uint8_t index) { ti_var_t appvar; appvar = ti_Open(&detected_levels_name[index][0], "r"); if ((!appvar) || (ti_Read(&detected_level_description[0], DETECTED_LEVELS_START_OF_DESCRIPTION, 1, appvar) != 1) || (ti_Read(&detected_level_description[0], 1, DETECTED_LEVEL_DESCRIPTION_LENGTH_MAX, appvar) <= 0) ) { detected_level_description[0] = 0x00; } ti_CloseAll(); }