mbed os with nrf51 internal bandgap enabled to read battery level

Dependents:   BLE_file_test BLE_Blink ExternalEncoder

Committer:
elessair
Date:
Sun Oct 23 15:10:02 2016 +0000
Revision:
0:f269e3021894
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elessair 0:f269e3021894 1 """
elessair 0:f269e3021894 2 mbed SDK
elessair 0:f269e3021894 3 Copyright (c) 2011-2013 ARM Limited
elessair 0:f269e3021894 4
elessair 0:f269e3021894 5 Licensed under the Apache License, Version 2.0 (the "License");
elessair 0:f269e3021894 6 you may not use this file except in compliance with the License.
elessair 0:f269e3021894 7 You may obtain a copy of the License at
elessair 0:f269e3021894 8
elessair 0:f269e3021894 9 http://www.apache.org/licenses/LICENSE-2.0
elessair 0:f269e3021894 10
elessair 0:f269e3021894 11 Unless required by applicable law or agreed to in writing, software
elessair 0:f269e3021894 12 distributed under the License is distributed on an "AS IS" BASIS,
elessair 0:f269e3021894 13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
elessair 0:f269e3021894 14 See the License for the specific language governing permissions and
elessair 0:f269e3021894 15 limitations under the License.
elessair 0:f269e3021894 16
elessair 0:f269e3021894 17
elessair 0:f269e3021894 18 Utility to find which libraries could define a given symbol
elessair 0:f269e3021894 19 """
elessair 0:f269e3021894 20 from argparse import ArgumentParser
elessair 0:f269e3021894 21 from os.path import join, splitext
elessair 0:f269e3021894 22 from os import walk
elessair 0:f269e3021894 23 from subprocess import Popen, PIPE
elessair 0:f269e3021894 24
elessair 0:f269e3021894 25
elessair 0:f269e3021894 26 OBJ_EXT = ['.o', '.a', '.ar']
elessair 0:f269e3021894 27
elessair 0:f269e3021894 28
elessair 0:f269e3021894 29 def find_sym_in_lib(sym, obj_path):
elessair 0:f269e3021894 30 contain_symbol = False
elessair 0:f269e3021894 31
elessair 0:f269e3021894 32 out = Popen(["nm", "-C", obj_path], stdout=PIPE, stderr=PIPE).communicate()[0]
elessair 0:f269e3021894 33 for line in out.splitlines():
elessair 0:f269e3021894 34 tokens = line.split()
elessair 0:f269e3021894 35 n = len(tokens)
elessair 0:f269e3021894 36 if n == 2:
elessair 0:f269e3021894 37 sym_type = tokens[0]
elessair 0:f269e3021894 38 sym_name = tokens[1]
elessair 0:f269e3021894 39 elif n == 3:
elessair 0:f269e3021894 40 sym_type = tokens[1]
elessair 0:f269e3021894 41 sym_name = tokens[2]
elessair 0:f269e3021894 42 else:
elessair 0:f269e3021894 43 continue
elessair 0:f269e3021894 44
elessair 0:f269e3021894 45 if sym_type == "U":
elessair 0:f269e3021894 46 # This object is using this symbol, not defining it
elessair 0:f269e3021894 47 continue
elessair 0:f269e3021894 48
elessair 0:f269e3021894 49 if sym_name == sym:
elessair 0:f269e3021894 50 contain_symbol = True
elessair 0:f269e3021894 51
elessair 0:f269e3021894 52 return contain_symbol
elessair 0:f269e3021894 53
elessair 0:f269e3021894 54
elessair 0:f269e3021894 55 def find_sym_in_path(sym, dir_path):
elessair 0:f269e3021894 56 for root, _, files in walk(dir_path):
elessair 0:f269e3021894 57 for file in files:
elessair 0:f269e3021894 58
elessair 0:f269e3021894 59 _, ext = splitext(file)
elessair 0:f269e3021894 60 if ext not in OBJ_EXT: continue
elessair 0:f269e3021894 61
elessair 0:f269e3021894 62 path = join(root, file)
elessair 0:f269e3021894 63 if find_sym_in_lib(sym, path):
elessair 0:f269e3021894 64 print path
elessair 0:f269e3021894 65
elessair 0:f269e3021894 66
elessair 0:f269e3021894 67 if __name__ == '__main__':
elessair 0:f269e3021894 68 parser = ArgumentParser(description='Find Symbol')
elessair 0:f269e3021894 69 parser.add_argument('-s', '--sym', required=True,
elessair 0:f269e3021894 70 help='The symbol to be searched')
elessair 0:f269e3021894 71 parser.add_argument('-p', '--path', required=True,
elessair 0:f269e3021894 72 help='The path where to search')
elessair 0:f269e3021894 73 args = parser.parse_args()
elessair 0:f269e3021894 74
elessair 0:f269e3021894 75 find_sym_in_path(args.sym, args.path)