FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/services/ffs/tmffs.c @ 992:a7b0b426f9ca
target-utils: boot ROM UART autodetection revamped
The new implementation should work with both the familiar Calypso C035
boot ROM version found in our regular targets as well as the older
Calypso F741979B version found on the vintage D-Sample board.
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Wed, 30 Dec 2015 21:28:41 +0000 |
parents | 842c9fd828fd |
children |
rev | line source |
---|---|
221
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 * Flash File System (ffs) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 * Idea, design and coding by Mads Meisner-Jensen, mmj@ti.com |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 * |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 * ffs testmode interface |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 * |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 * $Id: tmffs.c 1.51 Thu, 18 Dec 2003 10:50:52 +0100 tsj $ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 * |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 #include "../../include/config.h" |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 #include "../../riviera/rv/rv_defined_swe.h" |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 #ifdef RVM_ETM_SWE |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 #include "../etm/etm.h" |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 #include "../etm/etm_api.h" |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 #endif |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
18 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 #include "ffs.h" |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 #include "task.h" |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 #include "ffstrace.h" |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 #include "tmffs.h" |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 #include <string.h> |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 * Local globals for all protocols |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 #if TMFFS1 || TMFFS2 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 static int32 bufsize, tmpsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 static uint8 stringsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 #endif |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 effs_t ffs_initialize(void); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 effs_t ffs_exit(void); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 #define tmffs_put8(x) *outp++ = x; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 #define tmffs_put16(x) *outp++ = (x & 0xff); *outp++ = (x>>8); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 // Not in use |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 //#define tmffs_put32(x) tmffs_put16(x); tmffs_put16(x >> 16); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 #ifdef RVM_ETM_SWE |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 int etm_ffs2(T_ETM_PKT *pkt, unsigned char *inp, int insize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 * TM FFS registration to ETM database |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 *****************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 /* Callback function registered in ETM database */ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 int etm_ffs1_pkt_receive(uint8 *data, int size) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
53 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 int mid; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
55 T_ETM_PKT *pkt; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 ttw(ttr(TTrTmffs, "etm_ffs1_pkt_receive(*, %d)" NL, size)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 /* Create TestMode return Packet */ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
60 if ((pkt = (T_ETM_PKT *) target_malloc(sizeof(T_ETM_PKT))) == NULL) { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
61 ttw(ttr(TTrTmffs, "etm_ffs1_pkt_receive(): Limit of memory bank reached" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
62 return ETM_NOMEM; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
63 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
64 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
65 // Max packet size for TM3 is 128 bytes |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
66 size = tm_ffs(pkt->data, TM3_PACKET_SIZE, data, size); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
67 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
68 pkt->size = size; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
69 pkt->status = ETM_OK; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
70 pkt->mid = ETM_FFS1; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 etm_pkt_send(pkt); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 target_free(pkt); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
74 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
75 return ETM_OK; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
76 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 /* Callback function registered in ETM database */ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
79 int etm_ffs2_pkt_receive(uint8 *data, int size) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
80 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
81 int status; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
82 T_ETM_PKT *pkt = NULL; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
83 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
84 ttw(ttr(TTrTmffs, "etm_ffs2_pkt_receive(*, %d)" NL, size)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
85 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
86 /* Create TestMode return Packet */ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
87 if ((pkt = (T_ETM_PKT *) target_malloc(sizeof(T_ETM_PKT))) == NULL) { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
88 ttw(ttr(TTrTmffs, "etm_ffs2_pkt_receive(): Limit of memory bank reached" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
89 return ETM_NOMEM; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
90 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
91 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
92 status = etm_ffs2(pkt, data, size); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
93 return status; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
94 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
95 #endif |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
96 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
97 /* Init of FFS in the ETM database */ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
98 int etm_ffs_init(void) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
99 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
100 int status; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
101 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
102 #ifdef RVM_ETM_SWE |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
103 status = etm_register("FFS1", ETM_FFS1, 0, 0, etm_ffs1_pkt_receive); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
104 status = etm_register("FFS2", ETM_FFS2, 0, 0, etm_ffs2_pkt_receive); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
105 #else |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
106 status = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
107 #endif |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
108 return status; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
109 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
110 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
111 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
112 * FFS1 Protocol |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
113 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
114 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
115 #ifndef TMFFS1 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
116 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
117 int tm_ffs(unsigned char *outp, int outsize, unsigned char *inp, int insize) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
118 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
119 return -1; // FIXME handle error better |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
120 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
121 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
122 // Note these functions must be presented because ffs_query() use them but |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
123 // they are only valid if FFS1_PROTOCOL is used. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
124 int tmffs_bufsize(void) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
125 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
126 return EFFS_NOSYS; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
127 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
128 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
129 unsigned char *tmffs_bufaddr(void) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
130 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
131 return 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
132 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
133 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
134 #else |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
135 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
136 #if (GSMLITE == 1) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
137 #define TMFFS1_BUFFER_SIZE 4000 //previously 8192 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
138 #else |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
139 #define TMFFS1_BUFFER_SIZE 8192 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
140 #endif |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
141 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
142 #define TMFFS1_STRING_SIZE 127 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
143 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
144 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
145 * Macros |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
146 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
147 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
148 #define tmffs1_putdata(outp, src, size) \ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
149 tmffs_put8(FPI_DATA); \ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
150 tmffs_put16(size); \ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
151 memcpy(outp, src, size); \ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
152 outp += size; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
153 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
154 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
155 * Local globals |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
156 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
157 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
158 static unsigned char buffer[TMFFS1_BUFFER_SIZE]; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
159 static bufindex; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
160 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
161 static char string[TMFFS1_STRING_SIZE]; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
162 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
163 static effs_t tm_ffs_overflowck(void) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
164 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
165 if (bufsize > TMFFS1_BUFFER_SIZE || |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
166 stringsize > TMFFS1_STRING_SIZE) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
167 return EFFS_TOOBIG; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
168 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
169 return EFFS_OK; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
170 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
171 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
172 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
173 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
174 * tm_ffs |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
175 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
176 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
177 /** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
178 * NOTEME: This has been introduced when the ffs 1MB device limit was |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
179 * broken. This made location_t go from uint16 to uint32, messing up |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
180 * with PCTM. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
181 * |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
182 * This makes the xstat_s look the same to PCTM PC side, though |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
183 * location will be forced to 0. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
184 */ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
185 void hack_xstat_2_look_like_old_xstat(struct xstat_s *xstat) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
186 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
187 int i; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
188 char *location; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
189 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
190 xstat->location = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
191 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
192 for (location = (char *) &(xstat->location) + 2; location <= (char *) &(xstat->sequence); location++) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
193 *location = location[2]; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
194 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
195 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
196 // Parse input message and execute function. Then fill output buffer with |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
197 // return values from the called function and transmit the message. Return |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
198 // number of bytes inserted into output buffer. If return value is negative, |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
199 // it represents an error code. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
200 int tm_ffs(unsigned char *outp, int outsize, unsigned char *inp, int insize) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
201 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
202 int error; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
203 tmffs_cid_t fid; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
204 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
205 unsigned char *outp_start = outp; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
206 unsigned char *inp_start = inp; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
207 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
208 static uint8 i8[2]; static uint16 i8i; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
209 static uint16 i16[2]; static uint16 i16i; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
210 static uint32 i32[2]; static uint16 i32i; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
211 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
212 tw(tr(TR_BEGIN, TrTmffs, "TMFFS:\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
213 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
214 while((fid = *inp++) != FPI_END) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
215 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
216 switch(fid) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
217 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
218 /********************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
219 * Generic Protocol Functions |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
220 **********************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
221 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
222 case FPI_BEGIN: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
223 // for (i8i = 0; i8i < TMFFS1_STRING_SIZE; i8i++) // DEBUG |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
224 // string[i8i] = '#'; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
225 // for (i8i = 0; i8i < TMFFS1_BUFFER_SIZE; i8i++) // DEBUG |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
226 // buffer[i8i] = '$'; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
227 i8i = i16i = i32i = bufsize = stringsize = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
228 bufindex = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
229 i8[0] = i8[1] = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
230 i16[0] = i16[1] = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
231 i32[0] = i32[1] = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
232 string[0] = buffer[0] = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
233 tw(tr(TR_FUNC, TrTmffs, "FPI_BEGIN\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
234 ttw(ttr(TTrTmffs, "tm1" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
235 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
236 case FPI_TMFFS_VERSION: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
237 // NULL -> UINT16 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
238 tmffs_put16(TMFFS1_VERSION); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
239 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
240 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
241 case FPI_INT8: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
242 i8[i8i++] = inp[0]; inp += 1; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
243 tw(tr(TR_FUNC, TrTmffs, "FPI_INT8(%d/0x%x)\n", |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
244 i8[i8i-1], i8[i8i-1])); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
245 ttw(ttr(TTrTmffs, "tm_i8" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
246 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
247 case FPI_INT16: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
248 i16[i16i++] = (inp[0]) | (inp[1] << 8); inp += 2; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
249 tw(tr(TR_FUNC, TrTmffs, "FPI_INT16(%d/0x%x)\n", |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
250 i16[i16i-1], i16[i16i-1])); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
251 ttw(ttr(TTrTmffs, "tm_i16" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
252 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
253 case FPI_INT32: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
254 i32[i32i++] = inp[0] | (inp[1] << 8) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
255 | (inp[2] << 16) | (inp[3] << 24); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
256 inp += 4; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
257 tw(tr(TR_FUNC, TrTmffs, "FPI_INT32(%d/0x%x)\n", |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
258 i32[i32i-1], i32[i32i-1])); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
259 ttw(ttr(TTrTmffs, "tm_i32" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
260 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
261 case FPI_BUFFER: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
262 bufsize = inp[0] | (inp[1] << 8); inp += 2; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
263 tw(tr(TR_FUNC, TrTmffs, "FPI_BUFFER(%d)\n", bufsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
264 ttw(ttr(TTrTmffs, "tm_buf" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
265 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
266 case FPI_DATA: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
267 bufsize = inp[0] | (inp[1] << 8); inp += 2; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
268 memcpy(buffer, inp, bufsize); inp += bufsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
269 tw(tr(TR_FUNC, TrTmffs, "FPI_DATA(%d)\n", bufsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
270 ttw(ttr(TTrTmffs, "tm_data" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
271 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
272 case FPI_STRBUF: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
273 // string buffer size MUST include null-terminator! |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
274 stringsize = inp[0]; inp += 1; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
275 tw(tr(TR_FUNC, TrTmffs, "FPI_STRBUF(%d)\n", stringsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
276 ttw(ttr(TTrTmffs, "tm_sbuf" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
277 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
278 case FPI_STRING: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
279 // stringsize MUST include null-terminator! |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
280 // <INT8>, <BYTES> -> NULL (or ERROR) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
281 stringsize = inp[0]; inp += 1; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
282 if (stringsize <= TMFFS1_STRING_SIZE) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
283 memcpy(string, inp, stringsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
284 inp += stringsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
285 tw(tr(TR_FUNC, TrTmffs, "FPI_STRING(%d,'%s')\n", |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
286 stringsize, string)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
287 ttw(ttr(TTrTmffs, "tm_s" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
288 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
289 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
290 case FPI_BUFREAD: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
291 // <INT16> -> DATA |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
292 tmpsize = inp[0] | (inp[1] << 8); inp += 2; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
293 tw(tr(TR_FUNC, TrTmffs, "FPI_BUF_READ(%d)\n", tmpsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
294 tmffs1_putdata(outp, &buffer[bufindex], tmpsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
295 bufindex += tmpsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
296 ttw(ttr(TTrTmffs, "tm_bufrd" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
297 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
298 case FPI_BUFWRITE: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
299 // <INT16>, <BYTES> -> NULL (or ERROR) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
300 tmpsize = inp[0] | (inp[1] << 8); inp += 2; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
301 tw(tr(TR_FUNC, TrTmffs, "FPI_BUF_WRITE(%d)\n", tmpsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
302 if (bufsize + tmpsize <= TMFFS1_BUFFER_SIZE) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
303 memcpy(&buffer[bufsize], inp, tmpsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
304 inp += tmpsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
305 bufsize += tmpsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
306 ttw(ttr(TTrTmffs, "tm_bufwr" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
307 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
308 case FPI_BUFSET: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
309 bufindex = inp[0] | (inp[1] << 8); inp += 2; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
310 tw(tr(TR_FUNC, TrTmffs, "FPI_BUF_SET(%d)\n", bufindex)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
311 ttw(ttr(TTrTmffs, "tm_bufset" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
312 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
313 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
314 /********************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
315 * FFS Functions |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
316 **********************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
317 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
318 case FPI_PREFORMAT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
319 // NULL -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
320 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
321 error = ffs_preformat_nb(i16[0], 0); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
322 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
323 error = 0; // ignore request id |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
324 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
325 tw(tr(TR_FUNC, TrTmffs, "FPI_PREFORMAT(0x%x)\n", i16[0])); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
326 ttw(ttr(TTrTmffs, "tm_pfmt" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
327 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
328 case FPI_FORMAT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
329 // STRING -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
330 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
331 error = ffs_format_nb(&string[0], i16[0], 0); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
332 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
333 error = 0; // ignore request id |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
334 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
335 tw(tr(TR_FUNC, TrTmffs, "FPI_FORMAT(0x%x)\n", i16[0])); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
336 ttw(ttr(TTrTmffs, "tm_fmt" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
337 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
338 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
339 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
340 case FPI_FCREATE: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
341 // STRING, DATA -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
342 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
343 error = ffs_fcreate_nb(string, buffer, bufsize, 0); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
344 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
345 error = 0; // ignore request id |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
346 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
347 tw(tr(TR_FUNC, TrTmffs, "FPI_FCREATE('%s', 0x%x, %d/0x%x)\n", |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
348 string, buffer, bufsize, bufsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
349 ttw(ttr(TTrTmffs, "tm_fcr" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
350 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
351 case FPI_FUPDATE: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
352 // STRING, DATA -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
353 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
354 error = ffs_fupdate_nb(string, buffer, bufsize, 0); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
355 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
356 error = 0; // ignore request id |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
357 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
358 tw(tr(TR_FUNC, TrTmffs, "FPI_FUPDATE('%s', 0x%x, %d/0x%x)\n", |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
359 string, buffer, bufsize, bufsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
360 ttw(ttr(TTrTmffs, "tm_fup" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
361 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
362 case FPI_FWRITE: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
363 // STRING, DATA -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
364 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
365 error = ffs_fwrite_nb(string, buffer, bufsize, 0); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
366 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
367 error = 0; // ignore request id |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
368 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
369 tw(tr(TR_FUNC, TrTmffs, "FPI_FWRITE('%s', 0x%x, %d/0x%x)\n", |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
370 string, buffer, bufsize, bufsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
371 ttw(ttr(TTrTmffs, "tm_fwr" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
372 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
373 case FPI_FREAD: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
374 // STRING, BUFFER -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
375 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
376 error = ffs_file_read(string, buffer, TMFFS1_BUFFER_SIZE); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
377 // Because a 32-bit integer is returned, we have to saturate it |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
378 // into an 8-bit value. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
379 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
380 error = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
381 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
382 tw(tr(TR_FUNC, TrTmffs, "FPI_FREAD('%s', 0x%x, %d/0x%x)\n", |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
383 string, buffer, bufsize, bufsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
384 ttw(ttr(TTrTmffs, "tm_frd" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
385 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
386 case FPI_REMOVE: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
387 // STRING -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
388 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
389 error = ffs_remove_nb(string, 0); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
390 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
391 error = 0; // ignore request id |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
392 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
393 tw(tr(TR_FUNC, TrTmffs, "FPI_REMOVE()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
394 ttw(ttr(TTrTmffs, "tm_rm" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
395 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
396 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
397 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
398 case FPI_MKDIR: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
399 // STRING -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
400 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
401 error = ffs_mkdir_nb(string, 0); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
402 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
403 error = 0; // ignore request id |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
404 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
405 tw(tr(TR_FUNC, TrTmffs, "FPI_MKDIR()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
406 ttw(ttr(TTrTmffs, "tm_mkd" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
407 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
408 case FPI_OPENDIR: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
409 // STRING, BUFFER -> ERROR, DATA |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
410 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
411 error = ffs_opendir(string, (struct dir_s *) buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
412 // Because a 32-bit integer is returned, we have to saturate it |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
413 // into an 8-bit value. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
414 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
415 error = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
416 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
417 tmffs1_putdata(outp, buffer, sizeof(struct dir_s)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
418 tw(tr(TR_FUNC, TrTmffs, "FPI_OPENDIR()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
419 ttw(ttr(TTrTmffs, "tm_od" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
420 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
421 case FPI_READDIR: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
422 // DATA, STRBUF -> ERROR, DATA, STRING |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
423 string[0] = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
424 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
425 error = ffs_readdir((struct dir_s *) buffer, string, stringsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
426 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
427 // Saturate error(i) in order to let it fit in type int8. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
428 if (error > 127) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
429 error = 127; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
430 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
431 tmffs1_putdata(outp, buffer, sizeof(struct dir_s)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
432 stringsize = strlen(string) + 1; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
433 tmffs_put8(FPI_STRING); // put directory entry's name... |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
434 tmffs_put8(stringsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
435 memcpy(outp, string, stringsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
436 outp += stringsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
437 tw(tr(TR_FUNC, TrTmffs, "FPI_READDIR()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
438 ttw(ttr(TTrTmffs, "tm_rdd" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
439 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
440 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
441 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
442 case FPI_STAT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
443 // STRING, BUFFER -> ERROR, DATA |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
444 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
445 error = ffs_stat(&string[0], (struct stat_s *) buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
446 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
447 tmffs1_putdata(outp, buffer, sizeof(struct stat_s)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
448 tw(tr(TR_FUNC, TrTmffs, "FPI_STAT()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
449 ttw(ttr(TTrTmffs, "tm_st" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
450 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
451 case FPI_LINKSTAT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
452 // STRING, BUFFER -> ERROR, DATA |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
453 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
454 error = ffs_xlstat(&string[0], (struct xstat_s *) buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
455 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
456 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
457 hack_xstat_2_look_like_old_xstat((struct xstat_s *) buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
458 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
459 tmffs1_putdata(outp, buffer, sizeof(struct xstat_s) - 2); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
460 tw(tr(TR_FUNC, TrTmffs, "FPI_()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
461 ttw(ttr(TTrTmffs, "tm_lst" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
462 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
463 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
464 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
465 case FPI_SYMLINK: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
466 // STRING, DATA -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
467 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
468 error = ffs_symlink_nb(string, (char *) buffer, 0); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
469 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
470 error = 0; // ignore request id |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
471 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
472 tw(tr(TR_FUNC, TrTmffs, "FPI_SYMLINK()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
473 ttw(ttr(TTrTmffs, "tm_sym" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
474 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
475 case FPI_READLINK: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
476 // STRING, BUFFER -> ERROR, DATA |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
477 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
478 error = ffs_readlink(string, (char *) buffer, TMFFS1_BUFFER_SIZE); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
479 // Because a 32-bit integer is returned, we have to saturate it |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
480 // into an 8-bit value. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
481 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
482 error = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
483 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
484 tmffs1_putdata(outp, buffer, bufsize); // put link contents |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
485 tw(tr(TR_FUNC, TrTmffs, "FPI_READLINK()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
486 ttw(ttr(TTrTmffs, "tm_rdl" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
487 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
488 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
489 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
490 case FPI_QUERY: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
491 // INT8 -> ERROR, DATA |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
492 error = ffs_query(i8[0], buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
493 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
494 tmffs1_putdata(outp, buffer, 16); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
495 tw(tr(TR_FUNC, TrTmffs, "FPI_QUERY()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
496 ttw(ttr(TTrTmffs, "tm_q" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
497 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
498 case FPI_FCONTROL: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
499 // STRING INT8 INT32 -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
500 if ((error = tm_ffs_overflowck()) == EFFS_OK) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
501 error = ffs_fcontrol_nb(string, i8[0], i32[0], 0); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
502 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
503 error = 0; // ignore request id |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
504 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
505 tw(tr(TR_FUNC, TrTmffs, "FPI_FCONTROL()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
506 ttw(ttr(TTrTmffs, "tm_fc" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
507 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
508 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
509 case FPI_INIT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
510 // NULL -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
511 error =ffs_initialize(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
512 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
513 tw(tr(TR_FUNC, TrTmffs, "FPI_INIT()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
514 ttw(ttr(TTrTmffs, "tm_init" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
515 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
516 case FPI_EXIT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
517 // NULL -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
518 error = ffs_exit(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
519 tmffs_put8(error); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
520 tw(tr(TR_FUNC, TrTmffs, "FPI_EXIT()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
521 ttw(ttr(TTrTmffs, "tm_exit" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
522 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
523 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
524 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
525 case FPI_TFFS: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
526 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
527 // STRING -> ERROR |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
528 #if (WITH_TFFS == 1) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
529 extern char ffs_test_string[]; // defined in task.c |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
530 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
531 memcpy(ffs_test_string, string, stringsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
532 tw(tr(TR_FUNC, TrTmffs, "FPI_TFFS()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
533 ttw(ttr(TTrTmffs, "tm_tffs" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
534 #else |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
535 tmffs_put8(EFFS_NOSYS); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
536 #endif |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
537 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
538 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
539 default: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
540 tw(tr(TR_FUNC, TrTmffs, "ERROR: Unknown tmffs protocol code\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
541 ttw(ttr(TTrTmffs, "tm?" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
542 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
543 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
544 // check if we read beyond buffer end |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
545 if (inp > inp_start + insize) { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
546 tw(tr(TR_FUNC, TrTmffs, "ERROR: Read beyond end of input buffer\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
547 ttw(ttr(TTrTmffs, "tm_fatal" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
548 // NOTEME: We really should reset output buffer and put a return |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
549 // code that tells us what went wrong! |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
550 return 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
551 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
552 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
553 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
554 tw(tr(TR_END, TrTmffs, "")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
555 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
556 return outp - outp_start; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
557 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
558 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
559 int tmffs_bufsize(void) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
560 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
561 return TMFFS1_BUFFER_SIZE; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
562 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
563 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
564 unsigned char *tmffs_bufaddr(void) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
565 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
566 return buffer; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
567 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
568 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
569 #endif // TMFFS1 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
570 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
571 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
572 * FFS2 protocol |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
573 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
574 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
575 #ifndef TMFFS2 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
576 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
577 #ifdef RVM_ETM_SWE |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
578 int etm_ffs2(T_ETM_PKT *pkt, unsigned char *inp, int insize) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
579 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
580 int error; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
581 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
582 tw(tr(TR_BEGIN, TrTmffs, "FFS2 protocol not represented in target\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
583 error = -1; // FIXME other error? |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
584 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
585 // We return a packet instead of waiting for timeout. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
586 pkt->size = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
587 pkt->status = -error; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
588 pkt->mid = ETM_FFS2; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
589 etm_pkt_send(pkt); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
590 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
591 target_free(pkt); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
592 tw(tr(TR_END, TrTmffs, "")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
593 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
594 return error; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
595 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
596 #endif |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
597 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
598 #else |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
599 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
600 #define TMFFS_BUFFER_SIZE 256 // FIXME change to packet size |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
601 #define TMFFS_STRING_SIZE 127 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
602 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
603 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
604 * Macros |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
605 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
606 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
607 #define tmffs_get8() inp[0]; inp += 1; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
608 #define tmffs_get16() (inp[0]) | (inp[1] << 8); inp += 2; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
609 #define tmffs_get32() inp[0] | (inp[1] << 8) | (inp[2] << 16)\ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
610 | (inp[3] << 24); inp += 4; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
611 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
612 #define tmffs_getdata() bufsize = inp[0]; inp += 1; \ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
613 memcpy(buffer, inp, bufsize); inp += bufsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
614 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
615 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
616 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
617 * Helper function |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
618 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
619 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
620 // If size is less than zero it is because of a error and we dont have to put any |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
621 // data if size is returned in status. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
622 int tmffs_putdata(unsigned char **buf, unsigned char *src, int size) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
623 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
624 unsigned char *p = *buf; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
625 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
626 if (size > 0) { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
627 *p++ = size; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
628 memcpy(p, src, size); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
629 *buf += 1 + size; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
630 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
631 return size; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
632 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
633 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
634 int tmffs_putstring(unsigned char **buf, char *src, int size) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
635 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
636 unsigned char *p = *buf; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
637 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
638 if (size > 0) { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
639 *p++ = size; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
640 memcpy(p, src, size); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
641 *buf += 1 + size; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
642 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
643 return size; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
644 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
645 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
646 int tmffs_getstring(unsigned char ** buf, char *string) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
647 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
648 unsigned char *p = *buf; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
649 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
650 stringsize = *p++; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
651 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
652 if (stringsize > TMFFS_STRING_SIZE) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
653 return EFFS_TOOBIG; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
654 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
655 memcpy(string, p, stringsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
656 *buf += 1 + stringsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
657 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
658 return stringsize; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
659 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
660 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
661 /****************************************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
662 * tm_ffs |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
663 ******************************************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
664 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
665 // Parse input message and execute function. Then fill output buffer with |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
666 // return values from the called function and transmit the message. Return |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
667 // number of bytes inserted into output buffer. If return value is negative, |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
668 // it represents an error code. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
669 int etm_ffs2(T_ETM_PKT *pkt, unsigned char *inp, int insize) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
670 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
671 tmffs2_cid_t fid; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
672 unsigned char buffer[TMFFS_BUFFER_SIZE]; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
673 char string[TMFFS_STRING_SIZE]; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
674 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
675 unsigned char *outp_start; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
676 unsigned char *inp_start = inp; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
677 unsigned char *outp; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
678 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
679 int error = 0, i, fdi, size, param, flags; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
680 uint8 type; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
681 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
682 bufsize = stringsize = tmpsize = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
683 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
684 tw(tr(TR_BEGIN, TrTmffs, "TmFFS2\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
685 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
686 outp_start = outp = pkt->data; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
687 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
688 fid = *inp++; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
689 ttw(ttr(TTrTmffs, "etm_ffs2 0x%x" NL, fid)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
690 switch(fid) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
691 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
692 /********************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
693 * Generic Protocol Functions |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
694 **********************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
695 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
696 case TMFFS_VERSION: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
697 tmffs_put16(TMFFS2_VERSION); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
698 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
699 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
700 /********************************************************** |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
701 * FFS Functions |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
702 **********************************************************/ |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
703 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
704 case TMFFS_PREFORMAT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
705 param = tmffs_get16(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
706 error = ffs_preformat(param); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
707 tw(tr(TR_FUNC, TrTmffs, "TMFFS_PREFORMAT(0x%x)\n", param)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
708 ttw(ttr(TTrTmffs, "tm_pfmt" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
709 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
710 case TMFFS_FORMAT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
711 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
712 param = tmffs_get16(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
713 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
714 error = ffs_format(&string[0], param); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
715 tw(tr(TR_FUNC, TrTmffs, "TMFFS_FORMAT(0x%x)\n", param)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
716 ttw(ttr(TTrTmffs, "tm_fmt" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
717 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
718 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
719 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
720 case TMFFS_FILE_WRITE: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
721 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
722 tmffs_getdata(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
723 flags = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
724 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
725 error = ffs_file_write(string, buffer, bufsize, flags); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
726 ttw(ttr(TTrTmffs, "tm_fwr" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
727 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
728 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
729 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
730 case TMFFS_FILE_READ: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
731 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
732 bufsize = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
733 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
734 size = ffs_file_read(string, buffer, bufsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
735 error = tmffs_putdata(&outp, &buffer[0], size); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
736 tw(tr(TR_FUNC, TrTmffs, "TMFFS_FREAD('%s', 0x%x, %d/0x%x)\n", |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
737 string, buffer, bufsize, bufsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
738 ttw(ttr(TTrTmffs, "tm_frd" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
739 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
740 case TMFFS_REMOVE: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
741 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
742 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
743 error = ffs_remove(string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
744 tw(tr(TR_FUNC, TrTmffs, "TMFFS_REMOVE()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
745 ttw(ttr(TTrTmffs, "tm_rm" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
746 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
747 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
748 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
749 case TMFFS_OPEN: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
750 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
751 flags = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
752 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
753 error = ffs_open(string, flags); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
754 tmffs_put8(error); // fdi |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
755 tw(tr(TR_FUNC, TrTmffs, "TMFFS_OPEN('%s', %d)\n", string, flags)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
756 ttw(ttr(TTrTmffs, "tm_open" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
757 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
758 case TMFFS_CLOSE: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
759 fdi = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
760 error = ffs_close(fdi); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
761 tw(tr(TR_FUNC, TrTmffs, "TMFFS_CLOSE(%d)\n", fdi)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
762 ttw(ttr(TTrTmffs, "tm_close" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
763 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
764 case TMFFS_WRITE: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
765 fdi = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
766 tmffs_getdata(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
767 error = ffs_write(fdi, buffer, bufsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
768 tmffs_put8(error); // put size |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
769 tw(tr(TR_FUNC, TrTmffs, "TMFFS_WRITE(%d, %d)\n", fdi, bufsize)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
770 ttw(ttr(TTrTmffs, "tm_write" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
771 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
772 case TMFFS_READ: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
773 fdi = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
774 size = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
775 size = ffs_read(fdi, &buffer[0], size); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
776 error = tmffs_putdata(&outp, &buffer[0], size); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
777 tw(tr(TR_FUNC, TrTmffs, "TMFFS_READ(%d, %d)\n", fdi, size)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
778 ttw(ttr(TTrTmffs, "tm_read" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
779 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
780 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
781 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
782 case TMFFS_MKDIR: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
783 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
784 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
785 error = ffs_mkdir(string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
786 tw(tr(TR_FUNC, TrTmffs, "TMFFS_MKDIR()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
787 ttw(ttr(TTrTmffs, "tm_mkd" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
788 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
789 case TMFFS_OPENDIR: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
790 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
791 if (error >= 0) { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
792 error = ffs_opendir(string, (struct dir_s *) buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
793 tmffs_put8(error); // Note: we must put error/number of objects. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
794 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
795 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
796 tmffs_putdata(&outp, buffer, sizeof(struct dir_s)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
797 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
798 tw(tr(TR_FUNC, TrTmffs, "TMFFS_OPENDIR()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
799 ttw(ttr(TTrTmffs, "tm_od" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
800 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
801 case TMFFS_READDIR: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
802 tmffs_getdata(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
803 stringsize = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
804 error = ffs_readdir((struct dir_s *) buffer, string, stringsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
805 tmffs_put8(error); // Note: we have to return bytes read. |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
806 if (error >= 0) { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
807 tmffs_putdata(&outp, buffer, sizeof(struct dir_s)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
808 stringsize = strlen(string) + 1; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
809 tmffs_putstring(&outp, string, stringsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
810 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
811 tw(tr(TR_FUNC, TrTmffs, "TMFFS_READDIR()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
812 ttw(ttr(TTrTmffs, "tm_rdd" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
813 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
814 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
815 case TMFFS_STAT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
816 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
817 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
818 error = ffs_stat(string, (struct stat_s *) buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
819 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
820 tmffs_putdata(&outp, buffer, sizeof(struct stat_s)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
821 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
822 tw(tr(TR_FUNC, TrTmffs, "TMFFS_STAT()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
823 ttw(ttr(TTrTmffs, "tm_st" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
824 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
825 case TMFFS_XLSTAT: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
826 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
827 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
828 error = ffs_xlstat(&string[0], (struct xstat_s *) buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
829 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
830 tmffs_putdata(&outp, buffer, sizeof(struct xstat_s)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
831 tw(tr(TR_FUNC, TrTmffs, "TMFFS_()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
832 ttw(ttr(TTrTmffs, "tm_xlst" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
833 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
834 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
835 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
836 case TMFFS_SYMLINK: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
837 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
838 tmffs_getdata(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
839 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
840 error = ffs_symlink(string, (char *) buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
841 tw(tr(TR_FUNC, TrTmffs, "TMFFS_SYMLINK()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
842 ttw(ttr(TTrTmffs, "tm_sym" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
843 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
844 case TMFFS_READLINK: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
845 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
846 tmffs_getdata(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
847 if (error >= 0) { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
848 size = ffs_readlink(string, (char *) buffer, TMFFS_BUFFER_SIZE); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
849 error = tmffs_putdata(&outp, buffer, size); // put link contents |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
850 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
851 tw(tr(TR_FUNC, TrTmffs, "TMFFS_READLINK()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
852 ttw(ttr(TTrTmffs, "tm_rdl" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
853 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
854 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
855 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
856 case TMFFS_QUERY: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
857 param = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
858 error = ffs_query(param, buffer); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
859 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
860 tmffs_putdata(&outp, buffer, 16); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
861 tw(tr(TR_FUNC, TrTmffs, "TMFFS_QUERY(%d)\n", param)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
862 ttw(ttr(TTrTmffs, "tm_q" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
863 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
864 case TMFFS_FCONTROL: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
865 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
866 type = tmffs_get8(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
867 param = tmffs_get32(); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
868 if (error >= 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
869 error = ffs_fcontrol(string, type, param); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
870 tw(tr(TR_FUNC, TrTmffs, "TMFFS_FCONTROL()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
871 ttw(ttr(TTrTmffs, "tm_fc" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
872 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
873 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
874 case TMFFS_TFFS: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
875 { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
876 #if (WITH_TFFS == 1) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
877 extern char ffs_test_string[]; // defined in task.c |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
878 error = tmffs_getstring(&inp, string); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
879 memcpy(ffs_test_string, string, stringsize); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
880 tw(tr(TR_FUNC, TrTmffs, "TMFFS_TFFS()\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
881 ttw(ttr(TTrTmffs, "tm_tffs" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
882 tmffs_put8(EFFS_OK); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
883 #else |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
884 tmffs_put8(EFFS_NOSYS); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
885 #endif |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
886 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
887 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
888 default: |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
889 error = EFFS_NOSYS; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
890 tmffs_put8(EFFS_NOSYS); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
891 tw(tr(TR_FUNC, TrTmffs, "ERROR: Unknown tmffs protocol code\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
892 ttw(ttr(TTrTmffs, "tm?" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
893 break; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
894 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
895 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
896 // check if we read beyond buffer end |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
897 if (inp > inp_start + insize) { |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
898 tw(tr(TR_FUNC, TrTmffs, "ERROR: Read beyond end of input buffer\n")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
899 ttw(ttr(TTrTmffs, "tm_fatal" NL)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
900 ttw(ttr(TTrTmffs, "insize: %d, diff: %d" NL, insize, |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
901 inp - (inp_start + insize))); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
902 // NOTEME: We really should reset output buffer and put a return |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
903 // code that tells us what went wrong! |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
904 error = ETM_PACKET; // FIXME find another error |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
905 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
906 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
907 ttw(ttr(TTrTmffs, "error %d" NL, error)); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
908 if (error > 0) |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
909 error = 0; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
910 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
911 pkt->mid = ETM_FFS2; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
912 pkt->size = outp - outp_start; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
913 pkt->status = -error; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
914 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
915 etm_pkt_send(pkt); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
916 etm_free(pkt); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
917 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
918 tw(tr(TR_END, TrTmffs, "")); |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
919 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
920 return ETM_OK; |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
921 } |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
922 |
842c9fd828fd
gsm-fw: TMFFS integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
923 #endif // TMFFS2 |