xref: /utopia/UTPA2-700.0.x/modules/pws/hal/M7821/pws/pws_table_script.py (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xiimport sys
2*53ee8cc1Swenshuai.xiimport xlrd
3*53ee8cc1Swenshuai.xi
4*53ee8cc1Swenshuai.xi###enter file name
5*53ee8cc1Swenshuai.xi#excel_filename_PWS_table=raw_input('Enter PWS excel fle:')
6*53ee8cc1Swenshuai.xi#if excel_filename_PWS_table == '' :
7*53ee8cc1Swenshuai.xi#    print "Input Error....\n"
8*53ee8cc1Swenshuai.xi#    sys.exit()
9*53ee8cc1Swenshuai.xi
10*53ee8cc1Swenshuai.xi###Excel file handle
11*53ee8cc1Swenshuai.xi# book_pws = xlrd.open_workbook(excel_filename_PWS_table)
12*53ee8cc1Swenshuai.xibook_pws = xlrd.open_workbook("Maserati_power_saving_table.xls")
13*53ee8cc1Swenshuai.xi#print "The number of sheets is ", book_pws.nsheets
14*53ee8cc1Swenshuai.xi#print "Sheet(s) name(s):", book_pws.sheet_names()
15*53ee8cc1Swenshuai.xi
16*53ee8cc1Swenshuai.xi#get ver info sheet
17*53ee8cc1Swenshuai.xisheet_change_history = book_pws.sheet_by_name("Change_History")
18*53ee8cc1Swenshuai.xipws_table_version = sheet_change_history.col_values(0, 1, None)
19*53ee8cc1Swenshuai.xipws_table_date = sheet_change_history.col_values(1, 1, None)
20*53ee8cc1Swenshuai.xipws_table_version_length = len(pws_table_version)-1
21*53ee8cc1Swenshuai.xi#pws_table_ver = pws_table_version[pws_table_version_length] +'_'+ pws_table_date[pws_table_version_length]
22*53ee8cc1Swenshuai.xipws_table_ver = str(pws_table_version[pws_table_version_length]) +'_'+ str(pws_table_date[pws_table_version_length])
23*53ee8cc1Swenshuai.xiprint "Chage history info: "
24*53ee8cc1Swenshuai.xiprint pws_table_ver
25*53ee8cc1Swenshuai.xi
26*53ee8cc1Swenshuai.xi#get sheet info sheet
27*53ee8cc1Swenshuai.xisheet_list_info = book_pws.sheet_by_name("Sheet_Info")
28*53ee8cc1Swenshuai.xi
29*53ee8cc1Swenshuai.xi#get IP list
30*53ee8cc1Swenshuai.xisheet_IP_list = sheet_list_info.col_values(0, 2, None)
31*53ee8cc1Swenshuai.xisheet_IP_list_length = len(sheet_IP_list)-1
32*53ee8cc1Swenshuai.xi#remove empty string in sheet_IP_list
33*53ee8cc1Swenshuai.xiwhile sheet_IP_list_length >= 0:
34*53ee8cc1Swenshuai.xi    if sheet_IP_list[sheet_IP_list_length] == "":
35*53ee8cc1Swenshuai.xi        del sheet_IP_list[sheet_IP_list_length]
36*53ee8cc1Swenshuai.xi    sheet_IP_list_length = sheet_IP_list_length -1
37*53ee8cc1Swenshuai.xisheet_IP_list_length = len(sheet_IP_list)-1
38*53ee8cc1Swenshuai.xiprint "Sheet IP list info: "
39*53ee8cc1Swenshuai.xiprint sheet_IP_list
40*53ee8cc1Swenshuai.xi
41*53ee8cc1Swenshuai.xi#get Input source list
42*53ee8cc1Swenshuai.xisheet_Input_list_useCase = sheet_list_info.col_values(1, 2, None)
43*53ee8cc1Swenshuai.xisheet_Input_list_useCase_length = len(sheet_Input_list_useCase)-1
44*53ee8cc1Swenshuai.xisheet_Input_list = sheet_list_info.col_values(2, 2, None)
45*53ee8cc1Swenshuai.xisheet_Input_list_length = len(sheet_Input_list)-1
46*53ee8cc1Swenshuai.xisheet_Input_list_ref = sheet_list_info.col_values(3, 2, None)
47*53ee8cc1Swenshuai.xisheet_Input_list_ref_length = len(sheet_Input_list_ref)-1
48*53ee8cc1Swenshuai.xi#remove empty string in sheet_Input_list_useCase_length
49*53ee8cc1Swenshuai.xiwhile sheet_Input_list_useCase_length >= 0:
50*53ee8cc1Swenshuai.xi    if sheet_Input_list_useCase[sheet_Input_list_useCase_length] == "":
51*53ee8cc1Swenshuai.xi        del sheet_Input_list_useCase[sheet_Input_list_useCase_length]
52*53ee8cc1Swenshuai.xi    sheet_Input_list_useCase_length = sheet_Input_list_useCase_length -1
53*53ee8cc1Swenshuai.xisheet_Input_list_useCase_length = len(sheet_Input_list_useCase)-1
54*53ee8cc1Swenshuai.xi#remove empty string in sheet_Input_list_length
55*53ee8cc1Swenshuai.xiwhile sheet_Input_list_length >= 0:
56*53ee8cc1Swenshuai.xi    if sheet_Input_list[sheet_Input_list_length] == "":
57*53ee8cc1Swenshuai.xi        del sheet_Input_list[sheet_Input_list_length]
58*53ee8cc1Swenshuai.xi    sheet_Input_list_length = sheet_Input_list_length -1
59*53ee8cc1Swenshuai.xisheet_Input_list_length = len(sheet_Input_list)-1
60*53ee8cc1Swenshuai.xi#remove empty string in sheet_Input_list_ref_length
61*53ee8cc1Swenshuai.xiwhile sheet_Input_list_ref_length >= 0:
62*53ee8cc1Swenshuai.xi    if sheet_Input_list_ref[sheet_Input_list_ref_length] == "":
63*53ee8cc1Swenshuai.xi        del sheet_Input_list_ref[sheet_Input_list_ref_length]
64*53ee8cc1Swenshuai.xi    sheet_Input_list_ref_length = sheet_Input_list_ref_length -1
65*53ee8cc1Swenshuai.xisheet_Input_list_ref_length = len(sheet_Input_list_ref)-1
66*53ee8cc1Swenshuai.xi#print "Sheet Input list info: "
67*53ee8cc1Swenshuai.xi#print sheet_Input_list
68*53ee8cc1Swenshuai.xi#print "Sheet input list length:"
69*53ee8cc1Swenshuai.xi#print sheet_Input_list_length
70*53ee8cc1Swenshuai.xi#print "sheet_Input_list_useCase ", sheet_Input_list_useCase
71*53ee8cc1Swenshuai.xi#set Input source list ref directory type
72*53ee8cc1Swenshuai.xiinput_source_ref = {}
73*53ee8cc1Swenshuai.xiinput_source_ref_offset = 0
74*53ee8cc1Swenshuai.xiwhile sheet_Input_list_ref_length >= 0:
75*53ee8cc1Swenshuai.xi    input_source_ref[sheet_Input_list_ref[sheet_Input_list_ref_length]] = input_source_ref_offset
76*53ee8cc1Swenshuai.xi    input_source_ref_offset = input_source_ref_offset + 1
77*53ee8cc1Swenshuai.xi    sheet_Input_list_ref_length = sheet_Input_list_ref_length - 1
78*53ee8cc1Swenshuai.xisheet_Input_list_ref_length = len(sheet_Input_list_ref)-1
79*53ee8cc1Swenshuai.xi#print "Sheet Input list info ref:", sheet_Input_list_ref
80*53ee8cc1Swenshuai.xi#print input_source_ref
81*53ee8cc1Swenshuai.xi#set Input source list directory type
82*53ee8cc1Swenshuai.xiinput_source_list = {}
83*53ee8cc1Swenshuai.xiwhile sheet_Input_list_length >= 0:
84*53ee8cc1Swenshuai.xi    input_source_list[sheet_Input_list_useCase[sheet_Input_list_length]] = sheet_Input_list[sheet_Input_list_length]
85*53ee8cc1Swenshuai.xi    sheet_Input_list_length = sheet_Input_list_length - 1
86*53ee8cc1Swenshuai.xisheet_Input_list_length = len(sheet_Input_list)-1
87*53ee8cc1Swenshuai.xi#print "input_source_list dir ", input_source_list
88*53ee8cc1Swenshuai.xi###text file handle
89*53ee8cc1Swenshuai.xi#open file (pws_setting_info_table.h)
90*53ee8cc1Swenshuai.xipws_table_file = open('mhal_pws_setting_info_table.h','w')
91*53ee8cc1Swenshuai.xipws_table_file.write('#ifndef _PWS_SETTING_INFO_TABLE_H_\n')
92*53ee8cc1Swenshuai.xipws_table_file.write('#define _PWS_SETTING_INFO_TABLE_H_\n\n')
93*53ee8cc1Swenshuai.xipws_table_file.write('#include \"MsTypes.h\"\n\n')
94*53ee8cc1Swenshuai.xi
95*53ee8cc1Swenshuai.xi#write pws data structure
96*53ee8cc1Swenshuai.xipws_table_file.write('typedef   struct   {\n')
97*53ee8cc1Swenshuai.xipws_table_file.write('    MS_U32     u32RegAddr;\n')
98*53ee8cc1Swenshuai.xipws_table_file.write('    MS_U8     u8RegMask;\n')
99*53ee8cc1Swenshuai.xipws_table_file.write('    /*MS_U16     u16OffOnFlag;*/\n')
100*53ee8cc1Swenshuai.xipws_table_file.write('    MS_BOOL     bInvert;\n')
101*53ee8cc1Swenshuai.xipws_table_file.write('    const char regName[32];//*regName;\n')
102*53ee8cc1Swenshuai.xipws_table_file.write('}PWS_TABLE_INFO;\n\n')
103*53ee8cc1Swenshuai.xi
104*53ee8cc1Swenshuai.xi#write pws table info
105*53ee8cc1Swenshuai.xipws_table_file.write('static const PWS_TABLE_INFO pws_setting_info_table[] =\n')
106*53ee8cc1Swenshuai.xipws_table_file.write('{\n')
107*53ee8cc1Swenshuai.xiPWS_Items = 0 #total pws items
108*53ee8cc1Swenshuai.xioffOnBitmap_for_pws_table = [] #for pws table use include in api layer
109*53ee8cc1Swenshuai.xiregName_for_pws_table = [] #for pws table use include in api layer
110*53ee8cc1Swenshuai.xioffOnBitmap_regName_for_pws_table_index = 0
111*53ee8cc1Swenshuai.xi
112*53ee8cc1Swenshuai.xipws_init_table_IP_RegName = []  #for pws init table use that all OFF or ON
113*53ee8cc1Swenshuai.xipws_init_table_IP_Address = []  #for pws init table use that all OFF or ON
114*53ee8cc1Swenshuai.xipws_init_table_IP_Mask = []     #for pws init table use that all OFF or ON
115*53ee8cc1Swenshuai.xipws_init_table_IP_Invert = []   #for pws init table use that all OFF or ON
116*53ee8cc1Swenshuai.xipws_init_table_offOnBitmap = [] #for pws init table use that all OFF or ON
117*53ee8cc1Swenshuai.xipws_init_regName_for_pws_table_index = 0
118*53ee8cc1Swenshuai.xi
119*53ee8cc1Swenshuai.xifor x in sheet_IP_list:
120*53ee8cc1Swenshuai.xi    sheet_IP = book_pws.sheet_by_name(x)
121*53ee8cc1Swenshuai.xi    sheet_IP_Valid = sheet_IP.col_values(5, 2, None)
122*53ee8cc1Swenshuai.xi    sheet_IP_Invert = sheet_IP.col_values(4, 2, None)
123*53ee8cc1Swenshuai.xi    sheet_IP_RegName = sheet_IP.col_values(1, 2, None)
124*53ee8cc1Swenshuai.xi    sheet_IP_Address = sheet_IP.col_values(2, 2, None)
125*53ee8cc1Swenshuai.xi    sheet_IP_Mask = sheet_IP.col_values(3, 2, None)
126*53ee8cc1Swenshuai.xi    #for getting offOn flag, init value
127*53ee8cc1Swenshuai.xi    offOnBitmap = [] #OffOnFlag use
128*53ee8cc1Swenshuai.xi    offOnFlag_length = 0
129*53ee8cc1Swenshuai.xi    #offOnFlag_value = 0x0000
130*53ee8cc1Swenshuai.xi    sheet_IP_RegName_length = len(sheet_IP_RegName) -1 #zero-based
131*53ee8cc1Swenshuai.xi
132*53ee8cc1Swenshuai.xi###to be finished
133*53ee8cc1Swenshuai.xi    #print "sheet_IP_list_length :", sheet_IP_list_length, "!!!"
134*53ee8cc1Swenshuai.xi    #print "sheet_Input_list_useCase_length :", sheet_Input_list_useCase_length
135*53ee8cc1Swenshuai.xi    ###sheet_IP_OffOnFlag_inputSource = sheet_IP.row_values(1, 6, (6+(sheet_IP_list_length+1))) #need modify
136*53ee8cc1Swenshuai.xi    sheet_IP_OffOnFlag_inputSource = sheet_IP.row_values(1, 6, (6+(sheet_Input_list_useCase_length+1))) #need modify
137*53ee8cc1Swenshuai.xi    #print "sheet_IP_OffOnFlag_inputSource ", sheet_IP_OffOnFlag_inputSource
138*53ee8cc1Swenshuai.xi
139*53ee8cc1Swenshuai.xi    while offOnFlag_length <= sheet_IP_RegName_length :
140*53ee8cc1Swenshuai.xi        ###sheet_IP_OffOnFlag = sheet_IP.row_values((2+offOnFlag_length), 6, (6+(sheet_IP_list_length+1))) #need modify
141*53ee8cc1Swenshuai.xi        sheet_IP_OffOnFlag = sheet_IP.row_values((2+offOnFlag_length), 6, (6+(sheet_Input_list_useCase_length+1))) #need modify
142*53ee8cc1Swenshuai.xi
143*53ee8cc1Swenshuai.xi        offOnBitmap_all_OFF_or_ON = [] #for calculate if all source is OFF or ON
144*53ee8cc1Swenshuai.xi
145*53ee8cc1Swenshuai.xi        #print "sheet_IP_OffOnFlag ", sheet_IP_OffOnFlag, "IP list name", x
146*53ee8cc1Swenshuai.xi        #print "offOnFlag_length :",offOnFlag_length
147*53ee8cc1Swenshuai.xi        input_offOnFlag_length = 0
148*53ee8cc1Swenshuai.xi        #input_offOnFlag_shift_offset = sheet_Input_list_length
149*53ee8cc1Swenshuai.xi        #print "get input_source_ref dir value :", input_source_ref['CVBS']
150*53ee8cc1Swenshuai.xi###        if sheet_IP_Invert[offOnFlag_length] == "N" :
151*53ee8cc1Swenshuai.xi        offOnFlag_value = 0x0000    #off = 0x01, on = 0x00
152*53ee8cc1Swenshuai.xi
153*53ee8cc1Swenshuai.xi###        else :
154*53ee8cc1Swenshuai.xi###            offOnFlag_value = 0xFFFF    #off = 0x00, on = 0x01
155*53ee8cc1Swenshuai.xi
156*53ee8cc1Swenshuai.xi        #print "input_offOnFlag_length >>>", input_offOnFlag_length, "sheet_Input_list_length>>>", sheet_Input_list_length
157*53ee8cc1Swenshuai.xi
158*53ee8cc1Swenshuai.xi        while input_offOnFlag_length <= sheet_Input_list_length:
159*53ee8cc1Swenshuai.xi            input_offOnFlag_shift_offset = input_source_ref[input_source_list[sheet_IP_OffOnFlag_inputSource[input_offOnFlag_length]]]
160*53ee8cc1Swenshuai.xi            #print "input_offOnFlag_shift_offset ", input_offOnFlag_shift_offset
161*53ee8cc1Swenshuai.xi            #print "input_source_ref ", input_source_ref
162*53ee8cc1Swenshuai.xi            #print "input_source_list ", input_source_list[sheet_IP_OffOnFlag_inputSource[input_offOnFlag_length]]
163*53ee8cc1Swenshuai.xi###            if sheet_IP_Invert[offOnFlag_length] == "N" : #off = 0x01, on = 0x00
164*53ee8cc1Swenshuai.xi###                #print "No invert"
165*53ee8cc1Swenshuai.xi            if sheet_IP_OffOnFlag[input_offOnFlag_length] == "ON" :#need modify
166*53ee8cc1Swenshuai.xi                offOnBitmap_all_OFF_or_ON.insert(input_offOnFlag_length, 0x00) ###ON
167*53ee8cc1Swenshuai.xi                #offOnFlag_value = offOnFlag_value & ~(0x01 << input_offOnFlag_length)
168*53ee8cc1Swenshuai.xi                offOnFlag_value = offOnFlag_value & ~(0x01 << input_offOnFlag_shift_offset)
169*53ee8cc1Swenshuai.xi            else : #need modify
170*53ee8cc1Swenshuai.xi                offOnBitmap_all_OFF_or_ON.insert(input_offOnFlag_length, 0x01) ###OFF
171*53ee8cc1Swenshuai.xi                #offOnFlag_value = offOnFlag_value | (0x01 << input_offOnFlag_length)
172*53ee8cc1Swenshuai.xi                offOnFlag_value = offOnFlag_value | (0x01 << input_offOnFlag_shift_offset)
173*53ee8cc1Swenshuai.xi###            else : #off = 0x00, on = 0x01
174*53ee8cc1Swenshuai.xi###                #print "Yes invert, "
175*53ee8cc1Swenshuai.xi###                if sheet_IP_OffOnFlag[input_offOnFlag_length] == "ON" :#need modify
176*53ee8cc1Swenshuai.xi###                    offOnBitmap_all_OFF_or_ON.insert(input_offOnFlag_length, 0x01) ###OFF
177*53ee8cc1Swenshuai.xi###                    #offOnFlag_value = offOnFlag_value | (0x01 << input_offOnFlag_length)
178*53ee8cc1Swenshuai.xi###                    offOnFlag_value = offOnFlag_value | (0x01 << input_offOnFlag_shift_offset)
179*53ee8cc1Swenshuai.xi###                 #print offOnFlag_value
180*53ee8cc1Swenshuai.xi###                else : #need modify
181*53ee8cc1Swenshuai.xi###                    offOnBitmap_all_OFF_or_ON.insert(input_offOnFlag_length, 0x00) ###OFF
182*53ee8cc1Swenshuai.xi###                    #offOnFlag_value = offOnFlag_value & ~(0x01 << input_offOnFlag_length)
183*53ee8cc1Swenshuai.xi###                    offOnFlag_value = offOnFlag_value & ~(0x01 << input_offOnFlag_shift_offset)
184*53ee8cc1Swenshuai.xi###                    #print offOnFlag_value
185*53ee8cc1Swenshuai.xi            #input_offOnFlag_shift_offset = input_offOnFlag_shift_offset - 1
186*53ee8cc1Swenshuai.xi            input_offOnFlag_length = input_offOnFlag_length + 1
187*53ee8cc1Swenshuai.xi
188*53ee8cc1Swenshuai.xi        #print "sheet_IP_RegName>>>",sheet_IP_RegName[sheet_IP_RegName_length] ,", offOnBitmap_all_OFF_or_ON >>>>>>", offOnBitmap_all_OFF_or_ON
189*53ee8cc1Swenshuai.xi        offOnBitmap_all_OFF_or_ON_length = len(offOnBitmap_all_OFF_or_ON) - 1
190*53ee8cc1Swenshuai.xi        #print "offOnBitmap_all_OFF_or_ON_length >>>", offOnBitmap_all_OFF_or_ON_length
191*53ee8cc1Swenshuai.xi        offOnBitmap_all_OFF_or_ON_length_index = 0
192*53ee8cc1Swenshuai.xi        #print "offOnBitmap_all_OFF_or_ON_length_index>>", offOnBitmap_all_OFF_or_ON_length_index
193*53ee8cc1Swenshuai.xi        ###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
194*53ee8cc1Swenshuai.xi        #while offOnBitmap_all_OFF_or_ON_length_index <= offOnBitmap_all_OFF_or_ON_length:
195*53ee8cc1Swenshuai.xi        #    print "offOnBitmap_all_OFF_or_ON_length_index===>", offOnBitmap_all_OFF_or_ON_length_index, ", offOnBitmap_all_OFF_or_ON_length>>", offOnBitmap_all_OFF_or_ON_length
196*53ee8cc1Swenshuai.xi        #    print "offOnBitmap_all_OFF_or_ON[", offOnBitmap_all_OFF_or_ON_length_index ,"] >>> ", offOnBitmap_all_OFF_or_ON[offOnBitmap_all_OFF_or_ON_length_index]
197*53ee8cc1Swenshuai.xi        #    offOnBitmap_all_OFF_or_ON_length_index = offOnBitmap_all_OFF_or_ON_length_index + 1
198*53ee8cc1Swenshuai.xi        ###!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
199*53ee8cc1Swenshuai.xi        #print "offOnBitmap_all_OFF_or_ON =====>>>>", offOnBitmap_all_OFF_or_ON
200*53ee8cc1Swenshuai.xi        offOnBitmap_all_OFF_or_ON_length_index = 0
201*53ee8cc1Swenshuai.xi        offOnBitmap_all_OFF_or_ON_length_index_next = 1
202*53ee8cc1Swenshuai.xi        isAll_Off_or_on = 1 #if all flag is off or on,
203*53ee8cc1Swenshuai.xi        while offOnBitmap_all_OFF_or_ON_length_index <= offOnBitmap_all_OFF_or_ON_length:
204*53ee8cc1Swenshuai.xi            if offOnBitmap_all_OFF_or_ON_length_index_next > offOnBitmap_all_OFF_or_ON_length:
205*53ee8cc1Swenshuai.xi                #print "break >>>"
206*53ee8cc1Swenshuai.xi                break
207*53ee8cc1Swenshuai.xi            if offOnBitmap_all_OFF_or_ON[offOnBitmap_all_OFF_or_ON_length_index] != offOnBitmap_all_OFF_or_ON[offOnBitmap_all_OFF_or_ON_length_index_next]:
208*53ee8cc1Swenshuai.xi                isAll_Off_or_on = 0
209*53ee8cc1Swenshuai.xi                #print "isAll_Off_or_on >>>", isAll_Off_or_on
210*53ee8cc1Swenshuai.xi            offOnBitmap_all_OFF_or_ON_length_index = offOnBitmap_all_OFF_or_ON_length_index + 1
211*53ee8cc1Swenshuai.xi            offOnBitmap_all_OFF_or_ON_length_index_next = offOnBitmap_all_OFF_or_ON_length_index_next + 1
212*53ee8cc1Swenshuai.xi#####
213*53ee8cc1Swenshuai.xi        if sheet_IP_Invert[offOnFlag_length] == "N" and isAll_Off_or_on==1: #no invert andd all off or on
214*53ee8cc1Swenshuai.xi            if offOnBitmap_all_OFF_or_ON[0] == 0: # means ON
215*53ee8cc1Swenshuai.xi                offOnFlag_value = 0x0000
216*53ee8cc1Swenshuai.xi            else:
217*53ee8cc1Swenshuai.xi                offOnFlag_value = 0xFFFF #means off
218*53ee8cc1Swenshuai.xi        if sheet_IP_Invert[offOnFlag_length] == "Y" and isAll_Off_or_on==1:
219*53ee8cc1Swenshuai.xi            if offOnBitmap_all_OFF_or_ON[0] == 1: # means ON
220*53ee8cc1Swenshuai.xi                offOnFlag_value = 0xFFFF
221*53ee8cc1Swenshuai.xi            else:
222*53ee8cc1Swenshuai.xi                offOnFlag_value = 0x0000 #means off
223*53ee8cc1Swenshuai.xi#####
224*53ee8cc1Swenshuai.xi        #print "offOnFlag_value.....>>>>", offOnFlag_value
225*53ee8cc1Swenshuai.xi
226*53ee8cc1Swenshuai.xi        offOnFlag_hex_value='0x%04X' % (offOnFlag_value)
227*53ee8cc1Swenshuai.xi
228*53ee8cc1Swenshuai.xi        offOnBitmap.insert(offOnFlag_length, offOnFlag_hex_value)
229*53ee8cc1Swenshuai.xi        offOnFlag_length = offOnFlag_length + 1
230*53ee8cc1Swenshuai.xi        #offOnFlag_value = 0x0000
231*53ee8cc1Swenshuai.xi    #print "offOnFlag_hex_value is ",offOnBitmap
232*53ee8cc1Swenshuai.xi
233*53ee8cc1Swenshuai.xi###to be finished
234*53ee8cc1Swenshuai.xi    #remove valid = N in sheet_IP
235*53ee8cc1Swenshuai.xi    sheet_IP_Valid_length = len(sheet_IP_Valid)-1
236*53ee8cc1Swenshuai.xi    while sheet_IP_Valid_length >= 0:
237*53ee8cc1Swenshuai.xi        if sheet_IP_Valid[sheet_IP_Valid_length] == "N":
238*53ee8cc1Swenshuai.xi            del sheet_IP_RegName[sheet_IP_Valid_length]
239*53ee8cc1Swenshuai.xi            del sheet_IP_Address[sheet_IP_Valid_length]
240*53ee8cc1Swenshuai.xi            del sheet_IP_Mask[sheet_IP_Valid_length]
241*53ee8cc1Swenshuai.xi            del sheet_IP_Invert[sheet_IP_Valid_length]
242*53ee8cc1Swenshuai.xi            del offOnBitmap[sheet_IP_Valid_length]
243*53ee8cc1Swenshuai.xi        sheet_IP_Valid_length = sheet_IP_Valid_length -1
244*53ee8cc1Swenshuai.xi    #print "offOnBitmap again :",offOnBitmap
245*53ee8cc1Swenshuai.xi
246*53ee8cc1Swenshuai.xi    #record offOnBitmap that are all OFF or ON value
247*53ee8cc1Swenshuai.xi    sheet_IP_All_off_on_length = len(offOnBitmap)-1
248*53ee8cc1Swenshuai.xi    #print "sheet_IP_All_off_on_length: ", sheet_IP_All_off_on_length
249*53ee8cc1Swenshuai.xi    sheet_IP_All_off_on_counter = 0
250*53ee8cc1Swenshuai.xi    #while sheet_IP_All_off_on_length >= 0:
251*53ee8cc1Swenshuai.xi    while sheet_IP_All_off_on_counter <= sheet_IP_All_off_on_length:
252*53ee8cc1Swenshuai.xi        #print "offOnBitmap[] : ",offOnBitmap[sheet_IP_All_off_on_counter], "sheet_IP_All_off_on_counter :", sheet_IP_All_off_on_counter
253*53ee8cc1Swenshuai.xi        if offOnBitmap[sheet_IP_All_off_on_counter] == "0xFFFF" or offOnBitmap[sheet_IP_All_off_on_counter] == "0x0000":
254*53ee8cc1Swenshuai.xi            #print "sheet_IP_All_off_on_counter in while :", sheet_IP_All_off_on_counter, "pws_init_regName_for_pws_table_index:", pws_init_regName_for_pws_table_index
255*53ee8cc1Swenshuai.xi            #print "sheet_IP_RegName[] :", sheet_IP_RegName
256*53ee8cc1Swenshuai.xi            pws_init_table_IP_RegName.insert(pws_init_regName_for_pws_table_index,sheet_IP_RegName[sheet_IP_All_off_on_counter])
257*53ee8cc1Swenshuai.xi            pws_init_table_IP_Address.insert(pws_init_regName_for_pws_table_index,sheet_IP_Address[sheet_IP_All_off_on_counter])
258*53ee8cc1Swenshuai.xi            pws_init_table_IP_Mask.insert(pws_init_regName_for_pws_table_index,sheet_IP_Mask[sheet_IP_All_off_on_counter])
259*53ee8cc1Swenshuai.xi            pws_init_table_IP_Invert.insert(pws_init_regName_for_pws_table_index,sheet_IP_Invert[sheet_IP_All_off_on_counter])
260*53ee8cc1Swenshuai.xi            pws_init_table_offOnBitmap.insert(pws_init_regName_for_pws_table_index,offOnBitmap[sheet_IP_All_off_on_counter])
261*53ee8cc1Swenshuai.xi
262*53ee8cc1Swenshuai.xi            pws_init_regName_for_pws_table_index = pws_init_regName_for_pws_table_index + 1
263*53ee8cc1Swenshuai.xi
264*53ee8cc1Swenshuai.xi            #print "all off or on"
265*53ee8cc1Swenshuai.xi        #else :
266*53ee8cc1Swenshuai.xi        #    print "normal"
267*53ee8cc1Swenshuai.xi
268*53ee8cc1Swenshuai.xi        sheet_IP_All_off_on_counter = sheet_IP_All_off_on_counter + 1
269*53ee8cc1Swenshuai.xi    #print "pws_init_table_IP_RegName: ", pws_init_table_IP_RegName
270*53ee8cc1Swenshuai.xi
271*53ee8cc1Swenshuai.xi    #remove all OFF or ON
272*53ee8cc1Swenshuai.xi    sheet_IP_RegName_length = len(sheet_IP_RegName)-1
273*53ee8cc1Swenshuai.xi    while sheet_IP_RegName_length >= 0:
274*53ee8cc1Swenshuai.xi        #print "offOnBitmap >>>>>>>", offOnBitmap, ", sheet_IP_RegName_length>>", sheet_IP_RegName_length
275*53ee8cc1Swenshuai.xi        if offOnBitmap[sheet_IP_RegName_length] == "0x0000" or  offOnBitmap[sheet_IP_RegName_length] == "0xFFFF":
276*53ee8cc1Swenshuai.xi            del sheet_IP_RegName[sheet_IP_RegName_length]
277*53ee8cc1Swenshuai.xi            del sheet_IP_Address[sheet_IP_RegName_length]
278*53ee8cc1Swenshuai.xi            del sheet_IP_Mask[sheet_IP_RegName_length]
279*53ee8cc1Swenshuai.xi            del sheet_IP_Invert[sheet_IP_RegName_length]
280*53ee8cc1Swenshuai.xi            del offOnBitmap[sheet_IP_RegName_length]
281*53ee8cc1Swenshuai.xi        sheet_IP_RegName_length = sheet_IP_RegName_length -1
282*53ee8cc1Swenshuai.xi    #print "offOnBitmap again >>",offOnBitmap
283*53ee8cc1Swenshuai.xi
284*53ee8cc1Swenshuai.xi    #add comment show Block name
285*53ee8cc1Swenshuai.xi    pws_table_file.write('  //'+ x + '\n')
286*53ee8cc1Swenshuai.xi
287*53ee8cc1Swenshuai.xi    sheet_IP_RegName_length = len(sheet_IP_RegName) -1
288*53ee8cc1Swenshuai.xi    sheet_IP_index = 0
289*53ee8cc1Swenshuai.xi    while sheet_IP_index <= sheet_IP_RegName_length:
290*53ee8cc1Swenshuai.xi        #write PWS info to file {"regname", address, mask}
291*53ee8cc1Swenshuai.xi        #pws_table_file.write('  {\"' + sheet_IP_RegName[sheet_IP_index]+ '\", ' + sheet_IP_Address[sheet_IP_index] + ', '+ sheet_IP_Mask[sheet_IP_index] + ', '+ offOnBitmap[sheet_IP_index] + '}\n')
292*53ee8cc1Swenshuai.xi        if sheet_IP_Invert[sheet_IP_index] == "N" :
293*53ee8cc1Swenshuai.xi            pws_table_file.write('  {' + sheet_IP_Address[sheet_IP_index] + ', '+ sheet_IP_Mask[sheet_IP_index] + '/*, '+ offOnBitmap[sheet_IP_index] + '*/ /*off=0x01, on=0x00*/, ' + "FALSE" + ', \"' + sheet_IP_RegName[sheet_IP_index]+ '\"},\n')
294*53ee8cc1Swenshuai.xi        else :
295*53ee8cc1Swenshuai.xi            pws_table_file.write('  {' + sheet_IP_Address[sheet_IP_index] + ', '+ sheet_IP_Mask[sheet_IP_index] + '/*, '+ offOnBitmap[sheet_IP_index] + '*/ /*off=0x00, on=0x01*/, ' + "TRUE" + ', \"' +  sheet_IP_RegName[sheet_IP_index]+ '\"},\n')
296*53ee8cc1Swenshuai.xi        #for pws table use include in api layer
297*53ee8cc1Swenshuai.xi        offOnBitmap_for_pws_table.insert(offOnBitmap_regName_for_pws_table_index, offOnBitmap[sheet_IP_index])
298*53ee8cc1Swenshuai.xi        regName_for_pws_table.insert(offOnBitmap_regName_for_pws_table_index, sheet_IP_RegName[sheet_IP_index])
299*53ee8cc1Swenshuai.xi        offOnBitmap_regName_for_pws_table_index = offOnBitmap_regName_for_pws_table_index + 1
300*53ee8cc1Swenshuai.xi        sheet_IP_index = sheet_IP_index +1
301*53ee8cc1Swenshuai.xi    #print "offOnBitmap_for_pws_table", offOnBitmap_for_pws_table
302*53ee8cc1Swenshuai.xi    #print "regName_for_pws_table",regName_for_pws_table
303*53ee8cc1Swenshuai.xi    PWS_Items = PWS_Items + len(sheet_IP_RegName) #1-based
304*53ee8cc1Swenshuai.xi
305*53ee8cc1Swenshuai.xipws_table_file.write('};\n\n')
306*53ee8cc1Swenshuai.xi
307*53ee8cc1Swenshuai.xi#write pws init data structure
308*53ee8cc1Swenshuai.xipws_table_file.write('static const PWS_TABLE_INFO pws_init_setting_info_table[] =\n')
309*53ee8cc1Swenshuai.xipws_table_file.write('{\n')
310*53ee8cc1Swenshuai.xiflag_index = 0
311*53ee8cc1Swenshuai.xiPWS_init_Items = len(pws_init_table_IP_RegName)
312*53ee8cc1Swenshuai.xi#print "pws init setting info table PWS_init_Items: ", PWS_init_Items
313*53ee8cc1Swenshuai.xiwhile flag_index <= (PWS_init_Items-1):
314*53ee8cc1Swenshuai.xi    if pws_init_table_IP_Invert[flag_index] == "N" :
315*53ee8cc1Swenshuai.xi        pws_table_file.write('  {' + pws_init_table_IP_Address[flag_index] + ', '+ pws_init_table_IP_Mask[flag_index] + '/*, '+ pws_init_table_offOnBitmap[flag_index] + '*/ /*off=0x01, on=0x00*/, ' + "FALSE" + ', \"' + pws_init_table_IP_RegName[flag_index]+ '\"},\n')
316*53ee8cc1Swenshuai.xi    else :
317*53ee8cc1Swenshuai.xi        pws_table_file.write('  {' + pws_init_table_IP_Address[flag_index] + ', '+ pws_init_table_IP_Mask[flag_index] + '/*, '+ pws_init_table_offOnBitmap[flag_index] + '*/ /*off=0x00, on=0x01*/, ' + "TRUE" + ', \"' + pws_init_table_IP_RegName[flag_index]+ '\"},\n')
318*53ee8cc1Swenshuai.xi    flag_index = flag_index + 1
319*53ee8cc1Swenshuai.xipws_table_file.write('};\n\n')
320*53ee8cc1Swenshuai.xi
321*53ee8cc1Swenshuai.xi#pws_table_file.write('#define PWS_First_Items 0\n')
322*53ee8cc1Swenshuai.xi#pws_table_file.write('#define OutOfRange_PWS_Items ' + str(PWS_Items) + '\n')
323*53ee8cc1Swenshuai.xi
324*53ee8cc1Swenshuai.xi#do while loop for every IP list
325*53ee8cc1Swenshuai.xipws_table_file.write('\n#endif\n')
326*53ee8cc1Swenshuai.xi#close file
327*53ee8cc1Swenshuai.xi#open file (pws_table.h)
328*53ee8cc1Swenshuai.xipws_table_file = open('mhal_pws_table.h','w')
329*53ee8cc1Swenshuai.xipws_table_file.write('#ifndef _PWSTABLE_H_\n')
330*53ee8cc1Swenshuai.xipws_table_file.write('#define _PWSTABLE_H_\n\n')
331*53ee8cc1Swenshuai.xi
332*53ee8cc1Swenshuai.xipws_table_file.write('#define PWS_TBL_VERSION  \"' + pws_table_ver + '\"\n')
333*53ee8cc1Swenshuai.xipws_table_file.write('#define PWS_First_Items 0\n')
334*53ee8cc1Swenshuai.xipws_table_file.write('#define OutOfRange_PWS_Items ' + str(PWS_Items) + '\n\n')
335*53ee8cc1Swenshuai.xi
336*53ee8cc1Swenshuai.xi#write pws data structure
337*53ee8cc1Swenshuai.xipws_table_file.write('static const MS_U16 pws_table[] =\n')
338*53ee8cc1Swenshuai.xipws_table_file.write('{\n')
339*53ee8cc1Swenshuai.xiflag_index = 0
340*53ee8cc1Swenshuai.xiwhile flag_index <= (PWS_Items-1):
341*53ee8cc1Swenshuai.xi    pws_table_file.write('  ' + offOnBitmap_for_pws_table[flag_index] + ', /*'+ regName_for_pws_table[flag_index] + '*/\n')
342*53ee8cc1Swenshuai.xi    flag_index = flag_index + 1
343*53ee8cc1Swenshuai.xipws_table_file.write('};\n\n')
344*53ee8cc1Swenshuai.xi
345*53ee8cc1Swenshuai.xi#write pws init data structure
346*53ee8cc1Swenshuai.xi
347*53ee8cc1Swenshuai.xipws_table_file.write('#define PWS_Init_First_Items 0\n')
348*53ee8cc1Swenshuai.xipws_table_file.write('#define OutOfRange_PWS_Init_Items ' + str(len(pws_init_table_IP_RegName)) + '\n\n')
349*53ee8cc1Swenshuai.xi
350*53ee8cc1Swenshuai.xipws_table_file.write('static const MS_U16 pws_init_table[] =\n')
351*53ee8cc1Swenshuai.xipws_table_file.write('{\n')
352*53ee8cc1Swenshuai.xiflag_index = 0
353*53ee8cc1Swenshuai.xiPWS_init_Items = len(pws_init_table_IP_RegName)
354*53ee8cc1Swenshuai.xi#print "PWS_init_Items: ", PWS_init_Items
355*53ee8cc1Swenshuai.xiwhile flag_index <= (PWS_init_Items-1):
356*53ee8cc1Swenshuai.xi    pws_table_file.write('  ' + pws_init_table_offOnBitmap[flag_index] + ', /*'+ pws_init_table_IP_RegName[flag_index] + '*/\n')
357*53ee8cc1Swenshuai.xi    flag_index = flag_index + 1
358*53ee8cc1Swenshuai.xipws_table_file.write('};\n\n')
359*53ee8cc1Swenshuai.xi
360*53ee8cc1Swenshuai.xipws_table_file.write('\n#endif\n')
361*53ee8cc1Swenshuai.xi#print "offOnBitmap_for_pws_table", len(offOnBitmap_for_pws_table)
362*53ee8cc1Swenshuai.xi#print "regName_for_pws_table", len(regName_for_pws_table)
363*53ee8cc1Swenshuai.xiprint "Table generating OK...!!!"
364