Changeset 4649
- Timestamp:
- 09/16/08 05:02:47 (5 years ago)
- Location:
- developers/werner/ahrt/host/tmc
- Files:
-
- 1 added
- 3 edited
-
demo/dxplore.py (modified) (3 diffs)
-
lib/crc.py (added)
-
lib/decode.py (modified) (9 diffs)
-
setup.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
developers/werner/ahrt/host/tmc/demo/dxplore.py
r4647 r4649 28 28 29 29 dig = [] 30 for wv in w :30 for wv in w[1:]: 31 31 dig.append(wv.digitize(0.5)) 32 32 33 min = dig[ 1].sample_step()34 for d in dig[ 2:]:33 min = dig[0].sample_step() 34 for d in dig[1:]: 35 35 step = d.sample_step() 36 36 if step is not None and step < min: … … 38 38 39 39 da = [] 40 for d in dig [1:]:40 for d in dig: 41 41 a = d.sample(min) 42 42 # print len(a) … … 45 45 46 46 da.reverse() 47 dxplore(da, dig[ 1].start(), min, argv[1])47 dxplore(da, dig[0].start(), min, argv[1]) -
developers/werner/ahrt/host/tmc/lib/decode.py
r4646 r4649 1 #!/usr/bin/python 1 # 2 # decode.py - Data stream decoders 3 # 4 # Copyright (C) 2008 by OpenMoko, Inc. 5 # Written by Werner Almesberger <werner@openmoko.org> 6 # All Rights Reserved 7 # 8 # This program is free software; you can redistribute it and/or modify 9 # it under the terms of the GNU General Public License as published by 10 # the Free Software Foundation; either version 2 of the License, or 11 # (at your option) any later version. 12 # 13 14 15 import tmc.crc 16 17 18 # One CRC instance can be shared by all decoders 19 20 g_crc = tmc.crc.crc() 2 21 3 22 … … 53 72 54 73 def decode_address(addr): 74 75 # CCCR 55 76 if addr < 0x14: 56 77 return ( 57 78 "Rev", "SDR", "IOE", "IOR", 58 79 "IEN", "INT", "Abr", "Bus", 59 "Cap", "CIS", "Sus", "Sel", 60 "EXF", "RDY", "BSZ", "BSZ", 61 "PWR", "HSp")[addr] 80 "Cap", "CIS", "CIS", "CIS", 81 "Sus", "Sel", "EXF", "RDY", 82 "BSZ", "BSZ", "PWR", "HSp")[addr] 83 84 # FBR 85 if addr >= 0x100 and addr < 0x800 and (addr & 0xff) < 0x112: 86 return ("F%d" % (addr >> 8))+( 87 "FIC", "EFC", "Pwr", "RFU", 88 "RFU", "RFU", "RFU", "RFU", 89 "RFU", "CIS", "CIS", "CIS", 90 "CSA", "CSA", "CSA", "DCA", 91 "BSZ", "BSZ")[addr & 0xff] 92 62 93 return None 63 94 … … 96 127 97 128 129 def d_crc7_msb(payload): 130 crc = 0 131 while len(payload): 132 v = 0 133 for b in range(0, 8): 134 if payload[0] == "X": 135 return None 136 v = (v << 1) | payload.pop(0) 137 crc = g_crc.crc7(crc, [v]) 138 return crc 139 140 98 141 def d_sdio_cmd(bits, stop = False): 99 142 if bits[0]: … … 105 148 del bits[0] 106 149 150 # We access the payload as soon as the CRC has been read, but possibly 151 # before we also have the stop bit. 152 153 if len(bits) >= 47: 154 payload = bits[0:40] 155 107 156 if len(bits) == 0: 108 157 return s … … 112 161 if len(bits) == 0: 113 162 return s 114 if bits[0] :163 if bits[0] and bits[0] != "X": 115 164 s += ">" 116 165 else: … … 139 188 arg = d_msb(bits[0:32]) 140 189 if cmd is None or arg is None: 141 arg = None142 else: 143 arg = decode_arg(cmd, arg)144 if arg is None:145 s += "("+d_byte_msb(bits )+")"146 if stop :147 return s 148 else: 149 s += "("+arg +")"190 arg_pretty = None 191 else: 192 arg_pretty = decode_arg(cmd, arg) 193 if arg_pretty is None: 194 s += "("+d_byte_msb(bits[0:32])+")" 195 if stop and arg is None: 196 return s 197 else: 198 s += "("+arg_pretty+")" 150 199 del bits[0:32] 151 200 … … 160 209 return s 161 210 else: 162 s += "CRC%02x" % crc 211 s += "CRC%02X" % crc 212 check = d_crc7_msb(payload) 213 if check is None: 214 s += "?" 215 elif check != crc: 216 s += "/%02X" % check 163 217 del bits[0:7] 164 218 165 219 if len(bits) == 0: 166 220 return s 167 s += ("?", "]")[bits[0]] 221 if bits[0] and bits[0] != "X": 222 s += "]" 223 else: 224 s += "?" 168 225 del bits[0] 169 226 … … 183 240 def d_sdio_resp_sd(bits): 184 241 return "SDIO" 242 243 244 def d_sdio_r5_spi(bits, stop = False): 245 if bits[0]: 246 s = "~" 247 else: 248 s = "" 249 250 while len(bits) and bits[0]: 251 del bits[0] 252 253 if len(bits) == 0: 254 return s 255 s += "[" 256 del bits[0] 257 258 if len(bits) == 0: 259 return s 260 if bits[0]: 261 s += "Prm" 262 else: 263 s += "-" 264 del bits[0] 265 266 if len(bits) == 0: 267 return s 268 if bits[0]: 269 s += "???" 270 if stop: 271 return s 272 else: 273 s += "-" 274 del bits[0] 275 276 if len(bits) == 0: 277 return s 278 if bits[0]: 279 s += "Fn#" 280 else: 281 s += "-" 282 del bits[0] 283 284 if len(bits) == 0: 285 return s 286 if bits[0]: 287 s += "Crc" 288 else: 289 s += "-" 290 del bits[0] 291 292 if len(bits) == 0: 293 return s 294 if bits[0]: 295 s += "Cmd" 296 else: 297 s += "-" 298 del bits[0] 299 300 if len(bits) == 0: 301 return s 302 if bits[0]: 303 s += "???" 304 if stop: 305 return s 306 else: 307 s += "-" 308 del bits[0] 309 310 if len(bits) == 0: 311 return s 312 if bits[0]: 313 s += "Idl" 314 else: 315 s += "-" 316 del bits[0] 317 318 s += d_byte_msb(bits[0:8]) 319 if len(bits) >= 8: 320 s += "]" 321 if len(bits) > 8 and not stop: 322 s += "|"+d_bits(bits[8:]) 323 324 return s 185 325 186 326 … … 192 332 ( "SDIO RESP (SD)", d_sdio_resp_sd ), 193 333 ( "SDIO RESP (SPI)", d_sdio_resp_spi ), 334 ( "SDIO R5 (SPI)", d_sdio_r5_spi ), 194 335 ] -
developers/werner/ahrt/host/tmc/setup.py
r4647 r4649 6 6 py_modules = [ "tmc.instrument", 7 7 "tmc.wave", "tmc.trigger", "tmc.shape", 8 "tmc. decode", "tmc.dxplore",8 "tmc.crc", "tmc.decode", "tmc.dxplore", 9 9 "tmc.meter", "tmc.scope", "tmc.power", "tmc.function" ], 10 10 package_dir = { "tmc": "lib" },
Note: See TracChangeset
for help on using the changeset viewer.
