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