1 /*
2  *
3  * FocalTech TouchScreen driver.
4  *
5  * Copyright (c) 2012-2018, FocalTech Systems, Ltd., all rights reserved.
6  *
7  * This software is licensed under the terms of the GNU General Public
8  * License version 2, as published by the Free Software Foundation, and
9  * may be copied, distributed, and modified under those terms.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  */
17 
18 #ifndef _INI_H
19 #define _INI_H
20 /*****************************************************************************
21 * Private constant and macro definitions using #define
22 *****************************************************************************/
23 #define MAX_KEYWORD_NUM                         (500)
24 #define MAX_KEYWORD_NAME_LEN                    (50)
25 #define MAX_KEYWORD_VALUE_LEN                   (512)
26 #define MAX_KEYWORD_VALUE_ONE_LEN               (16)
27 #define MAX_INI_LINE_LEN        (MAX_KEYWORD_NAME_LEN + MAX_KEYWORD_VALUE_LEN)
28 #define MAX_INI_SECTION_NUM                     (20)
29 #define MAX_IC_NAME_LEN                         (512)	//The original value is 32
30 #define MAX_TEST_ITEM                           (20)
31 #define IC_CODE_OFFSET                          (16)
32 
33 /*****************************************************************************
34 * enumerations, structures and unions
35 *****************************************************************************/
36 struct ini_ic_type {
37     char ic_name[MAX_IC_NAME_LEN];
38     u32 ic_type;
39 };
40 
41 enum line_type {
42     LINE_SECTION = 1,
43     LINE_KEYWORD = 2 ,
44     LINE_OTHER = 3,
45 };
46 
47 struct ini_keyword {
48     char name[MAX_KEYWORD_NAME_LEN];
49     char value[MAX_KEYWORD_VALUE_LEN];
50 };
51 
52 struct ini_section {
53     char name[MAX_KEYWORD_NAME_LEN];
54     int keyword_num;
55     /* point to ini.tmp, don't need free */
56     struct ini_keyword *keyword;
57 };
58 
59 struct ini_data {
60     char *data;
61     int length;
62     int keyword_num_total;
63     int section_num;
64     struct ini_section section[MAX_INI_SECTION_NUM];
65     struct ini_keyword *tmp;
66     char ic_name[MAX_IC_NAME_LEN];
67     u32 ic_code;
68 };
69 
70 #define TEST_ITEM_INCELL            { \
71     "SHORT_CIRCUIT_TEST", \
72     "OPEN_TEST", \
73     "CB_TEST", \
74     "RAWDATA_TEST", \
75     "LCD_NOISE_TEST", \
76     "KEY_SHORT_TEST", \
77 }
78 
79 #define BASIC_THRESHOLD_INCELL      { \
80     "ShortCircuit_ResMin", "ShortCircuit_VkResMin", \
81     "OpenTest_CBMin", "OpenTest_Check_K1", "OpenTest_K1Threshold", "OpenTest_Check_K2", "OpenTest_K2Threshold", \
82     "CBTest_Min", "CBTest_Max", \
83     "CBTest_VKey_Check", "CBTest_Min_Vkey", "CBTest_Max_Vkey", \
84     "RawDataTest_Min", "RawDataTest_Max", \
85     "RawDataTest_VKey_Check", "RawDataTest_Min_VKey", "RawDataTest_Max_VKey", \
86     "LCD_NoiseTest_Frame", "LCD_NoiseTest_Coefficient", "LCD_NoiseTest_Coefficient_key", \
87 }
88 
89 
90 #define TEST_ITEM_MC_SC             { \
91     "RAWDATA_TEST", \
92     "UNIFORMITY_TEST", \
93     "SCAP_CB_TEST", \
94     "SCAP_RAWDATA_TEST", \
95     "WEAK_SHORT_CIRCUIT_TEST", \
96     "PANEL_DIFFER_TEST", \
97 }
98 
99 #define BASIC_THRESHOLD_MC_SC       { \
100     "RawDataTest_High_Min", "RawDataTest_High_Max", "RawDataTest_HighFreq", \
101     "RawDataTest_Low_Min", "RawDataTest_Low_Max", "RawDataTest_LowFreq", \
102     "UniformityTest_Check_Tx", "UniformityTest_Check_Rx","UniformityTest_Check_MinMax", \
103     "UniformityTest_Tx_Hole", "UniformityTest_Rx_Hole", "UniformityTest_MinMax_Hole", \
104     "SCapCbTest_OFF_Min", "SCapCbTest_OFF_Max", "ScapCBTest_SetWaterproof_OFF", \
105     "SCapCbTest_ON_Min", "SCapCbTest_ON_Max", "ScapCBTest_SetWaterproof_ON", \
106     "SCapRawDataTest_OFF_Min", "SCapRawDataTest_OFF_Max", "SCapRawDataTest_SetWaterproof_OFF", \
107     "SCapRawDataTest_ON_Min", "SCapRawDataTest_ON_Max", "SCapRawDataTest_SetWaterproof_ON", \
108     "WeakShortTest_CG", "WeakShortTest_CC", \
109     "PanelDifferTest_Min", "PanelDifferTest_Max", \
110 }
111 
112 #define TEST_ITEM_SC                { \
113     "CB_TEST", \
114     "DELTA_CB_TEST", \
115     "RAWDATA_TEST", \
116 }
117 
118 #define BASIC_THRESHOLD_SC          { \
119     "RawDataTest_Min", "RawDataTest_Max", \
120     "CbTest_Min", "CbTest_Max", \
121     "DeltaCbTest_Base", "DeltaCbTest_Differ_Max", \
122     "DeltaCbTest_Include_Key_Test", "DeltaCbTest_Key_Differ_Max", \
123     "DeltaCbTest_Deviation_S1", "DeltaCbTest_Deviation_S2", "DeltaCbTest_Deviation_S3", \
124     "DeltaCbTest_Deviation_S4", "DeltaCbTest_Deviation_S5", "DeltaCbTest_Deviation_S6", \
125     "DeltaCbTest_Set_Critical", "DeltaCbTest_Critical_S1", "DeltaCbTest_Critical_S2", \
126     "DeltaCbTest_Critical_S3", "DeltaCbTest_Critical_S4", \
127     "DeltaCbTest_Critical_S5", "DeltaCbTest_Critical_S6", \
128 }
129 
130 /*****************************************************************************
131 * Global variable or extern global variabls/functions
132 *****************************************************************************/
133 int fts_test_get_testparam_from_ini(char *config_name);
134 int get_keyword_value(char *section, char *name, int *value);
135 
136 #define get_value_interface(name, value) \
137     get_keyword_value("Interface", name, value)
138 #define get_value_basic(name, value) \
139     get_keyword_value("Basic_Threshold", name, value)
140 #define get_value_detail(name, value) \
141     get_keyword_value("SpecialSet", name, value)
142 #define get_value_testitem(name, value) \
143     get_keyword_value("TestItem", name, value)
144 #endif /* _INI_H */
145