123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- #ifdef CONFIG_SPECIALFILE1_CONTAINCHECK
- #include "stdio.h"
- #include "types.h"
- #include <rom_def.h>
- #include <factory_file_parser.h>
- #include <drv_kmf_interface.h>
- #define FIELD_NUM 5
- BOOL bFactory_File_Exit=FALSE;
- struct field {
- const char *tag;
- int value;
- };
- struct factory_file {
- struct field fields[FIELD_NUM];
- };
- struct factory_file ft_file = { \
- { \
- {"P",0}, \
- {"B",0}, \
- {"M",0}, \
- {"F",0}, \
- {"R",0}, \
- },\
- };
- static void get_line(char *file_data, int line, char *ret_line)
- {
- int i, j, s, e;
- int current_line = 0;
- char *ptr;
-
- s = 0;
- for (i = 0; i < 2048; i++) {
- if (file_data[i] == '\n' || file_data[i] == '\0') {
- current_line++;
- if (current_line > line) {
- e = i;
- break;
- } else {
- s = i+1;
- }
- }
- }
- memcpy(ret_line, &file_data[s], e-s);
- ret_line[e-s] = '\0';
- if (ret_line[e-s-1] == '\r')
- ret_line[e-s-1] = '\0';
- }
- static int paser_field(char *line)
- {
- char tag[256];
- char value[256];
- int i,j;
- j = 0;
- for (i = 0; i < 256; i++) {
- if ((line[i] != ' ') && (line[i] != ':')) {
- tag[j++] = line[i];
- } else if (line[i] == ':') {
- tag[j] = '\0';
- i++;
- break;
- }
- }
- j = 0;
- for (i; i < 256; i++) {
- if ((line[i] != ' ') && (line[i] != '\0')) {
- if ((line[i] >= '0') && (line[i] <= '9'))
- value[j++] = line[i];
- } else if (line[i] == '\0') {
- value[j] = '\0';
- break;
- }
- }
- for (i = 0; i < FIELD_NUM; i++) {
- if(!strcmp(ft_file.fields[i].tag, tag)) {
- ft_file.fields[i].value = myatoi(value);
- break;
- }
- }
- if (i != FIELD_NUM) {
- printf("tag:%s value:%s\n", tag, value);
- return TRUE;
- } else {
- printf("unknow tag:%s\n", tag);
- return FALSE;
- }
- }
- BOOL parser_special_file(char *file_data)
- {
- int i,ret;
- char line[256];
- for (i = 0; i < 10; i++) {
- memset(line,0x0,256);
- get_line(file_data,i, line);
- if (line[0] == 'Z')
- break;
- ret = paser_field(line);
- if (ret == FALSE) {
- printf(" special_file format error!!!!\n");
- return FALSE;
- }
- }
- if(get_special_value("P")>0 && get_special_value("P")<4)
- bFactory_File_Exit = TRUE;
- return TRUE;
- }
- int get_special_value(const char *tag)
- {
- int i;
- int ret = -1;
- for (i = 0; i < FIELD_NUM; i++) {
- if(!strcmp(ft_file.fields[i].tag, tag)) {
- ret = ft_file.fields[i].value;
- break;
- }
- }
- return ret;
- }
- BOOL has_factory_file()
- {
- return bFactory_File_Exit;
- }
- void factory_file_setting(Factory_File_Setting status)
- {
- BootRomShareData_t *BootromShareData = (void *) KMFBR_ShareData_ShadowAddress;
- int panel_index = 0;
- int BurnMode = 0;
- if(bFactory_File_Exit)
- {
- if(status==Factory_Panel_Resolution)
- {
- panel_index = get_special_value("P");
- switch(panel_index)
- {
- case 0:
- BootromShareData->Panelresolution = 0;
- break;
- case 1:
- BootromShareData->Panelresolution = 1440;
- break;
- case 2:
- BootromShareData->Panelresolution = 1366;
- break;
- case 3:
- BootromShareData->Panelresolution = 1920;
- break;
- default:
- BootromShareData->Panelresolution = 0;
- break;
- }
- }
- else if (status==Factory_BurnMode)
- {
- BurnMode = get_special_value("B");
- if(BurnMode)
- *(volatile UINT8 *)OnEvent_INT_Status_MMIOAddress |= Special_FileBit1;
- }
- }
- }
- #endif //CONFIG_SPECIALFILE1_CONTAINCHECK
|