FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/services/etm/etm_trace.c @ 996:09b8b2327838
tiffs in vitro reader: implemented support for old 16-bit location field (-O)
| author | Mychaela Falconia <falcon@ivan.Harhan.ORG> | 
|---|---|
| date | Sun, 03 Jan 2016 04:23:29 +0000 | 
| parents | 13af69b6a3dc | 
| children | 
| rev | line source | 
|---|---|
| 164 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1 /******************************************************************************** | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 2 * Enhanced TestMode (ETM) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 3 * @file etm_trace.c | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 4 * | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 5 * @author Kim T. Peteren (ktp@ti.com) and Mads Meisner-Jensen, mmj@ti.com | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 6 * @version 0.1 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 7 * | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 8 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 9 * | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 10 * History: | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 11 * | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 12 * Date Modification | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 13 * ------------------------------------ | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 14 * 16/06/2003 Creation | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 15 * | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 16 * (C) Copyright 2003 by Texas Instruments Incorporated, All Rights Reserved | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 17 *********************************************************************************/ | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 18 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 19 | 
| 166 
13af69b6a3dc
ETM core compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
164diff
changeset | 20 #include "etm_trace.h" | 
| 
13af69b6a3dc
ETM core compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
164diff
changeset | 21 #include "etm_env.h" | 
| 164 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 22 | 
| 166 
13af69b6a3dc
ETM core compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
164diff
changeset | 23 #include "../../riviera/rvf/rvf_api.h" | 
| 
13af69b6a3dc
ETM core compiles
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
164diff
changeset | 24 #include "../../riviera/rvm/rvm_use_id_list.h" | 
| 164 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 25 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 26 #include <string.h> | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 27 #include <stdio.h> | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 28 #include <stdarg.h> | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 29 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 30 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 31 /****************************************************************************** | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 32 * Prototypes | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 33 *****************************************************************************/ | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 34 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 35 void trstr(unsigned int mask, char *string); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 36 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 37 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 38 /****************************************************************************** | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 39 * Target Tracing | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 40 *****************************************************************************/ | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 41 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 42 static unsigned int ttr_mask = TgTrFatal; //TgTrFatal; //TgTrAll; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 43 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 44 void tr_etm_init(unsigned int mask) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 45 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 46 ttr_mask = mask; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 47 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 48 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 49 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 50 void tr_etm(unsigned int mask, char *format, ...) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 51 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 52 va_list args; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 53 static char buf[256]; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 54 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 55 if (ttr_mask & mask) { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 56 // build string ala tr() then call str() | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 57 va_start(args, format); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 58 vsprintf(buf, format, args); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 59 trstr(mask, buf); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 60 va_end(args); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 61 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 62 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 63 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 64 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 65 void trstr(unsigned int mask, char *string) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 66 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 67 if (ttr_mask & mask) { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 68 rvf_send_trace(string, strlen(string), NULL_PARAM, | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 69 RV_TRACE_LEVEL_WARNING, ETM_USE_ID); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 70 rvf_delay(10); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 71 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 72 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 73 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 74 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 75 void tr_etm_hexdump(unsigned int mask, const void *p, int size) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 76 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 77 unsigned int type, module; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 78 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 79 if (!(ttr_mask & mask)) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 80 return; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 81 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 82 hexdump_buf((char*) p, size); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 83 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 84 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 85 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 86 /****************************************************************************** | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 87 * Hexdumping Functions | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 88 *****************************************************************************/ | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 89 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 90 void etm_trace(char *string, int level) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 91 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 92 rvf_send_trace(string, strlen(string), NULL_PARAM, level, ETM_USE_ID); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 93 rvf_delay(20); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 94 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 95 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 96 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 97 int sprint_int_as_hex(char *buf, unsigned int n, int width, char padding) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 98 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 99 unsigned int m = n; // MUST be unsigned because it will be right shifted | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 100 int size = 0; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 101 int i; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 102 char digit; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 103 char *buf_start = buf; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 104 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 105 // Count number of digits in <n> | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 106 do { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 107 size++; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 108 } while (m >>= 4); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 109 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 110 // Shift significant part of <n> into the top-most bits | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 111 n <<= 4 * (8 - size); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 112 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 113 // Pad output buffer with <padding> | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 114 if (0 < width && width <= 8) { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 115 width = (width > size ? width - size : 0); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 116 while (width--) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 117 *buf++ = padding; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 118 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 119 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 120 // Convert <n>, outputting the hex digits | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 121 for (i = 0; i < size; i++) { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 122 digit = (n >> 28) & 0xF; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 123 digit += (digit < 10 ? '0' : 'A' - 10); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 124 *buf++ = digit; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 125 n <<= 4; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 126 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 127 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 128 // Null terminate | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 129 *buf = 0; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 130 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 131 return buf - buf_start; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 132 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 133 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 134 int printf_int_as_hex(unsigned int n, int width, char padding) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 135 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 136 char string[8+1]; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 137 int length; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 138 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 139 length = sprint_int_as_hex(string, n, width, padding); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 140 etm_trace(string, RV_TRACE_LEVEL_DEBUG_LOW); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 141 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 142 return length; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 143 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 144 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 145 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 146 int print_int_as_hex(unsigned int n) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 147 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 148 return printf_int_as_hex(n, 0, 0); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 149 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 150 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 151 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 152 void hexdump_buf(char *buf, int size) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 153 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 154 int n, i, multiline; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 155 char string[(8+1) + (16+1) + (3*16) + 1]; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 156 char *s; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 157 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 158 multiline = (size > 16); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 159 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 160 while (size > 0) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 161 { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 162 s = string; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 163 n = (size > 16 ? 16 : size); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 164 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 165 // Print address | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 166 if (multiline) { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 167 s += sprint_int_as_hex(s, (unsigned int) buf, 8, ' '); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 168 *s++ = ' '; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 169 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 170 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 171 // Print the textual representation | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 172 for (i = 0; i < n; i++) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 173 *s++ = (buf[i] >= ' ' && buf[i] < 127 ? buf[i] : '.'); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 174 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 175 // Pad textual representation with spaces | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 176 if (multiline) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 177 for (i = 0; i < 16 - n; i++) | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 178 *s++ = ' '; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 179 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 180 // Print hexedecimal bytes | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 181 for (i = 0; i < n; i++) { | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 182 *s++ = ' '; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 183 s += sprint_int_as_hex(s, (unsigned int) buf[i] & 0xFF, 2, '0'); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 184 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 185 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 186 *s = 0; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 187 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 188 etm_trace(string, RV_TRACE_LEVEL_DEBUG_LOW); | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 189 | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 190 buf += 16; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 191 size -= 16; | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 192 } | 
| 
d78219c43fbf
gsm-fw/services/etm: initial import from the Leonardo semi-src
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 193 } | 
