5.2.1 - Updated I2C files

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Committer:
jacobjohnson
Date:
Mon Feb 27 17:45:05 2017 +0000
Revision:
1:f30bdcd2b33b
Parent:
0:098463de4c5d
changed the inputscale from 1 to 7 in analogin_api.c.  This will need to be changed later, and accessed from the main level, but for now this allows the  adc to read a value from 0 to 3.7V, instead of just up to 1V.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-onsemi 0:098463de4c5d 1 import argparse
group-onsemi 0:098463de4c5d 2 from os.path import basename
group-onsemi 0:098463de4c5d 3 from tools.arm_pack_manager import Cache
group-onsemi 0:098463de4c5d 4 from os.path import basename, join, dirname, exists
group-onsemi 0:098463de4c5d 5 from os import makedirs
group-onsemi 0:098463de4c5d 6 from itertools import takewhile
group-onsemi 0:098463de4c5d 7 from fuzzywuzzy import process
group-onsemi 0:098463de4c5d 8 from tools.arm_pack_manager import Cache
group-onsemi 0:098463de4c5d 9
group-onsemi 0:098463de4c5d 10 parser = argparse.ArgumentParser(description='A Handy little utility for keeping your cache of pack files up to date.')
group-onsemi 0:098463de4c5d 11 subparsers = parser.add_subparsers(title="Commands")
group-onsemi 0:098463de4c5d 12
group-onsemi 0:098463de4c5d 13 def subcommand(name, *args, **kwargs):
group-onsemi 0:098463de4c5d 14 def subcommand(command):
group-onsemi 0:098463de4c5d 15 subparser = subparsers.add_parser(name, **kwargs)
group-onsemi 0:098463de4c5d 16
group-onsemi 0:098463de4c5d 17 for arg in args:
group-onsemi 0:098463de4c5d 18 arg = dict(arg)
group-onsemi 0:098463de4c5d 19 opt = arg['name']
group-onsemi 0:098463de4c5d 20 del arg['name']
group-onsemi 0:098463de4c5d 21
group-onsemi 0:098463de4c5d 22 if isinstance(opt, basestring):
group-onsemi 0:098463de4c5d 23 subparser.add_argument(opt, **arg)
group-onsemi 0:098463de4c5d 24 else:
group-onsemi 0:098463de4c5d 25 subparser.add_argument(*opt, **arg)
group-onsemi 0:098463de4c5d 26
group-onsemi 0:098463de4c5d 27 subparser.add_argument("-v", "--verbose", action="store_true", dest="verbose", help="Verbose diagnostic output")
group-onsemi 0:098463de4c5d 28 subparser.add_argument("-vv", "--very_verbose", action="store_true", dest="very_verbose", help="Very verbose diagnostic output")
group-onsemi 0:098463de4c5d 29 subparser.add_argument("--no-timeouts", action="store_true", help="Remove all timeouts and try to download unconditionally")
group-onsemi 0:098463de4c5d 30 subparser.add_argument("--and", action="store_true", dest="intersection", help="combine search terms as if with an and")
group-onsemi 0:098463de4c5d 31 subparser.add_argument("--or", action="store_false", dest="intersection", help="combine search terms as if with an or")
group-onsemi 0:098463de4c5d 32 subparser.add_argument("--union", action="store_false", dest="intersection", help="combine search terms as if with a set union")
group-onsemi 0:098463de4c5d 33 subparser.add_argument("--intersection", action="store_true", dest="intersection", help="combine search terms as if with a set intersection")
group-onsemi 0:098463de4c5d 34
group-onsemi 0:098463de4c5d 35 def thunk(parsed_args):
group-onsemi 0:098463de4c5d 36 cache = Cache(not parsed_args.verbose, parsed_args.no_timeouts)
group-onsemi 0:098463de4c5d 37 argv = [arg['dest'] if 'dest' in arg else arg['name'] for arg in args]
group-onsemi 0:098463de4c5d 38 argv = [(arg if isinstance(arg, basestring) else arg[-1]).strip('-')
group-onsemi 0:098463de4c5d 39 for arg in argv]
group-onsemi 0:098463de4c5d 40 argv = {arg: vars(parsed_args)[arg] for arg in argv
group-onsemi 0:098463de4c5d 41 if vars(parsed_args)[arg] is not None}
group-onsemi 0:098463de4c5d 42
group-onsemi 0:098463de4c5d 43 return command(cache, **argv)
group-onsemi 0:098463de4c5d 44
group-onsemi 0:098463de4c5d 45 subparser.set_defaults(command=thunk)
group-onsemi 0:098463de4c5d 46 return command
group-onsemi 0:098463de4c5d 47 return subcommand
group-onsemi 0:098463de4c5d 48
group-onsemi 0:098463de4c5d 49 def user_selection (message, options) :
group-onsemi 0:098463de4c5d 50 print(message)
group-onsemi 0:098463de4c5d 51 for choice, index in zip(options, range(len(options))) :
group-onsemi 0:098463de4c5d 52 print("({}) {}".format(index, choice))
group-onsemi 0:098463de4c5d 53 pick = None
group-onsemi 0:098463de4c5d 54 while pick is None :
group-onsemi 0:098463de4c5d 55 stdout.write("please select an integer from 0 to {} or \"all\"".format(len(options)-1))
group-onsemi 0:098463de4c5d 56 input = raw_input()
group-onsemi 0:098463de4c5d 57 try :
group-onsemi 0:098463de4c5d 58 if input == "all" :
group-onsemi 0:098463de4c5d 59 pick = options
group-onsemi 0:098463de4c5d 60 else :
group-onsemi 0:098463de4c5d 61 pick = [options[int(input)]]
group-onsemi 0:098463de4c5d 62 except ValueError :
group-onsemi 0:098463de4c5d 63 print("I did not understand your input")
group-onsemi 0:098463de4c5d 64 return pick
group-onsemi 0:098463de4c5d 65
group-onsemi 0:098463de4c5d 66 def fuzzy_find(matches, urls) :
group-onsemi 0:098463de4c5d 67 choices = {}
group-onsemi 0:098463de4c5d 68 for match in matches :
group-onsemi 0:098463de4c5d 69 for key, value in process.extract(match, urls, limit=None) :
group-onsemi 0:098463de4c5d 70 choices.setdefault(key, 0)
group-onsemi 0:098463de4c5d 71 choices[key] += value
group-onsemi 0:098463de4c5d 72 choices = sorted([(v, k) for k, v in choices.iteritems()], reverse=True)
group-onsemi 0:098463de4c5d 73 if not choices : return []
group-onsemi 0:098463de4c5d 74 elif len(choices) == 1 : return [choices[0][1]]
group-onsemi 0:098463de4c5d 75 elif choices[0][0] > choices[1][0] : choices = choices[:1]
group-onsemi 0:098463de4c5d 76 else : choices = list(takewhile(lambda t: t[0] == choices[0][0], choices))
group-onsemi 0:098463de4c5d 77 return [v for k,v in choices]
group-onsemi 0:098463de4c5d 78
group-onsemi 0:098463de4c5d 79 @subcommand('cache',
group-onsemi 0:098463de4c5d 80 dict(name='matches', nargs="*",
group-onsemi 0:098463de4c5d 81 help="a bunch of things to search for in part names"),
group-onsemi 0:098463de4c5d 82 dict(name=['-e','--everything'], action="store_true",
group-onsemi 0:098463de4c5d 83 help="download everything possible"),
group-onsemi 0:098463de4c5d 84 dict(name=['-d','--descriptors'], action="store_true",
group-onsemi 0:098463de4c5d 85 help="download all descriptors"),
group-onsemi 0:098463de4c5d 86 dict(name=["-b","--batch"], action="store_true",
group-onsemi 0:098463de4c5d 87 help="don't ask for user input and assume download all"),
group-onsemi 0:098463de4c5d 88 help="Cache a group of PACK or PDSC files")
group-onsemi 0:098463de4c5d 89 def command_cache (cache, matches, everything=False, descriptors=False, batch=False, verbose= False, intersection=True) :
group-onsemi 0:098463de4c5d 90 if everything :
group-onsemi 0:098463de4c5d 91 cache.cache_everything()
group-onsemi 0:098463de4c5d 92 return True
group-onsemi 0:098463de4c5d 93 if descriptors :
group-onsemi 0:098463de4c5d 94 cache.cache_descriptors()
group-onsemi 0:098463de4c5d 95 return True
group-onsemi 0:098463de4c5d 96 if not matches :
group-onsemi 0:098463de4c5d 97 print("No action specified nothing to do")
group-onsemi 0:098463de4c5d 98 else :
group-onsemi 0:098463de4c5d 99 urls = cache.get_urls()
group-onsemi 0:098463de4c5d 100 if intersection :
group-onsemi 0:098463de4c5d 101 choices = fuzzy_find(matches, map(basename, urls))
group-onsemi 0:098463de4c5d 102 else :
group-onsemi 0:098463de4c5d 103 choices = sum([fuzzy_find([m], map(basename, urls)) for m in matches], [])
group-onsemi 0:098463de4c5d 104 if not batch and len(choices) > 1 :
group-onsemi 0:098463de4c5d 105 choices = user_selection("Please select a file to cache", choices)
group-onsemi 0:098463de4c5d 106 to_download = []
group-onsemi 0:098463de4c5d 107 for choice in choices :
group-onsemi 0:098463de4c5d 108 for url in urls :
group-onsemi 0:098463de4c5d 109 if choice in url :
group-onsemi 0:098463de4c5d 110 to_download.append(url)
group-onsemi 0:098463de4c5d 111 cache.cache_pack_list(to_download)
group-onsemi 0:098463de4c5d 112 return True
group-onsemi 0:098463de4c5d 113
group-onsemi 0:098463de4c5d 114
group-onsemi 0:098463de4c5d 115 @subcommand('find-part',
group-onsemi 0:098463de4c5d 116 dict(name='matches', nargs="+", help="words to match to processors"),
group-onsemi 0:098463de4c5d 117 dict(name=['-l',"--long"], action="store_true",
group-onsemi 0:098463de4c5d 118 help="print out part details with part"),
group-onsemi 0:098463de4c5d 119 dict(name=['-p', '--parts-only'], action="store_false", dest="print_aliases"),
group-onsemi 0:098463de4c5d 120 dict(name=['-a', '--aliases-only'], action="store_false", dest="print_parts"),
group-onsemi 0:098463de4c5d 121 help="Find a Part and it's description within the cache")
group-onsemi 0:098463de4c5d 122 def command_find_part (cache, matches, long=False, intersection=True,
group-onsemi 0:098463de4c5d 123 print_aliases=True, print_parts=True) :
group-onsemi 0:098463de4c5d 124 if long :
group-onsemi 0:098463de4c5d 125 import pprint
group-onsemi 0:098463de4c5d 126 pp = pprint.PrettyPrinter()
group-onsemi 0:098463de4c5d 127 parts = cache.index
group-onsemi 0:098463de4c5d 128 if intersection :
group-onsemi 0:098463de4c5d 129 choices = fuzzy_find(matches, parts.keys())
group-onsemi 0:098463de4c5d 130 aliases = fuzzy_find(matches, cache.aliases.keys())
group-onsemi 0:098463de4c5d 131 else :
group-onsemi 0:098463de4c5d 132 choices = sum([fuzzy_find([m], parts.keys()) for m in matches], [])
group-onsemi 0:098463de4c5d 133 aliases = sum([fuzzy_find([m], cache.aliases.keys()) for m in matches], [])
group-onsemi 0:098463de4c5d 134 if print_parts:
group-onsemi 0:098463de4c5d 135 for part in choices :
group-onsemi 0:098463de4c5d 136 print part
group-onsemi 0:098463de4c5d 137 if long :
group-onsemi 0:098463de4c5d 138 pp.pprint(cache.index[part])
group-onsemi 0:098463de4c5d 139 if print_aliases:
group-onsemi 0:098463de4c5d 140 for alias in aliases :
group-onsemi 0:098463de4c5d 141 print alias
group-onsemi 0:098463de4c5d 142 if long :
group-onsemi 0:098463de4c5d 143 pp.pprint(cache.index[cache.aliases[alias]])
group-onsemi 0:098463de4c5d 144
group-onsemi 0:098463de4c5d 145 @subcommand('dump-parts',
group-onsemi 0:098463de4c5d 146 dict(name='out', help='directory to dump to'),
group-onsemi 0:098463de4c5d 147 dict(name='parts', nargs='+', help='parts to dump'),
group-onsemi 0:098463de4c5d 148 help='Create a directory with an index.json describing the part and all of their associated flashing algorithms.'
group-onsemi 0:098463de4c5d 149 )
group-onsemi 0:098463de4c5d 150 def command_dump_parts (cache, out, parts, intersection=False) :
group-onsemi 0:098463de4c5d 151 index = {}
group-onsemi 0:098463de4c5d 152 if intersection :
group-onsemi 0:098463de4c5d 153 for part in fuzzy_find(parts, cache.index):
group-onsemi 0:098463de4c5d 154 index.update(cache.index[part])
group-onsemi 0:098463de4c5d 155 else :
group-onsemi 0:098463de4c5d 156 for part in parts :
group-onsemi 0:098463de4c5d 157 index.update(dict(cache.find_device(part)))
group-onsemi 0:098463de4c5d 158 for n, p in index.iteritems() :
group-onsemi 0:098463de4c5d 159 try :
group-onsemi 0:098463de4c5d 160 if not exists(join(out, dirname(p['algorithm']['file']))) :
group-onsemi 0:098463de4c5d 161 makedirs(join(out, dirname(p['algorithm']['file'])))
group-onsemi 0:098463de4c5d 162 with open(join(out, p['algorithm']['file']), "wb+") as fd :
group-onsemi 0:098463de4c5d 163 fd.write(cache.get_flash_algorthim_binary(n).read())
group-onsemi 0:098463de4c5d 164 except KeyError:
group-onsemi 0:098463de4c5d 165 print("[Warning] {} does not have an associated flashing algorithm".format(n))
group-onsemi 0:098463de4c5d 166 with open(join(out, "index.json"), "wb+") as fd :
group-onsemi 0:098463de4c5d 167 dump(index,fd)
group-onsemi 0:098463de4c5d 168
group-onsemi 0:098463de4c5d 169
group-onsemi 0:098463de4c5d 170 @subcommand('cache-part',
group-onsemi 0:098463de4c5d 171 dict(name='matches', nargs="+", help="words to match to devices"),
group-onsemi 0:098463de4c5d 172 help='Cache PACK files associated with the parts matching the provided words')
group-onsemi 0:098463de4c5d 173 def command_cache_part (cache, matches, intersection=True) :
group-onsemi 0:098463de4c5d 174 index = cache.index
group-onsemi 0:098463de4c5d 175 if intersection :
group-onsemi 0:098463de4c5d 176 choices = fuzzy_find(matches, index.keys())
group-onsemi 0:098463de4c5d 177 aliases = fuzzy_find(matches, cache.aliases.keys())
group-onsemi 0:098463de4c5d 178 else :
group-onsemi 0:098463de4c5d 179 choices = sum([fuzzy_find([m], index.keys()) for m in matches], [])
group-onsemi 0:098463de4c5d 180 aliases = sum([fuzzy_find([m], cache.aliases.keys()) for m in matches], [])
group-onsemi 0:098463de4c5d 181 urls = set([index[c]['pdsc_file'] for c in choices])
group-onsemi 0:098463de4c5d 182 urls += set([index[cache.aliasse[a]] for a in aliases])
group-onsemi 0:098463de4c5d 183 cache.cache_pack_list(list(urls))
group-onsemi 0:098463de4c5d 184
group-onsemi 0:098463de4c5d 185 def get_argparse() :
group-onsemi 0:098463de4c5d 186 return parser
group-onsemi 0:098463de4c5d 187
group-onsemi 0:098463de4c5d 188 def main() :
group-onsemi 0:098463de4c5d 189 args = parser.parse_args()
group-onsemi 0:098463de4c5d 190 args.command(args)
group-onsemi 0:098463de4c5d 191