def refGpio(self, eint_num, flag): gpio_vec= [] gpio_num = EintData.get_gpioNum(string.atoi(eint_num)) if gpio_num >= 0: gpio_vec.append(gpio_num) if flag: item_data = self.__gpio_obj.get_gpioData(gpio_num) mode_idx = item_data.get_defMode() mode_name = EintData.get_modeName(gpio_num, mode_idx) if re.match(r'GPIO[\d]+', mode_name) or re.match(r'EINT[\d]+', mode_name): return gpio_vec for key in EintData._builtin_map.keys(): if string.atoi(eint_num) == string.atoi(key): temp_map = EintData._builtin_map[key] for key in temp_map.keys(): gpio_vec.append(key) if flag: for item in temp_map.keys(): item_data = self.__gpio_obj.get_gpioData(string.atoi(item)) if item_data.get_defMode() == string.atoi(temp_map[item].split(':')[0]): gpio_vec = [] gpio_vec.append(item) return gpio_vec break return gpio_vec
def refGpio_defMode(self, eint_num, flag): refGpio_defMode = 0 for key in EintData._builtin_map.keys(): if string.atoi(eint_num) == string.atoi(key): temp_map = EintData._builtin_map[key] if flag: for item in temp_map.keys(): item_data = self.get_gpioObj().get_gpioData(string.atoi(item)) if item_data.get_defMode() == string.atoi(temp_map[item].split(':')[0]): refGpio_defMode = item_data.get_defMode() return refGpio_defMode break gpio_num = EintData.get_gpioNum(string.atoi(eint_num)) if gpio_num >= 0: if flag: item_data = self.get_gpioObj().get_gpioData(gpio_num) refGpio_defMode = item_data.get_defMode() mode_name = EintData.get_modeName(gpio_num, refGpio_defMode) if re.match(r'GPIO[\d]+', mode_name) or re.match(r'EINT[\d]+', mode_name): return refGpio_defMode return refGpio_defMode
def get_cfgInfo(self): cp = ConfigParser.ConfigParser(allow_no_value=True) cp.read(ModuleObj.get_figPath()) ops = cp.options('GPIO') map = {} mode_map = {} for op in ops: value = cp.get('GPIO', op) list = re.split(r' +|\t+', value) map[string.atoi(re.findall(r'\d+', op)[0])] = string.atoi( list[len(list) - 2]) mode_map[op] = list[0:len(list) - 2] EintData.set_mapTable(map) EintData.set_modeMap(mode_map) if cp.has_option('EINT', 'EINT_MAP_COUNT'): self.__map_count = string.atoi(cp.get('EINT', 'EINT_MAP_COUNT')) if cp.has_option('EINT', 'INTERNAL_EINT'): info = cp.get('EINT', 'INTERNAL_EINT') str_list = info.split(':') for item in str_list: sub_list = item.split('/') EintData._int_eint[sub_list[0]] = sub_list[1] if cp.has_option('EINT', 'BUILTIN_EINT'): info = cp.get('EINT', 'BUILTIN_EINT') str_list = info.split(':') for builtin_item in str_list: builtin_list = builtin_item.split('/') #EintData._builtin_map[builtin_list[0]] = builtin_list[1] temp = 'BUILTIN_%s' % (builtin_list[0]) if cp.has_option('EINT', temp): info = cp.get('EINT', temp) str_list = info.split(':') temp_map = {} for item in str_list: sub_list = item.split('/') temp_map[ sub_list[0]] = sub_list[1] + ':' + builtin_list[1] EintData._builtin_map[builtin_list[0]] = temp_map EintData._builtin_eint_count += len(temp_map) self.__gpio_obj.set_eint_map_table(EintData._map_table)
def fill_mappingTable(self): gen_str = '''&eintc {\n''' count = 0 if self.__map_count == 0: for i in range(0, string.atoi(self.__count)): if EintData.get_gpioNum(i) >= 0: count += 1 count += len(EintData._int_eint) else: count = self.__map_count gen_str += '''\tmediatek,mapping_table_entry = <%d>;\n''' % (count) gen_str += '''\t\t\t/* <gpio_pin, eint_pin> */\n''' gen_str += '''\tmediatek,mapping_table = ''' sorted_list = sorted(EintData.get_mapTable().keys()) for key in sorted_list: value = EintData.get_mapTable()[key] if value != -1: gen_str += '''<%d %d>,\n\t\t\t\t\t''' % (key, value) sorted_list = sorted(EintData.get_internalEint().keys()) for key in sorted_list: value = EintData.get_internalEint()[key] gen_str += '''<%s %s>,\n\t\t\t\t\t''' % (value, key) #for (key, value) in EintData._int_eint.items(): #gen_str += '''<%s %s>,\n\t\t\t\t\t''' %(value, key) gen_str = gen_str[0:len(gen_str) - 7] gen_str += ''';\n''' gen_str += '''\tmediatek,builtin_entry = <%d>;\n''' % ( EintData._builtin_eint_count) if len(EintData._builtin_map) == 0: gen_str += '''};\n\n''' return gen_str gen_str += '''\t\t\t\t\t/* gpio, built-in func mode, built-in eint */\n''' gen_str += '''\tmediatek,builtin_mapping = ''' for (key, value) in EintData._builtin_map.items(): for (sub_key, sub_value) in value.items(): gen_str += '''<%s %s %s>, /* %s */\n\t\t\t\t\t''' % ( sub_key, sub_value[0:1], key, sub_value) gen_str = gen_str[0:gen_str.rfind(',')] gen_str += ';' gen_str += '''};\n\n''' return gen_str
def get_polarity(self): return EintData.get_polarity(self)
def set_polarity(self, polarity): EintData.set_polarity(self, polarity)
def get_debounceEnable(self): return EintData.get_debounceEnable(self)
def set_debounceEnable(self, enable): EintData.set_debounceEnable(self, enable)
def get_sensitiveLevel(self): return EintData.get_sensitiveLevel(self)
def set_sensitiveLevel(self, level): EintData.set_sensitiveLevel(self, level)
def __init__(self): EintData.__init__(self) self.__dedicatedEn = False self.__srcPin = '' self.__socetType = ''
def read(self, node): nodes = node.childNodes for node in nodes: if node.nodeType == xml.dom.Node.ELEMENT_NODE: if cmp(node.nodeName, 'count') == 0: self.__count = node.childNodes[0].nodeValue continue varNode = node.getElementsByTagName('varName') detNode = node.getElementsByTagName('debounce_time') polNode = node.getElementsByTagName('polarity') senNode = node.getElementsByTagName('sensitive_level') deeNode = node.getElementsByTagName('debounce_en') data = EintData() if len(varNode): data.set_varName(varNode[0].childNodes[0].nodeValue) if len(detNode): data.set_debounceTime(detNode[0].childNodes[0].nodeValue) if len(polNode): data.set_polarity(polNode[0].childNodes[0].nodeValue) if len(senNode): data.set_sensitiveLevel(senNode[0].childNodes[0].nodeValue) if len(deeNode): data.set_debounceEnable(deeNode[0].childNodes[0].nodeValue) ModuleObj.set_data(self, node.nodeName, data) return True
def get_gpioNum(self, eint_num): for (key, value) in EintData.get_mapTable().items(): if cmp(eint_num, value) == 0: return key return -1