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