Subversion Repositories svnkaklik

Rev

Rev 410 | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
484 kaklik 1
GAS LISTING /tmp/ccs6Vjbf.s 			page 1
151 kaklik 2
 
3
 
4
   1               		.file	"UIMgr.c"
484 kaklik 5
   2               	__SREG__ = 0x3f
6
   3               	__SP_H__ = 0x3e
7
   4               	__SP_L__ = 0x3d
8
   5               	__tmp_reg__ = 0
9
   6               	__zero_reg__ = 1
10
   7               		.global __do_copy_data
11
   8               		.global __do_clear_bss
12
   9               		.stabs	"/home/kaklik/projects/programy/C/avr/AVRcam/",100,0,2,.Ltext0
13
  10               		.stabs	"UIMgr.c",100,0,2,.Ltext0
14
  11               		.text
15
  12               	.Ltext0:
16
  13               		.stabs	"gcc2_compiled.",60,0,0,0
17
  14               		.stabs	"int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
18
  15               		.stabs	"char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
19
  16               		.stabs	"long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
20
  17               		.stabs	"unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
21
  18               		.stabs	"long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
22
  19               		.stabs	"long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
23
  20               		.stabs	"long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
24
  21               		.stabs	"short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
25
  22               		.stabs	"short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
26
  23               		.stabs	"signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
27
  24               		.stabs	"unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
28
  25               		.stabs	"float:t(0,12)=r(0,1);4;0;",128,0,0,0
29
  26               		.stabs	"double:t(0,13)=r(0,1);4;0;",128,0,0,0
30
  27               		.stabs	"long double:t(0,14)=r(0,1);4;0;",128,0,0,0
31
  28               		.stabs	"void:t(0,15)=(0,15)",128,0,0,0
32
  29               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/io.h",130,0,0,0
33
  30               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
34
  31               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/inttypes.h",130,0,0,0
35
  32               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdint.h",130,0,0,0
36
  33               		.stabs	"int8_t:t(4,1)=(0,10)",128,0,116,0
37
  34               		.stabs	"uint8_t:t(4,2)=(0,11)",128,0,117,0
38
  35               		.stabs	"int16_t:t(4,3)=(0,1)",128,0,118,0
39
  36               		.stabs	"uint16_t:t(4,4)=(0,4)",128,0,119,0
40
  37               		.stabs	"int32_t:t(4,5)=(0,3)",128,0,120,0
41
  38               		.stabs	"uint32_t:t(4,6)=(0,5)",128,0,121,0
42
  39               		.stabs	"int64_t:t(4,7)=(0,6)",128,0,122,0
43
  40               		.stabs	"uint64_t:t(4,8)=(0,7)",128,0,123,0
44
  41               		.stabs	"intptr_t:t(4,9)=(4,3)",128,0,135,0
45
  42               		.stabs	"uintptr_t:t(4,10)=(4,4)",128,0,140,0
46
  43               		.stabs	"int_least8_t:t(4,11)=(4,1)",128,0,152,0
47
  44               		.stabs	"uint_least8_t:t(4,12)=(4,2)",128,0,157,0
48
  45               		.stabs	"int_least16_t:t(4,13)=(4,3)",128,0,162,0
49
  46               		.stabs	"uint_least16_t:t(4,14)=(4,4)",128,0,167,0
50
  47               		.stabs	"int_least32_t:t(4,15)=(4,5)",128,0,172,0
51
  48               		.stabs	"uint_least32_t:t(4,16)=(4,6)",128,0,177,0
52
  49               		.stabs	"int_least64_t:t(4,17)=(4,7)",128,0,182,0
53
  50               		.stabs	"uint_least64_t:t(4,18)=(4,8)",128,0,187,0
54
  51               		.stabs	"int_fast8_t:t(4,19)=(4,1)",128,0,200,0
55
  52               		.stabs	"uint_fast8_t:t(4,20)=(4,2)",128,0,205,0
56
  53               		.stabs	"int_fast16_t:t(4,21)=(4,3)",128,0,210,0
57
  54               		.stabs	"uint_fast16_t:t(4,22)=(4,4)",128,0,215,0
58
  55               		.stabs	"int_fast32_t:t(4,23)=(4,5)",128,0,220,0
59
  56               		.stabs	"uint_fast32_t:t(4,24)=(4,6)",128,0,225,0
60
  57               		.stabs	"int_fast64_t:t(4,25)=(4,7)",128,0,230,0
61
GAS LISTING /tmp/ccs6Vjbf.s 			page 2
151 kaklik 62
 
63
 
484 kaklik 64
  58               		.stabs	"uint_fast64_t:t(4,26)=(4,8)",128,0,235,0
65
  59               		.stabs	"intmax_t:t(4,27)=(4,7)",128,0,249,0
66
  60               		.stabs	"uintmax_t:t(4,28)=(4,8)",128,0,254,0
67
  61               		.stabn	162,0,0,0
68
  62               		.stabs	"int_farptr_t:t(3,1)=(4,5)",128,0,76,0
69
  63               		.stabs	"uint_farptr_t:t(3,2)=(4,6)",128,0,80,0
70
  64               		.stabn	162,0,0,0
151 kaklik 71
  65               		.stabn	162,0,0,0
72
  66               		.stabn	162,0,0,0
484 kaklik 73
  67               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdlib.h",130,0,0,0
74
  68               		.stabs	"/usr/lib/gcc/avr/4.2.1/include/stddef.h",130,0,0,0
75
  69               		.stabs	"size_t:t(6,1)=(0,4)",128,0,214,0
76
  70               		.stabs	"wchar_t:t(6,2)=(0,1)",128,0,326,0
77
  71               		.stabn	162,0,0,0
78
  72               		.stabs	"div_t:t(5,1)=(5,2)=s4quot:(0,1),0,16;rem:(0,1),16,16;;",128,0,69,0
79
  73               		.stabs	"ldiv_t:t(5,3)=(5,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;",128,0,75,0
80
  74               		.stabs	"__compar_fn_t:t(5,5)=(5,6)=*(5,7)=f(0,1)",128,0,78,0
81
  75               		.stabn	162,0,0,0
82
  76               		.stabs	"CommonDefs.h",130,0,0,0
83
  77               		.stabs	"bool_t:t(7,1)=(0,11)",128,0,56,0
84
  78               		.stabn	162,0,0,0
85
  79               		.stabs	"CamConfig.h",130,0,0,0
86
  80               		.stabs	"I2CInterface.h",130,0,0,0
87
  81               		.stabs	"i2cCmd_t:t(9,1)=(9,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0
88
  82               		.stabn	162,0,0,0
151 kaklik 89
  83               		.stabn	162,0,0,0
484 kaklik 90
  84               		.stabs	" :T(0,16)=@s8;egetVersionCmd:0,pingCmd:1,setCameraRegsCmd:2,dumpFrameCmd:3,enableTrackingC
91
  85               		.stabs	"UIMgr_Cmd_t:t(0,17)=(0,16)",128,0,81,0
92
  86               		.stabs	" :T(0,18)=@s8;esetRed:0,setGreen:1,setBlue:2,;",128,0,0,0
93
  87               		.stabs	"setColorState_t:t(0,19)=(0,18)",128,0,88,0
94
  88               		.stabs	"UIMgr_writeBufferToTxFifo:F(0,15)",36,0,547,UIMgr_writeBufferToTxFifo
95
  89               		.stabs	"pData:P(0,20)=*(0,11)",64,0,546,26
96
  90               		.stabs	"length:P(0,11)",64,0,546,22
97
  91               	.global	UIMgr_writeBufferToTxFifo
98
  92               		.type	UIMgr_writeBufferToTxFifo, @function
99
  93               	UIMgr_writeBufferToTxFifo:
100
  94               		.stabd	46,0,0
151 kaklik 101
   1:UIMgr.c       **** /*
102
   2:UIMgr.c       ****     Copyright (C) 2004    John Orlando
103
   3:UIMgr.c       ****     
104
   4:UIMgr.c       ****    AVRcam: a small real-time image processing engine.
105
   5:UIMgr.c       **** 
106
   6:UIMgr.c       ****     This program is free software; you can redistribute it and/or
107
   7:UIMgr.c       ****     modify it under the terms of the GNU General Public
108
   8:UIMgr.c       ****     License as published by the Free Software Foundation; either
109
   9:UIMgr.c       ****     version 2 of the License, or (at your option) any later version.
110
  10:UIMgr.c       **** 
111
  11:UIMgr.c       ****     This program is distributed in the hope that it will be useful,
112
  12:UIMgr.c       ****     but WITHOUT ANY WARRANTY; without even the implied warranty of
113
  13:UIMgr.c       ****     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
114
  14:UIMgr.c       ****     General Public License for more details.
115
  15:UIMgr.c       **** 
116
  16:UIMgr.c       ****     You should have received a copy of the GNU General Public
117
  17:UIMgr.c       ****     License along with this program; if not, write to the Free Software
118
  18:UIMgr.c       ****     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
119
  19:UIMgr.c       **** 
484 kaklik 120
  20:UIMgr.c       ****    For more information on the AVRcam, please contact:
121
GAS LISTING /tmp/ccs6Vjbf.s 			page 3
151 kaklik 122
 
123
 
124
  21:UIMgr.c       **** 
125
  22:UIMgr.c       ****    john@jrobot.net
126
  23:UIMgr.c       **** 
127
  24:UIMgr.c       ****    or go to www.jrobot.net for more details regarding the system.
128
  25:UIMgr.c       **** */
129
  26:UIMgr.c       **** /***********************************************************
130
  27:UIMgr.c       **** 	Module Name: UIMgr.c
131
  28:UIMgr.c       **** 	Module Date: 04/10/2004
132
  29:UIMgr.c       **** 	Module Auth: John Orlando
133
  30:UIMgr.c       **** 	
134
  31:UIMgr.c       **** 	Description: This module is responsible for providing
135
  32:UIMgr.c       **** 	the processing to manage the user interface of the
136
  33:UIMgr.c       **** 	system.  This user interface is provided via the UART.
137
  34:UIMgr.c       **** 	This module handles the incoming serial commands, and
138
  35:UIMgr.c       **** 	performs the needed functionality.  It is then
139
  36:UIMgr.c       **** 	responsible for generating any needed response to
140
  37:UIMgr.c       **** 	the external entity.
141
  38:UIMgr.c       ****     
142
  39:UIMgr.c       ****     Revision History:
143
  40:UIMgr.c       ****     Date        Rel Ver.    Notes
144
  41:UIMgr.c       ****     4/10/2004      0.1     Module created
145
  42:UIMgr.c       ****     6/30/2004      1.0     Initial release for Circuit Cellar
146
  43:UIMgr.c       ****                            contest.
147
  44:UIMgr.c       ****     11/15/2004     1.2     Updated version string to 1.2.
148
  45:UIMgr.c       ****     1/16/2005      1.4     Added code to write the colorMap
149
  46:UIMgr.c       ****                            to EEPROM one byte at a time, 
150
  47:UIMgr.c       ****                            ensuring that the EEPROM is only
151
  48:UIMgr.c       ****                            written when the data is different
152
  49:UIMgr.c       ****                            than the current value (thus saving
153
  50:UIMgr.c       ****                            EEPROM writes).  Updated version
154
  51:UIMgr.c       ****                            string to 1.4.
155
  52:UIMgr.c       **** ***********************************************************/
156
  53:UIMgr.c       **** 
157
  54:UIMgr.c       **** /*	Includes */
158
  55:UIMgr.c       **** #include <avr/io.h>
159
  56:UIMgr.c       **** #include <stdlib.h>
160
  57:UIMgr.c       **** #include <string.h>
161
  58:UIMgr.c       **** #include <avr/eeprom.h>
162
  59:UIMgr.c       **** #include "CommonDefs.h"
163
  60:UIMgr.c       **** #include "UIMgr.h"
164
  61:UIMgr.c       **** #include "UartInterface.h"
165
  62:UIMgr.c       **** #include "CamConfig.h"
166
  63:UIMgr.c       **** #include "Utility.h"
167
  64:UIMgr.c       **** #include "Executive.h"
168
  65:UIMgr.c       **** #include "CamInterface.h"
169
  66:UIMgr.c       **** 
170
  67:UIMgr.c       **** /* 	Local Structures and Typedefs */
171
  68:UIMgr.c       **** 
172
  69:UIMgr.c       **** typedef enum
173
  70:UIMgr.c       **** {
174
  71:UIMgr.c       **** 	getVersionCmd,
175
  72:UIMgr.c       **** 	pingCmd,
176
  73:UIMgr.c       **** 	setCameraRegsCmd,
177
  74:UIMgr.c       **** 	dumpFrameCmd,
178
  75:UIMgr.c       **** 	enableTrackingCmd,
179
  76:UIMgr.c       **** 	disableTrackingCmd,
484 kaklik 180
  77:UIMgr.c       **** 	setColorMapCmd,
181
GAS LISTING /tmp/ccs6Vjbf.s 			page 4
151 kaklik 182
 
183
 
184
  78:UIMgr.c       **** 	resetCameraCmd,
185
  79:UIMgr.c       **** 	noCmd,
186
  80:UIMgr.c       **** 	invalidCmd
187
  81:UIMgr.c       **** } UIMgr_Cmd_t;
188
  82:UIMgr.c       **** 
189
  83:UIMgr.c       **** typedef enum
190
  84:UIMgr.c       **** {
191
  85:UIMgr.c       **** 	setRed,
192
  86:UIMgr.c       **** 	setGreen,
193
  87:UIMgr.c       **** 	setBlue
194
  88:UIMgr.c       **** } setColorState_t;
195
  89:UIMgr.c       **** 	
196
  90:UIMgr.c       **** 
197
  91:UIMgr.c       **** /*  Local Variables */
198
  92:UIMgr.c       **** static unsigned char charCount = 0; 
199
  93:UIMgr.c       **** static unsigned char charIndex = 0;
200
  94:UIMgr.c       **** static unsigned char asciiTokenBuffer[MAX_TOKEN_LENGTH+1]; /* +1 to ensure NULL at end */
201
  95:UIMgr.c       **** static unsigned char tokenCount = 0;
202
  96:UIMgr.c       **** static unsigned char tokenBuffer[MAX_TOKEN_COUNT];
203
  97:UIMgr.c       **** static UIMgr_Cmd_t receivedCmd = noCmd;
204
  98:UIMgr.c       **** static unsigned char AVRcamVersion[] = "AVRcam v1.4\r";
205
  99:UIMgr.c       **** 
206
 100:UIMgr.c       **** /*  Local Function Declaration */
207
 101:UIMgr.c       **** static unsigned char UIMgr_readRxFifo(void);
208
 102:UIMgr.c       **** static unsigned char UIMgr_readTxFifo(void);
209
 103:UIMgr.c       **** static unsigned char UIMgr_readRxFifo(void);
210
 104:UIMgr.c       **** static void UIMgr_sendNck(void);
211
 105:UIMgr.c       **** static void UIMgr_sendAck(void);
212
 106:UIMgr.c       **** static void UIMgr_convertTokenToCmd(void);
213
 107:UIMgr.c       **** static void UIMgr_convertTokenToValue(void);
214
 108:UIMgr.c       **** static void UIMgr_executeCmd(void);
215
 109:UIMgr.c       **** 
216
 110:UIMgr.c       **** /*  Extern Variables */
217
 111:UIMgr.c       **** unsigned char UIMgr_rxFifo[UI_MGR_RX_FIFO_SIZE];
218
 112:UIMgr.c       **** unsigned char UIMgr_rxFifoHead=0;
219
 113:UIMgr.c       **** unsigned char UIMgr_rxFifoTail=0;
220
 114:UIMgr.c       **** 
221
 115:UIMgr.c       **** unsigned char UIMgr_txFifo[UI_MGR_TX_FIFO_SIZE];
222
 116:UIMgr.c       **** unsigned char UIMgr_txFifoHead=0;
223
 117:UIMgr.c       **** unsigned char UIMgr_txFifoTail=0;
224
 118:UIMgr.c       **** 
225
 119:UIMgr.c       **** /*  Definitions */
226
 120:UIMgr.c       **** #define IS_DATA_IN_TX_FIFO() (!(UIMgr_txFifoHead == UIMgr_txFifoTail))
227
 121:UIMgr.c       **** #define IS_DATA_IN_RX_FIFO() (!(UIMgr_rxFifoHead == UIMgr_rxFifoTail))
228
 122:UIMgr.c       **** 
229
 123:UIMgr.c       **** /* MAX_EEPROM_WRITE_ATTEMPTS limits the number of writes that can be
230
 124:UIMgr.c       **** done to a particular EEPROM cell, so that it can't possible just 
231
 125:UIMgr.c       **** write to the same cell over and over */
232
 126:UIMgr.c       **** #define MAX_EEPROM_WRITE_ATTEMPTS 3
233
 127:UIMgr.c       **** 
234
 128:UIMgr.c       **** /***********************************************************
235
 129:UIMgr.c       **** 	Function Name: UIMgr_init
236
 130:UIMgr.c       **** 	Function Description: This function is responsible for
237
 131:UIMgr.c       **** 	initializing the UIMgr module.  It sets up the fifo
238
 132:UIMgr.c       **** 	used to hold incoming data, etc.
239
 133:UIMgr.c       **** 	Inputs:  none 
484 kaklik 240
 134:UIMgr.c       **** 	Outputs: none
241
GAS LISTING /tmp/ccs6Vjbf.s 			page 5
151 kaklik 242
 
243
 
244
 135:UIMgr.c       **** ***********************************************************/	
245
 136:UIMgr.c       **** void UIMgr_init(void)
246
 137:UIMgr.c       **** {
247
 138:UIMgr.c       **** 	memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH+1);
248
 139:UIMgr.c       **** 	memset(tokenBuffer,0x00,MAX_TOKEN_COUNT);
249
 140:UIMgr.c       **** 	memset(UIMgr_txFifo,0x00,UI_MGR_TX_FIFO_SIZE);
250
 141:UIMgr.c       **** 	memset(UIMgr_rxFifo,0x00,UI_MGR_RX_FIFO_SIZE);
251
 142:UIMgr.c       **** }
252
 143:UIMgr.c       **** 
253
 144:UIMgr.c       **** /***********************************************************
254
 145:UIMgr.c       **** 	Function Name: UIMgr_dispatchEvent
255
 146:UIMgr.c       **** 	Function Description: This function is responsible for
256
 147:UIMgr.c       **** 	processing events that pertain to the UIMgr.
257
 148:UIMgr.c       **** 	Inputs:  event - the generated event
258
 149:UIMgr.c       **** 	Outputs: none
259
 150:UIMgr.c       **** ***********************************************************/	
260
 151:UIMgr.c       **** void UIMgr_dispatchEvent(unsigned char event)
261
 152:UIMgr.c       **** {
262
 153:UIMgr.c       **** 	switch(event)
263
 154:UIMgr.c       **** 	{
264
 155:UIMgr.c       **** 		case EV_ACQUIRE_LINE_COMPLETE:
265
 156:UIMgr.c       **** 			UIMgr_transmitPendingData();
266
 157:UIMgr.c       **** 			break;
267
 158:UIMgr.c       **** 			
268
 159:UIMgr.c       **** 		case EV_SERIAL_DATA_RECEIVED:		
269
 160:UIMgr.c       **** 			UIMgr_processReceivedData();
270
 161:UIMgr.c       **** 			break;
271
 162:UIMgr.c       **** 			
272
 163:UIMgr.c       **** 		case EV_SERIAL_DATA_PENDING_TX:
273
 164:UIMgr.c       **** 			UIMgr_flushTxBuffer();
274
 165:UIMgr.c       **** 			break;
275
 166:UIMgr.c       **** 	}
276
 167:UIMgr.c       **** }
277
 168:UIMgr.c       **** /***********************************************************
278
 169:UIMgr.c       **** 	Function Name: UIMgr_transmitPendingData
279
 170:UIMgr.c       **** 	Function Description: This function is responsible for
280
 171:UIMgr.c       **** 	transmitting a single byte of data if data is waiting
281
 172:UIMgr.c       **** 	to be sent.  Otherwise, if nothing is waiting, the
282
 173:UIMgr.c       **** 	function just returns.
283
 174:UIMgr.c       **** 	Inputs:  none 
284
 175:UIMgr.c       **** 	Outputs: none
285
 176:UIMgr.c       **** ***********************************************************/
286
 177:UIMgr.c       **** void UIMgr_transmitPendingData(void)
287
 178:UIMgr.c       **** {
288
 179:UIMgr.c       **** 	if (IS_DATA_IN_TX_FIFO() == TRUE)
289
 180:UIMgr.c       **** 	{
290
 181:UIMgr.c       **** 		/* data is waiting...send a single byte */
291
 182:UIMgr.c       **** 		UartInt_txByte( UIMgr_readTxFifo() );
292
 183:UIMgr.c       **** 	}
293
 184:UIMgr.c       **** }
294
 185:UIMgr.c       **** /***********************************************************
295
 186:UIMgr.c       **** 	Function Name: UIMgr_processReceivedData
296
 187:UIMgr.c       **** 	Function Description: This function is responsible for
297
 188:UIMgr.c       **** 	parsing any serial data waiting in the rx fifo
298
 189:UIMgr.c       **** 	Inputs:  none 
299
 190:UIMgr.c       **** 	Outputs: none
484 kaklik 300
 191:UIMgr.c       **** ***********************************************************/
301
GAS LISTING /tmp/ccs6Vjbf.s 			page 6
151 kaklik 302
 
303
 
304
 192:UIMgr.c       **** void UIMgr_processReceivedData(void)
305
 193:UIMgr.c       **** {
306
 194:UIMgr.c       **** 	unsigned char tmpData = 0;
307
 195:UIMgr.c       **** 
308
 196:UIMgr.c       **** 	/* still need to add a mechanism to handle token counts 
309
 197:UIMgr.c       **** 	that are excessive!!! FIX ME!!! */
310
 198:UIMgr.c       ****     
311
 199:UIMgr.c       **** 	while(IS_DATA_IN_RX_FIFO() == TRUE)
312
 200:UIMgr.c       **** 	{
313
 201:UIMgr.c       **** 		tmpData = UIMgr_readRxFifo();
314
 202:UIMgr.c       **** 		if (tmpData == '\r') 
315
 203:UIMgr.c       **** 		{
316
 204:UIMgr.c       **** 			/* we have reached a token separator */
317
 205:UIMgr.c       **** 			if (tokenCount == 0)
318
 206:UIMgr.c       **** 			{
319
 207:UIMgr.c       **** 				/* convert the command */
320
 208:UIMgr.c       **** 				UIMgr_convertTokenToCmd();				
321
 209:UIMgr.c       **** 			}
322
 210:UIMgr.c       **** 			else
323
 211:UIMgr.c       **** 			{
324
 212:UIMgr.c       **** 				/* convert a value */
325
 213:UIMgr.c       **** 				UIMgr_convertTokenToValue();
326
 214:UIMgr.c       **** 				tokenCount++;
327
 215:UIMgr.c       **** 			}
328
 216:UIMgr.c       **** 			/* either way, it is time to try to process the received
329
 217:UIMgr.c       **** 			token list since we have reached the end of the cmd. */
330
 218:UIMgr.c       **** 			Utility_delay(100);
331
 219:UIMgr.c       **** 			if (receivedCmd == invalidCmd ||
332
 220:UIMgr.c       **** 			     receivedCmd == noCmd )
333
 221:UIMgr.c       **** 			{
334
 222:UIMgr.c       **** 				UIMgr_sendNck();
335
 223:UIMgr.c       **** 				PUBLISH_EVENT(EV_SERIAL_DATA_PENDING_TX);
336
 224:UIMgr.c       **** 			}
337
 225:UIMgr.c       **** 			else
338
 226:UIMgr.c       **** 			{
339
 227:UIMgr.c       **** 				UIMgr_sendAck();
340
 228:UIMgr.c       **** 				/* publish the serial data pending event, so it
341
 229:UIMgr.c       **** 				will push the ACK out before we execute the cmd */
342
 230:UIMgr.c       **** 				PUBLISH_EVENT(EV_SERIAL_DATA_PENDING_TX);
343
 231:UIMgr.c       **** 				UIMgr_executeCmd();
344
 232:UIMgr.c       **** 			}
345
 233:UIMgr.c       **** 			
346
 234:UIMgr.c       **** 			/* reset any necessary data */
347
 235:UIMgr.c       **** 			tokenCount = 0;
348
 236:UIMgr.c       **** 			memset(tokenBuffer,0x00,MAX_TOKEN_COUNT);
349
 237:UIMgr.c       **** 		}
350
 238:UIMgr.c       **** 		else if (tmpData == ' ')  /* space char */
351
 239:UIMgr.c       **** 		{
352
 240:UIMgr.c       **** 			/* the end of a token has been reached */
353
 241:UIMgr.c       **** 			if (tokenCount == 0)
354
 242:UIMgr.c       **** 			{
355
 243:UIMgr.c       **** 				UIMgr_convertTokenToCmd();
356
 244:UIMgr.c       **** 				tokenCount++;   /* check this...why is this being incremented here??? This
357
 245:UIMgr.c       ****                 means we have received a token, with tokenCount == 0, which means it is a
358
 246:UIMgr.c       ****                 command...why is this contributing to tokenCount?
359
 247:UIMgr.c       ****                 This might cause the set color map command to include too much data, since
484 kaklik 360
 248:UIMgr.c       ****                 it sets the color map based on tokenCount...CHECK*/
361
GAS LISTING /tmp/ccs6Vjbf.s 			page 7
151 kaklik 362
 
363
 
364
 249:UIMgr.c       **** 			}
365
 250:UIMgr.c       **** 			else
366
 251:UIMgr.c       **** 			{
367
 252:UIMgr.c       **** 				/* check to see if this token is going to push
368
 253:UIMgr.c       **** 				us over the limit...if so, abort the transaction */
369
 254:UIMgr.c       **** 				if (tokenCount+1 >= MAX_TOKEN_COUNT)
370
 255:UIMgr.c       **** 				{
371
 256:UIMgr.c       **** 					/* we received too many tokens, and 
372
 257:UIMgr.c       **** 					need to NCK this request, since its too
373
 258:UIMgr.c       **** 					large...reset everything...*/
374
 259:UIMgr.c       **** 					charCount=0;
375
 260:UIMgr.c       **** 					charIndex=0;
376
 261:UIMgr.c       **** 					tokenCount=0;
377
 262:UIMgr.c       **** 					receivedCmd = invalidCmd;
378
 263:UIMgr.c       **** 				}
379
 264:UIMgr.c       **** 				else
380
 265:UIMgr.c       **** 				{
381
 266:UIMgr.c       **** 					/* tokenCount is still in range...*/
382
 267:UIMgr.c       **** 					UIMgr_convertTokenToValue();
383
 268:UIMgr.c       **** 					tokenCount++;
384
 269:UIMgr.c       **** 				}
385
 270:UIMgr.c       **** 			}
386
 271:UIMgr.c       **** 		}
387
 272:UIMgr.c       **** 		else if ( (tmpData >= 'A' && tmpData <= 'Z') ||
388
 273:UIMgr.c       **** 				   (tmpData >= '0' && tmpData <= '9') )
389
 274:UIMgr.c       **** 		{
390
 275:UIMgr.c       **** 			/* a valid range of token was received */
391
 276:UIMgr.c       **** 			asciiTokenBuffer[charIndex] = tmpData;
392
 277:UIMgr.c       **** 			charCount++;
393
 278:UIMgr.c       **** 			charIndex++;
394
 279:UIMgr.c       **** 			if (charCount > MAX_TOKEN_LENGTH)
395
 280:UIMgr.c       **** 			{
396
 281:UIMgr.c       **** 				/* we have received a token that cannot be handled...
397
 282:UIMgr.c       **** 				set the received cmd to an invalid cmd, and wait
398
 283:UIMgr.c       **** 				for the \r to process it */
399
 284:UIMgr.c       **** 				receivedCmd = invalidCmd;
400
 285:UIMgr.c       **** 				charIndex = 0;  /* ...so we won't overwrite memory */
401
 286:UIMgr.c       **** 			}
402
 287:UIMgr.c       **** 		}
403
 288:UIMgr.c       **** 		else
404
 289:UIMgr.c       **** 		{
405
 290:UIMgr.c       **** 			/* an invalid character was received */
406
 291:UIMgr.c       **** 			receivedCmd = invalidCmd;
407
 292:UIMgr.c       **** 		}
408
 293:UIMgr.c       **** 	}  /* end while */
409
 294:UIMgr.c       **** 	
410
 295:UIMgr.c       **** 	asm volatile("clt"::);  /* clear out the T flag in case it wasn't
411
 296:UIMgr.c       **** 								 cleared already */
412
 297:UIMgr.c       **** }						
413
 298:UIMgr.c       **** 
414
 299:UIMgr.c       **** /***********************************************************
415
 300:UIMgr.c       **** 	Function Name: UIMgr_executeCmd
416
 301:UIMgr.c       **** 	Function Description: This function is responsible for
417
 302:UIMgr.c       **** 	executing whatever cmd is stored in the receivedCmd
418
 303:UIMgr.c       **** 	object.
419
 304:UIMgr.c       **** 	Inputs:  none 
484 kaklik 420
 305:UIMgr.c       **** 	Outputs: none
421
GAS LISTING /tmp/ccs6Vjbf.s 			page 8
151 kaklik 422
 
423
 
424
 306:UIMgr.c       **** ***********************************************************/
425
 307:UIMgr.c       **** static void UIMgr_executeCmd(void)
426
 308:UIMgr.c       **** {
427
 309:UIMgr.c       **** 	unsigned char i,eepromData, num_writes=0;
428
 310:UIMgr.c       **** 	unsigned char *pData;
429
 311:UIMgr.c       ****     unsigned char eeprom_write_succeeded = FALSE;
430
 312:UIMgr.c       **** #if	DEBUG_COLOR_MAP	
431
 313:UIMgr.c       **** 	unsigned char asciiBuffer[5];
432
 314:UIMgr.c       **** #endif
433
 315:UIMgr.c       **** 
434
 316:UIMgr.c       **** 	if (receivedCmd == pingCmd) 
435
 317:UIMgr.c       **** 	{
436
 318:UIMgr.c       **** 	}
437
 319:UIMgr.c       **** 	else if (receivedCmd == getVersionCmd)
438
 320:UIMgr.c       **** 	{
439
 321:UIMgr.c       **** 		pData = AVRcamVersion;
440
 322:UIMgr.c       **** 		while(*pData != 0)
441
 323:UIMgr.c       **** 		{		
442
 324:UIMgr.c       **** 			UIMgr_writeTxFifo(*pData++);
443
 325:UIMgr.c       **** 		}
444
 326:UIMgr.c       **** 	}		
445
 327:UIMgr.c       **** 	else if (receivedCmd == resetCameraCmd)
446
 328:UIMgr.c       **** 	{
447
 329:UIMgr.c       **** 		CamInt_resetCam();
448
 330:UIMgr.c       **** 	}
449
 331:UIMgr.c       **** 	else if (receivedCmd == dumpFrameCmd)
450
 332:UIMgr.c       **** 	{
451
 333:UIMgr.c       **** 		/* publish the event that will indicate that
452
 334:UIMgr.c       **** 		a request has come to dump a frame...this will
453
 335:UIMgr.c       **** 		be received by the FrameMgr, which will begin
454
 336:UIMgr.c       **** 		dumping the frame...a short delay is needed
455
 337:UIMgr.c       **** 		here to keep the Java demo app happy (sometimes
456
 338:UIMgr.c       **** 		it wouldn't be able to receive the serial data
457
 339:UIMgr.c       **** 		as quickly as AVRcam can provide it). */
458
 340:UIMgr.c       **** 		Utility_delay(100);
459
 341:UIMgr.c       **** 		PUBLISH_EVENT(EV_DUMP_FRAME);
460
 342:UIMgr.c       **** 	}
461
 343:UIMgr.c       **** 	else if (receivedCmd == setCameraRegsCmd)
462
 344:UIMgr.c       **** 	{
463
 345:UIMgr.c       **** 		/* we need to gather the tokens and
464
 346:UIMgr.c       **** 		build config cmds to be sent to the camera */
465
 347:UIMgr.c       **** 		for (i=1; i<tokenCount; i+=2)  /* starts at 1 since first token
466
 348:UIMgr.c       **** 											is the CR cmd */
467
 349:UIMgr.c       **** 		{
468
 350:UIMgr.c       **** 			CamConfig_setCamReg(tokenBuffer[i],tokenBuffer[i+1]);
469
 351:UIMgr.c       **** 		}
470
 352:UIMgr.c       **** 		CamConfig_sendFifoCmds();
471
 353:UIMgr.c       **** 	}
472
 354:UIMgr.c       **** 	else if (receivedCmd == enableTrackingCmd)
473
 355:UIMgr.c       **** 	{
474
 356:UIMgr.c       **** 		/* publish the event...again with a short delay */
475
 357:UIMgr.c       **** 		Utility_delay(100);
476
 358:UIMgr.c       **** 		PUBLISH_EVENT(EV_ENABLE_TRACKING);
477
 359:UIMgr.c       **** 	}
478
 360:UIMgr.c       **** 	else if (receivedCmd == disableTrackingCmd)
479
 361:UIMgr.c       **** 	{
484 kaklik 480
 362:UIMgr.c       **** 		PUBLISH_EVENT(EV_DISABLE_TRACKING);
481
GAS LISTING /tmp/ccs6Vjbf.s 			page 9
151 kaklik 482
 
483
 
484
 363:UIMgr.c       **** 	}
485
 364:UIMgr.c       **** 	else if (receivedCmd == setColorMapCmd)
486
 365:UIMgr.c       **** 	{
487
 366:UIMgr.c       **** 		/* copy the received tokens into the color map */
488
 367:UIMgr.c       **** 		for (i=0; i<tokenCount; i++)
489
 368:UIMgr.c       **** 		{
490
 369:UIMgr.c       **** 			colorMap[i] = tokenBuffer[i+1];
491
 370:UIMgr.c       ****             
492
 371:UIMgr.c       ****             /* write each colorMap byte to EEPROM, but only those
493
 372:UIMgr.c       ****             that changed...this will help reduce wear on the EEPROM */
494
 373:UIMgr.c       ****             eepromData = eeprom_read_byte( (unsigned char*)(i+1));
495
 374:UIMgr.c       ****             if (eepromData != colorMap[i])
496
 375:UIMgr.c       ****             {
497
 376:UIMgr.c       ****                 /* need to actually perform the write because the
498
 377:UIMgr.c       ****                 data in eeprom is different than the current colorMap */
499
 378:UIMgr.c       ****                 eeprom_write_succeeded = FALSE;
500
 379:UIMgr.c       ****                 while(eeprom_write_succeeded == FALSE && num_writes < MAX_EEPROM_WRITE_ATTEMPTS)
501
 380:UIMgr.c       ****                 {
502
 381:UIMgr.c       ****                     eeprom_write_byte((unsigned char*)(i+1),colorMap[i]);
503
 382:UIMgr.c       ****                     num_writes++;
504
 383:UIMgr.c       ****                     eepromData = eeprom_read_byte( (unsigned char*)(i+1));
505
 384:UIMgr.c       ****                     if (eepromData == colorMap[i])
506
 385:UIMgr.c       ****                     {
507
 386:UIMgr.c       ****                         eeprom_write_succeeded = TRUE;
508
 387:UIMgr.c       ****                     }
509
 388:UIMgr.c       ****                 }
510
 389:UIMgr.c       ****                 num_writes = 0;
511
 390:UIMgr.c       ****             }
512
 391:UIMgr.c       **** 		}
513
 392:UIMgr.c       **** 
514
 393:UIMgr.c       **** #if	DEBUG_COLOR_MAP			
515
 394:UIMgr.c       ****             			/* for debugging...send out the entire color map */
516
 395:UIMgr.c       ****         UIMgr_txBuffer("\r\n",2);
517
 396:UIMgr.c       **** 		for (i=0; i<NUM_ELEMENTS_IN_COLOR_MAP; i++)
518
 397:UIMgr.c       **** 		{
519
 398:UIMgr.c       **** 			memset(asciiBuffer,0x00,5);
520
 399:UIMgr.c       **** 			itoa(colorMap[i],asciiBuffer,10);
521
 400:UIMgr.c       **** 			UIMgr_txBuffer(asciiBuffer,3);
522
 401:UIMgr.c       **** 			UIMgr_txBuffer(" ",1);
523
 402:UIMgr.c       **** 			if (i==15 || i == 31)
524
 403:UIMgr.c       **** 			{
525
 404:UIMgr.c       **** 				/* break up the output */
526
 405:UIMgr.c       **** 				UIMgr_txBuffer("\r\n",2);
527
 406:UIMgr.c       **** 			}
528
 407:UIMgr.c       **** 		}
529
 408:UIMgr.c       **** #endif			
530
 409:UIMgr.c       **** 	}
531
 410:UIMgr.c       **** }
532
 411:UIMgr.c       **** 
533
 412:UIMgr.c       **** /***********************************************************
534
 413:UIMgr.c       **** 	Function Name: UIMgr_convertTokenToValue
535
 414:UIMgr.c       **** 	Function Description: This function is responsible for
536
 415:UIMgr.c       **** 	converting a received token to a hex value It will
537
 416:UIMgr.c       **** 	access the asciiTokenBuffer directly, and store the
538
 417:UIMgr.c       **** 	result in the appropriate token buffer.
539
 418:UIMgr.c       **** 	Inputs:  none 
484 kaklik 540
 419:UIMgr.c       **** 	Outputs: none
541
GAS LISTING /tmp/ccs6Vjbf.s 			page 10
151 kaklik 542
 
543
 
544
 420:UIMgr.c       **** ***********************************************************/	
545
 421:UIMgr.c       **** static void UIMgr_convertTokenToValue(void)
546
 422:UIMgr.c       **** {
547
 423:UIMgr.c       **** 	unsigned int newValue;
548
 424:UIMgr.c       **** 	
549
 425:UIMgr.c       **** 	newValue = atoi(asciiTokenBuffer);
550
 426:UIMgr.c       **** 	if (newValue > 255)
551
 427:UIMgr.c       **** 	{
552
 428:UIMgr.c       **** 		/* the value is too large */
553
 429:UIMgr.c       **** 		receivedCmd = invalidCmd;
554
 430:UIMgr.c       **** 		tokenBuffer[tokenCount] = 0xFF;  /* to indicate an error */
555
 431:UIMgr.c       **** 	}
556
 432:UIMgr.c       **** 	else
557
 433:UIMgr.c       **** 	{
558
 434:UIMgr.c       **** 		/* copy the value into the tokenBuffer */
559
 435:UIMgr.c       **** 		tokenBuffer[tokenCount] = newValue;
560
 436:UIMgr.c       **** 	}
561
 437:UIMgr.c       **** 	memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH);
562
 438:UIMgr.c       **** 	charIndex = 0;
563
 439:UIMgr.c       **** 	charCount = 0;
564
 440:UIMgr.c       **** }
565
 441:UIMgr.c       **** /***********************************************************
566
 442:UIMgr.c       **** 	Function Name: UIMgr_convertTokenToCmd
567
 443:UIMgr.c       **** 	Function Description: This function is responsible for
568
 444:UIMgr.c       **** 	parsing a received 2-character command.  It will
569
 445:UIMgr.c       **** 	access the asciiTokenBuffer directly.
570
 446:UIMgr.c       **** 	Inputs:  none 
571
 447:UIMgr.c       **** 	Outputs: none
572
 448:UIMgr.c       **** ***********************************************************/	
573
 449:UIMgr.c       **** static void UIMgr_convertTokenToCmd(void)
574
 450:UIMgr.c       **** {
575
 451:UIMgr.c       **** 	if ( (asciiTokenBuffer[0] == 'P') &&
576
 452:UIMgr.c       **** 		 (asciiTokenBuffer[1] == 'G') )
577
 453:UIMgr.c       **** 	{
578
 454:UIMgr.c       **** 		/* we got a "ping" command...but we still need to see
579
 455:UIMgr.c       **** 		if we are going to get the \r */
580
 456:UIMgr.c       **** 		receivedCmd = pingCmd;
581
 457:UIMgr.c       **** 	}
582
 458:UIMgr.c       **** 	else if ( (asciiTokenBuffer[0] == 'G') &&
583
 459:UIMgr.c       **** 			   (asciiTokenBuffer[1] == 'V') )
584
 460:UIMgr.c       **** 	{
585
 461:UIMgr.c       **** 		/* we got the "get version" command */
586
 462:UIMgr.c       **** 		receivedCmd = getVersionCmd;
587
 463:UIMgr.c       **** 	}
588
 464:UIMgr.c       **** 	else if ( (asciiTokenBuffer[0] == 'D') &&
589
 465:UIMgr.c       **** 			   (asciiTokenBuffer[1] == 'F') )
590
 466:UIMgr.c       **** 	{
591
 467:UIMgr.c       **** 		/* we should go into frame dump mode */
592
 468:UIMgr.c       **** 		receivedCmd = dumpFrameCmd;	
593
 469:UIMgr.c       **** 	}
594
 470:UIMgr.c       **** 	else if ( (asciiTokenBuffer[0] == 'C') &&
595
 471:UIMgr.c       **** 	           (asciiTokenBuffer[1] == 'R') )
596
 472:UIMgr.c       **** 	{
597
 473:UIMgr.c       **** 		/* the user wants to set registers in the OV6620 */
598
 474:UIMgr.c       **** 		receivedCmd = setCameraRegsCmd;
599
 475:UIMgr.c       **** 	}
484 kaklik 600
 476:UIMgr.c       **** 	else if ( (asciiTokenBuffer[0] == 'E') &&
601
GAS LISTING /tmp/ccs6Vjbf.s 			page 11
151 kaklik 602
 
603
 
604
 477:UIMgr.c       **** 			   (asciiTokenBuffer[1] == 'T') )
605
 478:UIMgr.c       **** 	{
606
 479:UIMgr.c       **** 		/* the user wants to enable tracking */
607
 480:UIMgr.c       **** 		receivedCmd = enableTrackingCmd;
608
 481:UIMgr.c       **** 	}
609
 482:UIMgr.c       **** 	else if ( (asciiTokenBuffer[0] == 'S') &&
610
 483:UIMgr.c       **** 			   (asciiTokenBuffer[1] == 'M') )
611
 484:UIMgr.c       **** 	{
612
 485:UIMgr.c       **** 		/* the user wants to set the color map */
613
 486:UIMgr.c       **** 		receivedCmd = setColorMapCmd;
614
 487:UIMgr.c       **** 	}
615
 488:UIMgr.c       **** 	else if ( (asciiTokenBuffer[0] == 'D') &&
616
 489:UIMgr.c       **** 			   (asciiTokenBuffer[1] == 'T') )
617
 490:UIMgr.c       **** 	{
618
 491:UIMgr.c       **** 		receivedCmd = disableTrackingCmd;
619
 492:UIMgr.c       **** 	}
620
 493:UIMgr.c       **** 	else if ( (asciiTokenBuffer[0] == 'R') &&
621
 494:UIMgr.c       **** 			   (asciiTokenBuffer[1] == 'S') )
622
 495:UIMgr.c       **** 	{
623
 496:UIMgr.c       **** 		receivedCmd = resetCameraCmd;
624
 497:UIMgr.c       **** 	}
625
 498:UIMgr.c       **** 	else
626
 499:UIMgr.c       **** 	{
627
 500:UIMgr.c       **** 		/* don't recognize the cmd */
628
 501:UIMgr.c       **** 		receivedCmd = invalidCmd;
629
 502:UIMgr.c       **** 	}
630
 503:UIMgr.c       **** 	memset(asciiTokenBuffer,0x00,MAX_TOKEN_LENGTH);
631
 504:UIMgr.c       **** 	charIndex = 0;
632
 505:UIMgr.c       **** 	charCount = 0;
633
 506:UIMgr.c       **** }
634
 507:UIMgr.c       **** /***********************************************************
635
 508:UIMgr.c       **** 	Function Name: UIMgr_sendAck
636
 509:UIMgr.c       **** 	Function Description: This function is responsible for
637
 510:UIMgr.c       **** 	queuing up an ACK to be sent to the user.
638
 511:UIMgr.c       **** 	Inputs:  none 
639
 512:UIMgr.c       **** 	Outputs: none
640
 513:UIMgr.c       **** ***********************************************************/	
641
 514:UIMgr.c       **** static void UIMgr_sendAck(void)
642
 515:UIMgr.c       **** {
643
 516:UIMgr.c       **** 	UIMgr_writeTxFifo('A');
644
 517:UIMgr.c       **** 	UIMgr_writeTxFifo('C');
645
 518:UIMgr.c       **** 	UIMgr_writeTxFifo('K');
646
 519:UIMgr.c       **** 	UIMgr_writeTxFifo('\r');
647
 520:UIMgr.c       **** }
648
 521:UIMgr.c       **** 
649
 522:UIMgr.c       **** /***********************************************************
650
 523:UIMgr.c       **** 	Function Name: UIMgr_sendNck
651
 524:UIMgr.c       **** 	Function Description: This function is responsible for
652
 525:UIMgr.c       **** 	queueing up an NCK to be sent to the user.
653
 526:UIMgr.c       **** 	Inputs:  none 
654
 527:UIMgr.c       **** 	Outputs: none
655
 528:UIMgr.c       **** ***********************************************************/	
656
 529:UIMgr.c       **** static void UIMgr_sendNck(void)
657
 530:UIMgr.c       **** {
658
 531:UIMgr.c       **** 		UIMgr_writeTxFifo('N');
659
 532:UIMgr.c       **** 		UIMgr_writeTxFifo('C');
484 kaklik 660
 533:UIMgr.c       **** 		UIMgr_writeTxFifo('K');
661
GAS LISTING /tmp/ccs6Vjbf.s 			page 12
151 kaklik 662
 
663
 
664
 534:UIMgr.c       **** 		UIMgr_writeTxFifo('\r');
665
 535:UIMgr.c       **** }
666
 536:UIMgr.c       **** 
667
 537:UIMgr.c       **** 
668
 538:UIMgr.c       **** /***********************************************************
669
 539:UIMgr.c       **** 	Function Name: UIMgr_writeBufferToTxFifo
670
 540:UIMgr.c       **** 	Function Description: This function is responsible for
671
 541:UIMgr.c       **** 	placing "length" bytes into the tx FIFO.
672
 542:UIMgr.c       **** 	Inputs:  pData -  a pointer to the data to send
673
 543:UIMgr.c       **** 	         length - the number of bytes to send
674
 544:UIMgr.c       **** 	Outputs: none
675
 545:UIMgr.c       **** ***********************************************************/	
676
 546:UIMgr.c       **** void UIMgr_writeBufferToTxFifo(unsigned char *pData, unsigned char length)
677
 547:UIMgr.c       **** {
484 kaklik 678
  95               		.stabn	68,0,547,.LM0-.LFBB1
679
  96               	.LM0:
680
  97               	.LFBB1:
151 kaklik 681
  98               	/* prologue: frame size=0 */
682
  99               	/* prologue end (size=0) */
683
 100 0000 DC01      		movw r26,r24
684
 548:UIMgr.c       **** 	unsigned char tmpHead;
685
 549:UIMgr.c       **** 	if (length == 0)
484 kaklik 686
 101               		.stabn	68,0,549,.LM1-.LFBB1
687
 102               	.LM1:
688
 103 0002 6623      		tst r22
689
 104 0004 01F0      		breq .L8
151 kaklik 690
 550:UIMgr.c       **** 	{
691
 551:UIMgr.c       **** 		return;
692
 552:UIMgr.c       **** 	}
693
 553:UIMgr.c       **** 	
694
 554:UIMgr.c       **** 	DISABLE_INTS();
484 kaklik 695
 105               		.stabn	68,0,554,.LM2-.LFBB1
696
 106               	.LM2:
697
 107               	/* #APP */
698
 108 0006 F894      		cli
151 kaklik 699
 555:UIMgr.c       **** 	while(length-- != 0)
484 kaklik 700
 109               		.stabn	68,0,555,.LM3-.LFBB1
701
 110               	.LM3:
702
 111               	/* #NOAPP */
703
 112 0008 6150      		subi r22,lo8(-(-1))
704
 113 000a 6F3F      		cpi r22,lo8(-1)
705
 114 000c 01F0      		breq .L4
706
 115 000e 9091 0000 		lds r25,UIMgr_txFifoHead
151 kaklik 707
 556:UIMgr.c       **** 	{
708
 557:UIMgr.c       **** 		UIMgr_txFifo[UIMgr_txFifoHead] = *pData++;
484 kaklik 709
 116               		.stabn	68,0,557,.LM4-.LFBB1
710
 117               	.LM4:
711
 118 0012 20E0      		ldi r18,lo8(UIMgr_txFifo)
712
 119 0014 30E0      		ldi r19,hi8(UIMgr_txFifo)
713
 120               	.L6:
714
 121 0016 F901      		movw r30,r18
715
 122 0018 E90F      		add r30,r25
716
 123 001a F11D      		adc r31,__zero_reg__
717
 124 001c 8D91      		ld r24,X+
718
 125 001e 8083      		st Z,r24
719
 558:UIMgr.c       **** 	
720
 559:UIMgr.c       **** 		/* now move the head up */
721
GAS LISTING /tmp/ccs6Vjbf.s 			page 13
151 kaklik 722
 
723
 
724
 560:UIMgr.c       **** 		tmpHead = (UIMgr_txFifoHead + 1) & (UI_MGR_TX_FIFO_MASK);
484 kaklik 725
 126               		.stabn	68,0,560,.LM5-.LFBB1
726
 127               	.LM5:
727
 128 0020 892F      		mov r24,r25
728
 129 0022 8F5F      		subi r24,lo8(-(1))
729
 130 0024 982F      		mov r25,r24
730
 131 0026 9F73      		andi r25,lo8(63)
731
 132               		.stabn	68,0,555,.LM6-.LFBB1
732
 133               	.LM6:
733
 134 0028 6150      		subi r22,1
734
 135 002a 00F4      		brcc .L6
735
 136 002c 9093 0000 		sts UIMgr_txFifoHead,r25
736
 137               	.L4:
151 kaklik 737
 561:UIMgr.c       **** 		UIMgr_txFifoHead = tmpHead;
738
 562:UIMgr.c       **** 	}
739
 563:UIMgr.c       **** 	ENABLE_INTS();
484 kaklik 740
 138               		.stabn	68,0,563,.LM7-.LFBB1
741
 139               	.LM7:
742
 140               	/* #APP */
743
 141 0030 7894      		sei
744
 142               	/* #NOAPP */
745
 143               	.L8:
746
 144 0032 0895      		ret
747
 145               	/* epilogue: frame size=0 */
748
 146               	/* epilogue: noreturn */
749
 147               	/* epilogue end (size=0) */
750
 148               	/* function UIMgr_writeBufferToTxFifo size 29 (29) */
751
 149               		.size	UIMgr_writeBufferToTxFifo, .-UIMgr_writeBufferToTxFifo
752
 150               		.stabs	"tmpHead:r(0,11)",64,0,548,25
753
 151               		.stabn	192,0,0,.LFBB1-.LFBB1
754
 152               		.stabn	224,0,0,.Lscope1-.LFBB1
755
 153               	.Lscope1:
756
 154               		.stabs	"",36,0,0,.Lscope1-.LFBB1
757
 155               		.stabd	78,0,0
758
 156               		.stabs	"UIMgr_readTxFifo:f(0,11)",36,0,630,UIMgr_readTxFifo
759
 157               		.type	UIMgr_readTxFifo, @function
760
 158               	UIMgr_readTxFifo:
761
 159               		.stabd	46,0,0
151 kaklik 762
 564:UIMgr.c       **** }
763
 565:UIMgr.c       **** 
764
 566:UIMgr.c       **** /***********************************************************
765
 567:UIMgr.c       **** 	Function Name: UIMgr_txBuffer
766
 568:UIMgr.c       **** 	Function Description: This function is responsible for
767
 569:UIMgr.c       **** 	sending 'length' bytes out using the UartInterface 
768
 570:UIMgr.c       **** 	module.
769
 571:UIMgr.c       **** 	Inputs:  pData -  a pointer to the data to send
770
 572:UIMgr.c       **** 	         length - the number of bytes to send
771
 573:UIMgr.c       **** 	Outputs: none
772
 574:UIMgr.c       **** ***********************************************************/	
773
 575:UIMgr.c       **** void UIMgr_txBuffer(unsigned char *pData, unsigned char length)
774
 576:UIMgr.c       **** {
775
 577:UIMgr.c       **** 	while(length-- != 0)
776
 578:UIMgr.c       **** 	{
777
 579:UIMgr.c       **** 		UartInt_txByte(*pData++); 
778
 580:UIMgr.c       **** 	}
779
 581:UIMgr.c       **** }
484 kaklik 780
 582:UIMgr.c       **** 
781
GAS LISTING /tmp/ccs6Vjbf.s 			page 14
151 kaklik 782
 
783
 
784
 583:UIMgr.c       **** /***********************************************************
785
 584:UIMgr.c       **** 	Function Name: UIMgr_flushTxBuffer
786
 585:UIMgr.c       **** 	Function Description: This function is responsible for
787
 586:UIMgr.c       **** 	sending all data currently in the serial tx buffer
788
 587:UIMgr.c       **** 	to the user.
789
 588:UIMgr.c       **** 	Inputs:  none
790
 589:UIMgr.c       **** 	Outputs: none
791
 590:UIMgr.c       **** ***********************************************************/	
792
 591:UIMgr.c       **** void UIMgr_flushTxBuffer(void)
793
 592:UIMgr.c       **** {
794
 593:UIMgr.c       **** 	while(IS_DATA_IN_TX_FIFO() == TRUE)
795
 594:UIMgr.c       **** 	{
796
 595:UIMgr.c       **** 		UartInt_txByte(UIMgr_readTxFifo() );
797
 596:UIMgr.c       **** 	}
798
 597:UIMgr.c       **** }
799
 598:UIMgr.c       **** 
800
 599:UIMgr.c       **** /***********************************************************
801
 600:UIMgr.c       **** 	Function Name: UIMgr_readRxFifo
802
 601:UIMgr.c       **** 	Function Description: This function is responsible for
803
 602:UIMgr.c       **** 	reading a single byte of data from the rx fifo, and
804
 603:UIMgr.c       **** 	updating the appropriate pointers.
805
 604:UIMgr.c       **** 	Inputs:  none 
806
 605:UIMgr.c       **** 	Outputs: unsigned char-the data read
807
 606:UIMgr.c       **** ***********************************************************/	
808
 607:UIMgr.c       **** static unsigned char UIMgr_readRxFifo(void)
809
 608:UIMgr.c       **** {
810
 609:UIMgr.c       **** 	unsigned char dataByte, tmpTail;
811
 610:UIMgr.c       **** 	
812
 611:UIMgr.c       **** 	/* just return the current tail from the rx fifo */
813
 612:UIMgr.c       **** 	DISABLE_INTS();
814
 613:UIMgr.c       **** 	dataByte = UIMgr_rxFifo[UIMgr_rxFifoTail];	
815
 614:UIMgr.c       **** 	tmpTail = (UIMgr_rxFifoTail+1) & (UI_MGR_RX_FIFO_MASK);
816
 615:UIMgr.c       **** 	UIMgr_rxFifoTail = tmpTail;
817
 616:UIMgr.c       **** 	ENABLE_INTS();
818
 617:UIMgr.c       **** 	
819
 618:UIMgr.c       **** 	return(dataByte);
820
 619:UIMgr.c       **** }
821
 620:UIMgr.c       **** 
822
 621:UIMgr.c       **** /***********************************************************
823
 622:UIMgr.c       **** 	Function Name: UIMgr_readTxFifo
824
 623:UIMgr.c       **** 	Function Description: This function is responsible for
825
 624:UIMgr.c       **** 	reading a single byte of data from the tx fifo, and
826
 625:UIMgr.c       **** 	updating the appropriate pointers.
827
 626:UIMgr.c       **** 	Inputs:  none 
828
 627:UIMgr.c       **** 	Outputs: unsigned char-the data read
829
 628:UIMgr.c       **** ***********************************************************/	
830
 629:UIMgr.c       **** static unsigned char UIMgr_readTxFifo(void)
831
 630:UIMgr.c       **** {
484 kaklik 832
 160               		.stabn	68,0,630,.LM8-.LFBB2
833
 161               	.LM8:
834
 162               	.LFBB2:
151 kaklik 835
 163               	/* prologue: frame size=0 */
836
 164               	/* prologue end (size=0) */
837
 631:UIMgr.c       **** 	unsigned char dataByte, tmpTail;
838
 632:UIMgr.c       **** 	
839
 633:UIMgr.c       **** 	/* just return the current tail from the tx fifo */
840
 634:UIMgr.c       **** 	DISABLE_INTS();
484 kaklik 841
GAS LISTING /tmp/ccs6Vjbf.s 			page 15
151 kaklik 842
 
843
 
484 kaklik 844
 165               		.stabn	68,0,634,.LM9-.LFBB2
151 kaklik 845
 166               	.LM9:
846
 167               	/* #APP */
484 kaklik 847
 168 0034 F894      		cli
151 kaklik 848
 635:UIMgr.c       **** 	dataByte = UIMgr_txFifo[UIMgr_txFifoTail];	
484 kaklik 849
 169               		.stabn	68,0,635,.LM10-.LFBB2
151 kaklik 850
 170               	.LM10:
851
 171               	/* #NOAPP */
484 kaklik 852
 172 0036 9091 0000 		lds r25,UIMgr_txFifoTail
853
 173 003a E0E0      		ldi r30,lo8(UIMgr_txFifo)
854
 174 003c F0E0      		ldi r31,hi8(UIMgr_txFifo)
855
 175 003e E90F      		add r30,r25
856
 176 0040 F11D      		adc r31,__zero_reg__
857
 177 0042 8081      		ld r24,Z
151 kaklik 858
 636:UIMgr.c       **** 	tmpTail = (UIMgr_txFifoTail+1) & (UI_MGR_TX_FIFO_MASK);
859
 637:UIMgr.c       **** 	UIMgr_txFifoTail = tmpTail;
484 kaklik 860
 178               		.stabn	68,0,637,.LM11-.LFBB2
151 kaklik 861
 179               	.LM11:
484 kaklik 862
 180 0044 9F5F      		subi r25,lo8(-(1))
863
 181 0046 9F73      		andi r25,lo8(63)
864
 182 0048 9093 0000 		sts UIMgr_txFifoTail,r25
151 kaklik 865
 638:UIMgr.c       **** 	ENABLE_INTS();
484 kaklik 866
 183               		.stabn	68,0,638,.LM12-.LFBB2
151 kaklik 867
 184               	.LM12:
868
 185               	/* #APP */
484 kaklik 869
 186 004c 7894      		sei
151 kaklik 870
 639:UIMgr.c       **** 	
871
 640:UIMgr.c       **** 	return(dataByte);
872
 641:UIMgr.c       **** }
484 kaklik 873
 187               		.stabn	68,0,641,.LM13-.LFBB2
151 kaklik 874
 188               	.LM13:
875
 189               	/* #NOAPP */
484 kaklik 876
 190 004e 9927      		clr r25
151 kaklik 877
 191               	/* epilogue: frame size=0 */
484 kaklik 878
 192 0050 0895      		ret
151 kaklik 879
 193               	/* epilogue end (size=1) */
880
 194               	/* function UIMgr_readTxFifo size 17 (16) */
881
 195               		.size	UIMgr_readTxFifo, .-UIMgr_readTxFifo
882
 196               		.stabs	"dataByte:r(0,11)",64,0,631,24
484 kaklik 883
 197               		.stabn	192,0,0,.LFBB2-.LFBB2
884
 198               		.stabn	224,0,0,.Lscope2-.LFBB2
885
 199               	.Lscope2:
886
 200               		.stabs	"",36,0,0,.Lscope2-.LFBB2
151 kaklik 887
 201               		.stabd	78,0,0
888
 202               		.stabs	"UIMgr_writeTxFifo:F(0,15)",36,0,652,UIMgr_writeTxFifo
889
 203               		.stabs	"data:P(0,11)",64,0,651,24
890
 204               	.global	UIMgr_writeTxFifo
891
 205               		.type	UIMgr_writeTxFifo, @function
892
 206               	UIMgr_writeTxFifo:
893
 207               		.stabd	46,0,0
894
 642:UIMgr.c       **** 
895
 643:UIMgr.c       **** /***********************************************************
896
 644:UIMgr.c       **** 	Function Name: UIMgr_writeTxFifo
897
 645:UIMgr.c       **** 	Function Description: This function is responsible for
898
 646:UIMgr.c       **** 	writing a single byte to the TxFifo and
899
 647:UIMgr.c       **** 	updating the appropriate pointers.
900
 648:UIMgr.c       **** 	Inputs:  data - the byte to write to the Fifo 
484 kaklik 901
GAS LISTING /tmp/ccs6Vjbf.s 			page 16
151 kaklik 902
 
903
 
904
 649:UIMgr.c       **** 	Outputs: none
905
 650:UIMgr.c       **** ***********************************************************/	
906
 651:UIMgr.c       **** void UIMgr_writeTxFifo(unsigned char data)
907
 652:UIMgr.c       **** {
484 kaklik 908
 208               		.stabn	68,0,652,.LM14-.LFBB3
151 kaklik 909
 209               	.LM14:
484 kaklik 910
 210               	.LFBB3:
911
 211               	/* prologue: frame size=0 */
912
 212               	/* prologue end (size=0) */
151 kaklik 913
 653:UIMgr.c       **** 	unsigned char tmpHead;
914
 654:UIMgr.c       **** 
915
 655:UIMgr.c       **** 	DISABLE_INTS();
484 kaklik 916
 213               		.stabn	68,0,655,.LM15-.LFBB3
917
 214               	.LM15:
918
 215               	/* #APP */
919
 216 0052 F894      		cli
151 kaklik 920
 656:UIMgr.c       **** 	UIMgr_txFifo[UIMgr_txFifoHead] = data;
484 kaklik 921
 217               		.stabn	68,0,656,.LM16-.LFBB3
922
 218               	.LM16:
923
 219               	/* #NOAPP */
924
 220 0054 9091 0000 		lds r25,UIMgr_txFifoHead
925
 221 0058 E0E0      		ldi r30,lo8(UIMgr_txFifo)
926
 222 005a F0E0      		ldi r31,hi8(UIMgr_txFifo)
927
 223 005c E90F      		add r30,r25
928
 224 005e F11D      		adc r31,__zero_reg__
929
 225 0060 8083      		st Z,r24
151 kaklik 930
 657:UIMgr.c       **** 
931
 658:UIMgr.c       ****     /* now move the head up */
932
 659:UIMgr.c       ****     tmpHead = (UIMgr_txFifoHead + 1) & (UI_MGR_TX_FIFO_MASK);
933
 660:UIMgr.c       ****     UIMgr_txFifoHead = tmpHead;
484 kaklik 934
 226               		.stabn	68,0,660,.LM17-.LFBB3
935
 227               	.LM17:
936
 228 0062 9F5F      		subi r25,lo8(-(1))
937
 229 0064 9F73      		andi r25,lo8(63)
938
 230 0066 9093 0000 		sts UIMgr_txFifoHead,r25
151 kaklik 939
 661:UIMgr.c       **** 	ENABLE_INTS();
484 kaklik 940
 231               		.stabn	68,0,661,.LM18-.LFBB3
941
 232               	.LM18:
942
 233               	/* #APP */
943
 234 006a 7894      		sei
944
 235               	/* #NOAPP */
945
 236               	/* epilogue: frame size=0 */
946
 237 006c 0895      		ret
947
 238               	/* epilogue end (size=1) */
948
 239               	/* function UIMgr_writeTxFifo size 16 (15) */
949
 240               		.size	UIMgr_writeTxFifo, .-UIMgr_writeTxFifo
950
 241               	.Lscope3:
951
 242               		.stabs	"",36,0,0,.Lscope3-.LFBB3
952
 243               		.stabd	78,0,0
953
 244               		.stabs	"UIMgr_flushTxBuffer:F(0,15)",36,0,592,UIMgr_flushTxBuffer
954
 245               	.global	UIMgr_flushTxBuffer
955
 246               		.type	UIMgr_flushTxBuffer, @function
956
 247               	UIMgr_flushTxBuffer:
957
 248               		.stabd	46,0,0
958
 249               		.stabn	68,0,592,.LM19-.LFBB4
959
 250               	.LM19:
960
 251               	.LFBB4:
961
GAS LISTING /tmp/ccs6Vjbf.s 			page 17
151 kaklik 962
 
963
 
484 kaklik 964
 252               	/* prologue: frame size=0 */
965
 253               	/* prologue end (size=0) */
966
 254               		.stabn	68,0,593,.LM20-.LFBB4
967
 255               	.LM20:
968
 256 006e 9091 0000 		lds r25,UIMgr_txFifoHead
969
 257 0072 8091 0000 		lds r24,UIMgr_txFifoTail
970
 258 0076 9817      		cp r25,r24
971
 259 0078 01F0      		breq .L18
972
 260               	.L19:
973
 261               		.stabn	68,0,595,.LM21-.LFBB4
974
 262               	.LM21:
975
 263 007a 00D0      		rcall UIMgr_readTxFifo
976
 264 007c 00D0      		rcall UartInt_txByte
977
 265               		.stabn	68,0,593,.LM22-.LFBB4
978
 266               	.LM22:
979
 267 007e 9091 0000 		lds r25,UIMgr_txFifoHead
980
 268 0082 8091 0000 		lds r24,UIMgr_txFifoTail
981
 269 0086 9817      		cp r25,r24
982
 270 0088 01F4      		brne .L19
983
 271               	.L18:
984
 272 008a 0895      		ret
985
 273               	/* epilogue: frame size=0 */
986
 274               	/* epilogue: noreturn */
987
 275               	/* epilogue end (size=0) */
988
 276               	/* function UIMgr_flushTxBuffer size 15 (15) */
989
 277               		.size	UIMgr_flushTxBuffer, .-UIMgr_flushTxBuffer
990
 278               	.Lscope4:
991
 279               		.stabs	"",36,0,0,.Lscope4-.LFBB4
992
 280               		.stabd	78,0,0
993
 281               		.stabs	"UIMgr_txBuffer:F(0,15)",36,0,576,UIMgr_txBuffer
994
 282               		.stabs	"pData:P(0,20)",64,0,575,28
995
 283               		.stabs	"length:P(0,11)",64,0,575,22
996
 284               	.global	UIMgr_txBuffer
997
 285               		.type	UIMgr_txBuffer, @function
998
 286               	UIMgr_txBuffer:
999
 287               		.stabd	46,0,0
1000
 288               		.stabn	68,0,576,.LM23-.LFBB5
1001
 289               	.LM23:
1002
 290               	.LFBB5:
1003
 291               	/* prologue: frame size=0 */
1004
 292 008c 1F93      		push r17
1005
 293 008e CF93      		push r28
1006
 294 0090 DF93      		push r29
1007
 295               	/* prologue end (size=3) */
1008
 296 0092 EC01      		movw r28,r24
1009
 297               		.stabn	68,0,577,.LM24-.LFBB5
1010
 298               	.LM24:
1011
 299 0094 162F      		mov r17,r22
1012
 300 0096 1150      		subi r17,lo8(-(-1))
1013
 301 0098 1F3F      		cpi r17,lo8(-1)
1014
 302 009a 01F0      		breq .L24
1015
 303               	.L25:
1016
 304               		.stabn	68,0,579,.LM25-.LFBB5
1017
 305               	.LM25:
1018
 306 009c 8991      		ld r24,Y+
1019
 307 009e 00D0      		rcall UartInt_txByte
1020
 308               		.stabn	68,0,577,.LM26-.LFBB5
1021
GAS LISTING /tmp/ccs6Vjbf.s 			page 18
151 kaklik 1022
 
1023
 
1024
 309               	.LM26:
484 kaklik 1025
 310 00a0 1150      		subi r17,1
1026
 311 00a2 00F4      		brcc .L25
1027
 312               	.L24:
1028
 313               	/* epilogue: frame size=0 */
1029
 314 00a4 DF91      		pop r29
1030
 315 00a6 CF91      		pop r28
1031
 316 00a8 1F91      		pop r17
1032
 317 00aa 0895      		ret
1033
 318               	/* epilogue end (size=4) */
1034
 319               	/* function UIMgr_txBuffer size 17 (10) */
1035
 320               		.size	UIMgr_txBuffer, .-UIMgr_txBuffer
1036
 321               	.Lscope5:
1037
 322               		.stabs	"",36,0,0,.Lscope5-.LFBB5
1038
 323               		.stabd	78,0,0
1039
 324               		.stabs	"UIMgr_transmitPendingData:F(0,15)",36,0,178,UIMgr_transmitPendingData
1040
 325               	.global	UIMgr_transmitPendingData
1041
 326               		.type	UIMgr_transmitPendingData, @function
1042
 327               	UIMgr_transmitPendingData:
1043
 328               		.stabd	46,0,0
1044
 329               		.stabn	68,0,178,.LM27-.LFBB6
1045
 330               	.LM27:
1046
 331               	.LFBB6:
1047
 332               	/* prologue: frame size=0 */
1048
 333               	/* prologue end (size=0) */
1049
 334               		.stabn	68,0,179,.LM28-.LFBB6
1050
 335               	.LM28:
1051
 336 00ac 9091 0000 		lds r25,UIMgr_txFifoHead
1052
 337 00b0 8091 0000 		lds r24,UIMgr_txFifoTail
1053
 338 00b4 9817      		cp r25,r24
1054
 339 00b6 01F0      		breq .L30
1055
 340               		.stabn	68,0,182,.LM29-.LFBB6
1056
 341               	.LM29:
1057
 342 00b8 00D0      		rcall UIMgr_readTxFifo
1058
 343 00ba 00D0      		rcall UartInt_txByte
1059
 344               	.L30:
1060
 345 00bc 0895      		ret
1061
 346               	/* epilogue: frame size=0 */
1062
 347               	/* epilogue: noreturn */
1063
 348               	/* epilogue end (size=0) */
1064
 349               	/* function UIMgr_transmitPendingData size 9 (9) */
1065
 350               		.size	UIMgr_transmitPendingData, .-UIMgr_transmitPendingData
1066
 351               	.Lscope6:
1067
 352               		.stabs	"",36,0,0,.Lscope6-.LFBB6
1068
 353               		.stabd	78,0,0
1069
 354               		.stabs	"UIMgr_convertTokenToCmd:f(0,15)",36,0,450,UIMgr_convertTokenToCmd
1070
 355               		.type	UIMgr_convertTokenToCmd, @function
1071
 356               	UIMgr_convertTokenToCmd:
1072
 357               		.stabd	46,0,0
1073
 358               		.stabn	68,0,450,.LM30-.LFBB7
1074
 359               	.LM30:
1075
 360               	.LFBB7:
1076
 361               	/* prologue: frame size=0 */
1077
 362               	/* prologue end (size=0) */
1078
 363               		.stabn	68,0,451,.LM31-.LFBB7
151 kaklik 1079
 364               	.LM31:
484 kaklik 1080
 365 00be 9091 0000 		lds r25,asciiTokenBuffer
1081
GAS LISTING /tmp/ccs6Vjbf.s 			page 19
151 kaklik 1082
 
1083
 
484 kaklik 1084
 366 00c2 9035      		cpi r25,lo8(80)
1085
 367 00c4 01F4      		brne .L32
1086
 368               		.stabn	68,0,451,.LM32-.LFBB7
1087
 369               	.LM32:
1088
 370 00c6 8091 0000 		lds r24,asciiTokenBuffer+1
1089
 371 00ca 8734      		cpi r24,lo8(71)
1090
 372 00cc 01F4      		brne .L34
1091
 373               		.stabn	68,0,456,.LM33-.LFBB7
1092
 374               	.LM33:
1093
 375 00ce 81E0      		ldi r24,lo8(1)
1094
 376 00d0 8093 0000 		sts receivedCmd,r24
1095
 377 00d4 00C0      		rjmp .L36
1096
 378               	.L32:
1097
 379               		.stabn	68,0,458,.LM34-.LFBB7
1098
 380               	.LM34:
1099
 381 00d6 9734      		cpi r25,lo8(71)
1100
 382 00d8 01F4      		brne .L37
1101
 383 00da 8091 0000 		lds r24,asciiTokenBuffer+1
1102
 384 00de 8635      		cpi r24,lo8(86)
1103
 385 00e0 01F4      		brne .L39
1104
 386               		.stabn	68,0,462,.LM35-.LFBB7
1105
 387               	.LM35:
1106
 388 00e2 1092 0000 		sts receivedCmd,__zero_reg__
1107
 389 00e6 00C0      		rjmp .L36
1108
 390               	.L37:
1109
 391               		.stabn	68,0,464,.LM36-.LFBB7
1110
 392               	.LM36:
1111
 393 00e8 9434      		cpi r25,lo8(68)
1112
 394 00ea 01F4      		brne .L41
1113
 395 00ec 8091 0000 		lds r24,asciiTokenBuffer+1
1114
 396 00f0 8634      		cpi r24,lo8(70)
1115
 397 00f2 01F4      		brne .L43
1116
 398               		.stabn	68,0,468,.LM37-.LFBB7
1117
 399               	.LM37:
1118
 400 00f4 83E0      		ldi r24,lo8(3)
1119
 401 00f6 8093 0000 		sts receivedCmd,r24
1120
 402 00fa 00C0      		rjmp .L36
1121
 403               	.L41:
1122
 404               		.stabn	68,0,470,.LM38-.LFBB7
1123
 405               	.LM38:
1124
 406 00fc 9334      		cpi r25,lo8(67)
1125
 407 00fe 01F4      		brne .L34
1126
 408 0100 8091 0000 		lds r24,asciiTokenBuffer+1
1127
 409 0104 8235      		cpi r24,lo8(82)
1128
 410 0106 01F4      		brne .L46
1129
 411               		.stabn	68,0,474,.LM39-.LFBB7
1130
 412               	.LM39:
1131
 413 0108 82E0      		ldi r24,lo8(2)
1132
 414 010a 8093 0000 		sts receivedCmd,r24
1133
 415 010e 00C0      		rjmp .L36
1134
 416               	.L34:
1135
 417               		.stabn	68,0,476,.LM40-.LFBB7
1136
 418               	.LM40:
1137
 419 0110 9534      		cpi r25,lo8(69)
1138
 420 0112 01F4      		brne .L39
1139
 421 0114 8091 0000 		lds r24,asciiTokenBuffer+1
1140
 422 0118 8435      		cpi r24,lo8(84)
1141
GAS LISTING /tmp/ccs6Vjbf.s 			page 20
151 kaklik 1142
 
1143
 
484 kaklik 1144
 423 011a 01F4      		brne .L49
1145
 424               		.stabn	68,0,480,.LM41-.LFBB7
1146
 425               	.LM41:
1147
 426 011c 84E0      		ldi r24,lo8(4)
1148
 427 011e 8093 0000 		sts receivedCmd,r24
1149
 428 0122 00C0      		rjmp .L36
1150
 429               	.L39:
1151
 430               		.stabn	68,0,482,.LM42-.LFBB7
1152
 431               	.LM42:
1153
 432 0124 9335      		cpi r25,lo8(83)
1154
 433 0126 01F4      		brne .L43
1155
 434 0128 8091 0000 		lds r24,asciiTokenBuffer+1
1156
 435 012c 8D34      		cpi r24,lo8(77)
1157
 436 012e 01F4      		brne .L49
1158
 437               		.stabn	68,0,486,.LM43-.LFBB7
1159
 438               	.LM43:
1160
 439 0130 86E0      		ldi r24,lo8(6)
1161
 440 0132 8093 0000 		sts receivedCmd,r24
1162
 441 0136 00C0      		rjmp .L36
1163
 442               	.L43:
1164
 443               		.stabn	68,0,488,.LM44-.LFBB7
1165
 444               	.LM44:
1166
 445 0138 9434      		cpi r25,lo8(68)
1167
 446 013a 01F4      		brne .L46
1168
 447 013c 8091 0000 		lds r24,asciiTokenBuffer+1
1169
 448 0140 8435      		cpi r24,lo8(84)
1170
 449 0142 01F4      		brne .L49
1171
 450               		.stabn	68,0,491,.LM45-.LFBB7
1172
 451               	.LM45:
1173
 452 0144 85E0      		ldi r24,lo8(5)
1174
 453 0146 8093 0000 		sts receivedCmd,r24
1175
 454 014a 00C0      		rjmp .L36
1176
 455               	.L46:
1177
 456               		.stabn	68,0,493,.LM46-.LFBB7
1178
 457               	.LM46:
1179
 458 014c 9235      		cpi r25,lo8(82)
1180
 459 014e 01F4      		brne .L49
1181
 460 0150 8091 0000 		lds r24,asciiTokenBuffer+1
1182
 461 0154 8335      		cpi r24,lo8(83)
1183
 462 0156 01F4      		brne .L49
1184
 463               		.stabn	68,0,496,.LM47-.LFBB7
1185
 464               	.LM47:
1186
 465 0158 87E0      		ldi r24,lo8(7)
1187
 466 015a 8093 0000 		sts receivedCmd,r24
1188
 467 015e 00C0      		rjmp .L36
1189
 468               	.L49:
1190
 469               		.stabn	68,0,501,.LM48-.LFBB7
1191
 470               	.LM48:
1192
 471 0160 89E0      		ldi r24,lo8(9)
1193
 472 0162 8093 0000 		sts receivedCmd,r24
1194
 473               	.L36:
1195
 474               		.stabn	68,0,503,.LM49-.LFBB7
1196
 475               	.LM49:
1197
 476 0166 83E0      		ldi r24,lo8(3)
1198
 477 0168 E0E0      		ldi r30,lo8(asciiTokenBuffer)
1199
 478 016a F0E0      		ldi r31,hi8(asciiTokenBuffer)
1200
 479 016c 1192      		st Z+,__zero_reg__
1201
GAS LISTING /tmp/ccs6Vjbf.s 			page 21
151 kaklik 1202
 
1203
 
484 kaklik 1204
 480 016e 8A95      	        dec r24
1205
 481 0170 01F4      		brne .-6
1206
 482               		.stabn	68,0,504,.LM50-.LFBB7
1207
 483               	.LM50:
1208
 484 0172 1092 0000 		sts charIndex,__zero_reg__
1209
 485               		.stabn	68,0,505,.LM51-.LFBB7
1210
 486               	.LM51:
1211
 487 0176 1092 0000 		sts charCount,__zero_reg__
1212
 488               	/* epilogue: frame size=0 */
1213
 489 017a 0895      		ret
1214
 490               	/* epilogue end (size=1) */
1215
 491               	/* function UIMgr_convertTokenToCmd size 95 (94) */
1216
 492               		.size	UIMgr_convertTokenToCmd, .-UIMgr_convertTokenToCmd
1217
 493               	.Lscope7:
1218
 494               		.stabs	"",36,0,0,.Lscope7-.LFBB7
1219
 495               		.stabd	78,0,0
1220
 496               		.stabs	"UIMgr_init:F(0,15)",36,0,137,UIMgr_init
1221
 497               	.global	UIMgr_init
1222
 498               		.type	UIMgr_init, @function
1223
 499               	UIMgr_init:
1224
 500               		.stabd	46,0,0
1225
 501               		.stabn	68,0,137,.LM52-.LFBB8
1226
 502               	.LM52:
1227
 503               	.LFBB8:
1228
 504               	/* prologue: frame size=0 */
1229
 505               	/* prologue end (size=0) */
1230
 506               		.stabn	68,0,138,.LM53-.LFBB8
1231
 507               	.LM53:
1232
 508 017c 1092 0000 		sts asciiTokenBuffer,__zero_reg__
1233
 509 0180 1092 0000 		sts (asciiTokenBuffer)+1,__zero_reg__
1234
 510 0184 1092 0000 		sts (asciiTokenBuffer)+2,__zero_reg__
1235
 511 0188 1092 0000 		sts (asciiTokenBuffer)+3,__zero_reg__
1236
 512               		.stabn	68,0,139,.LM54-.LFBB8
1237
 513               	.LM54:
1238
 514 018c 80E4      		ldi r24,lo8(64)
1239
 515 018e E0E0      		ldi r30,lo8(tokenBuffer)
1240
 516 0190 F0E0      		ldi r31,hi8(tokenBuffer)
1241
 517 0192 982F      		mov r25,r24
1242
 518 0194 1192      		st Z+,__zero_reg__
1243
 519 0196 9A95      	        dec r25
1244
 520 0198 01F4      		brne .-6
1245
 521               		.stabn	68,0,140,.LM55-.LFBB8
1246
 522               	.LM55:
1247
 523 019a E0E0      		ldi r30,lo8(UIMgr_txFifo)
1248
 524 019c F0E0      		ldi r31,hi8(UIMgr_txFifo)
1249
 525 019e 1192      		st Z+,__zero_reg__
1250
 526 01a0 8A95      	        dec r24
1251
 527 01a2 01F4      		brne .-6
1252
 528               		.stabn	68,0,141,.LM56-.LFBB8
1253
 529               	.LM56:
1254
 530 01a4 80E2      		ldi r24,lo8(32)
1255
 531 01a6 E0E0      		ldi r30,lo8(UIMgr_rxFifo)
1256
 532 01a8 F0E0      		ldi r31,hi8(UIMgr_rxFifo)
1257
 533 01aa 1192      		st Z+,__zero_reg__
1258
 534 01ac 8A95      	        dec r24
1259
 535 01ae 01F4      		brne .-6
1260
 536               	/* epilogue: frame size=0 */
1261
GAS LISTING /tmp/ccs6Vjbf.s 			page 22
151 kaklik 1262
 
1263
 
484 kaklik 1264
 537 01b0 0895      		ret
1265
 538               	/* epilogue end (size=1) */
1266
 539               	/* function UIMgr_init size 27 (26) */
1267
 540               		.size	UIMgr_init, .-UIMgr_init
1268
 541               	.Lscope8:
1269
 542               		.stabs	"",36,0,0,.Lscope8-.LFBB8
1270
 543               		.stabd	78,0,0
1271
 544               		.stabs	"UIMgr_convertTokenToValue:f(0,15)",36,0,422,UIMgr_convertTokenToValue
1272
 545               		.type	UIMgr_convertTokenToValue, @function
1273
 546               	UIMgr_convertTokenToValue:
1274
 547               		.stabd	46,0,0
1275
 548               		.stabn	68,0,422,.LM57-.LFBB9
1276
 549               	.LM57:
1277
 550               	.LFBB9:
1278
 551               	/* prologue: frame size=0 */
1279
 552               	/* prologue end (size=0) */
1280
 553               		.stabn	68,0,425,.LM58-.LFBB9
1281
 554               	.LM58:
1282
 555 01b2 80E0      		ldi r24,lo8(asciiTokenBuffer)
1283
 556 01b4 90E0      		ldi r25,hi8(asciiTokenBuffer)
1284
 557 01b6 00D0      		rcall atoi
1285
 558 01b8 9C01      		movw r18,r24
1286
 559               		.stabn	68,0,426,.LM59-.LFBB9
1287
 560               	.LM59:
1288
 561 01ba 8F3F      		cpi r24,255
1289
 562 01bc 9105      		cpc r25,__zero_reg__
1290
 563 01be 01F0      		breq .L61
1291
 564 01c0 00F0      		brlo .L61
1292
 565               		.stabn	68,0,429,.LM60-.LFBB9
1293
 566               	.LM60:
1294
 567 01c2 89E0      		ldi r24,lo8(9)
1295
 568 01c4 8093 0000 		sts receivedCmd,r24
1296
 569               		.stabn	68,0,430,.LM61-.LFBB9
1297
 570               	.LM61:
1298
 571 01c8 8091 0000 		lds r24,tokenCount
1299
 572 01cc E0E0      		ldi r30,lo8(tokenBuffer)
1300
 573 01ce F0E0      		ldi r31,hi8(tokenBuffer)
1301
 574 01d0 E80F      		add r30,r24
1302
 575 01d2 F11D      		adc r31,__zero_reg__
1303
 576 01d4 8FEF      		ldi r24,lo8(-1)
1304
 577 01d6 8083      		st Z,r24
1305
 578 01d8 00C0      		rjmp .L63
1306
 579               	.L61:
1307
 580               		.stabn	68,0,435,.LM62-.LFBB9
1308
 581               	.LM62:
1309
 582 01da 8091 0000 		lds r24,tokenCount
1310
 583 01de E0E0      		ldi r30,lo8(tokenBuffer)
1311
 584 01e0 F0E0      		ldi r31,hi8(tokenBuffer)
1312
 585 01e2 E80F      		add r30,r24
1313
 586 01e4 F11D      		adc r31,__zero_reg__
1314
 587 01e6 2083      		st Z,r18
1315
 588               	.L63:
1316
 589               		.stabn	68,0,437,.LM63-.LFBB9
1317
 590               	.LM63:
1318
 591 01e8 83E0      		ldi r24,lo8(3)
1319
 592 01ea E0E0      		ldi r30,lo8(asciiTokenBuffer)
1320
 593 01ec F0E0      		ldi r31,hi8(asciiTokenBuffer)
1321
GAS LISTING /tmp/ccs6Vjbf.s 			page 23
151 kaklik 1322
 
1323
 
484 kaklik 1324
 594 01ee 1192      		st Z+,__zero_reg__
1325
 595 01f0 8A95      	        dec r24
1326
 596 01f2 01F4      		brne .-6
1327
 597               		.stabn	68,0,438,.LM64-.LFBB9
1328
 598               	.LM64:
1329
 599 01f4 1092 0000 		sts charIndex,__zero_reg__
1330
 600               		.stabn	68,0,439,.LM65-.LFBB9
1331
 601               	.LM65:
1332
 602 01f8 1092 0000 		sts charCount,__zero_reg__
1333
 603               	/* epilogue: frame size=0 */
1334
 604 01fc 0895      		ret
1335
 605               	/* epilogue end (size=1) */
1336
 606               	/* function UIMgr_convertTokenToValue size 38 (37) */
1337
 607               		.size	UIMgr_convertTokenToValue, .-UIMgr_convertTokenToValue
1338
 608               		.stabs	"newValue:r(0,4)",64,0,423,18
1339
 609               		.stabn	192,0,0,.LFBB9-.LFBB9
1340
 610               		.stabn	224,0,0,.Lscope9-.LFBB9
1341
 611               	.Lscope9:
1342
 612               		.stabs	"",36,0,0,.Lscope9-.LFBB9
1343
 613               		.stabd	78,0,0
1344
 614               		.stabs	"UIMgr_processReceivedData:F(0,15)",36,0,193,UIMgr_processReceivedData
1345
 615               	.global	UIMgr_processReceivedData
1346
 616               		.type	UIMgr_processReceivedData, @function
1347
 617               	UIMgr_processReceivedData:
1348
 618               		.stabd	46,0,0
1349
 619               		.stabn	68,0,193,.LM66-.LFBB10
1350
 620               	.LM66:
1351
 621               	.LFBB10:
1352
 622               	/* prologue: frame size=0 */
1353
 623 01fe 6F92      		push r6
1354
 624 0200 7F92      		push r7
1355
 625 0202 8F92      		push r8
1356
 626 0204 9F92      		push r9
1357
 627 0206 AF92      		push r10
1358
 628 0208 BF92      		push r11
1359
 629 020a CF92      		push r12
1360
 630 020c DF92      		push r13
1361
 631 020e EF92      		push r14
1362
 632 0210 FF92      		push r15
1363
 633 0212 1F93      		push r17
1364
 634 0214 CF93      		push r28
1365
 635 0216 DF93      		push r29
1366
 636               	/* prologue end (size=13) */
1367
 637               	.LBB22:
1368
 638               	.LBB23:
1369
 639               		.stabn	68,0,613,.LM67-.LFBB10
1370
 640               	.LM67:
1371
 641 0218 0F2E      		mov __tmp_reg__,r31
1372
 642 021a F0E0      		ldi r31,lo8(UIMgr_rxFifo)
1373
 643 021c CF2E      		mov r12,r31
1374
 644 021e F0E0      		ldi r31,hi8(UIMgr_rxFifo)
1375
 645 0220 DF2E      		mov r13,r31
1376
 646 0222 F02D      		mov r31,__tmp_reg__
1377
 647               	.LBE23:
1378
 648               	.LBE22:
1379
 649               		.stabn	68,0,276,.LM68-.LFBB10
1380
 650               	.LM68:
1381
GAS LISTING /tmp/ccs6Vjbf.s 			page 24
151 kaklik 1382
 
1383
 
484 kaklik 1384
 651 0224 0F2E      		mov __tmp_reg__,r31
1385
 652 0226 F0E0      		ldi r31,lo8(asciiTokenBuffer)
1386
 653 0228 AF2E      		mov r10,r31
1387
 654 022a F0E0      		ldi r31,hi8(asciiTokenBuffer)
1388
 655 022c BF2E      		mov r11,r31
1389
 656 022e F02D      		mov r31,__tmp_reg__
1390
 657               		.stabn	68,0,236,.LM69-.LFBB10
1391
 658               	.LM69:
1392
 659 0230 0F2E      		mov __tmp_reg__,r31
1393
 660 0232 F0E0      		ldi r31,lo8(tokenBuffer)
1394
 661 0234 EF2E      		mov r14,r31
1395
 662 0236 F0E0      		ldi r31,hi8(tokenBuffer)
1396
 663 0238 FF2E      		mov r15,r31
1397
 664 023a F02D      		mov r31,__tmp_reg__
1398
 665               	.LBB25:
1399
 666               	.LBB26:
1400
 667               		.stabn	68,0,369,.LM70-.LFBB10
1401
 668               	.LM70:
1402
 669 023c 0F2E      		mov __tmp_reg__,r31
1403
 670 023e F0E0      		ldi r31,lo8(colorMap)
1404
 671 0240 8F2E      		mov r8,r31
1405
 672 0242 F0E0      		ldi r31,hi8(colorMap)
1406
 673 0244 9F2E      		mov r9,r31
1407
 674 0246 F02D      		mov r31,__tmp_reg__
1408
 675               		.stabn	68,0,322,.LM71-.LFBB10
1409
 676               	.LM71:
1410
 677 0248 0F2E      		mov __tmp_reg__,r31
1411
 678 024a F0E0      		ldi r31,lo8(AVRcamVersion)
1412
 679 024c 6F2E      		mov r6,r31
1413
 680 024e F0E0      		ldi r31,hi8(AVRcamVersion)
1414
 681 0250 7F2E      		mov r7,r31
1415
 682 0252 F02D      		mov r31,__tmp_reg__
1416
 683 0254 00C0      		rjmp .L119
1417
 684               	.L67:
1418
 685               	.LBE26:
1419
 686               	.LBE25:
1420
 687               	.LBB42:
1421
 688               	.LBB24:
1422
 689               		.stabn	68,0,612,.LM72-.LFBB10
1423
 690               	.LM72:
1424
 691               	/* #APP */
1425
 692 0256 F894      		cli
1426
 693               		.stabn	68,0,613,.LM73-.LFBB10
1427
 694               	.LM73:
1428
 695               	/* #NOAPP */
1429
 696 0258 F601      		movw r30,r12
1430
 697 025a E90F      		add r30,r25
1431
 698 025c F11D      		adc r31,__zero_reg__
1432
 699 025e 2081      		ld r18,Z
1433
 700               		.stabn	68,0,615,.LM74-.LFBB10
1434
 701               	.LM74:
1435
 702 0260 892F      		mov r24,r25
1436
 703 0262 8F5F      		subi r24,lo8(-(1))
1437
 704 0264 8F71      		andi r24,lo8(31)
1438
 705 0266 8093 0000 		sts UIMgr_rxFifoTail,r24
1439
 706               		.stabn	68,0,616,.LM75-.LFBB10
1440
 707               	.LM75:
1441
GAS LISTING /tmp/ccs6Vjbf.s 			page 25
151 kaklik 1442
 
1443
 
484 kaklik 1444
 708               	/* #APP */
1445
 709 026a 7894      		sei
1446
 710               	/* #NOAPP */
1447
 711               	.LBE24:
1448
 712               	.LBE42:
1449
 713               		.stabn	68,0,202,.LM76-.LFBB10
1450
 714               	.LM76:
1451
 715 026c 2D30      		cpi r18,lo8(13)
1452
 716 026e 01F0      		breq .+2
1453
 717 0270 00C0      		rjmp .L68
1454
 718               		.stabn	68,0,205,.LM77-.LFBB10
1455
 719               	.LM77:
1456
 720 0272 8091 0000 		lds r24,tokenCount
1457
 721 0276 8823      		tst r24
1458
 722 0278 01F4      		brne .L70
1459
 723               		.stabn	68,0,208,.LM78-.LFBB10
1460
 724               	.LM78:
1461
 725 027a 00D0      		rcall UIMgr_convertTokenToCmd
1462
 726 027c 00C0      		rjmp .L72
1463
 727               	.L70:
1464
 728               		.stabn	68,0,213,.LM79-.LFBB10
1465
 729               	.LM79:
1466
 730 027e 00D0      		rcall UIMgr_convertTokenToValue
1467
 731               		.stabn	68,0,214,.LM80-.LFBB10
1468
 732               	.LM80:
1469
 733 0280 8091 0000 		lds r24,tokenCount
1470
 734 0284 8F5F      		subi r24,lo8(-(1))
1471
 735 0286 8093 0000 		sts tokenCount,r24
1472
 736               	.L72:
1473
 737               		.stabn	68,0,218,.LM81-.LFBB10
1474
 738               	.LM81:
1475
 739 028a 84E6      		ldi r24,lo8(100)
1476
 740 028c 90E0      		ldi r25,hi8(100)
1477
 741 028e 00D0      		rcall Utility_delay
1478
 742               		.stabn	68,0,219,.LM82-.LFBB10
1479
 743               	.LM82:
1480
 744 0290 8091 0000 		lds r24,receivedCmd
1481
 745 0294 8850      		subi r24,lo8(-(-8))
1482
 746 0296 8230      		cpi r24,lo8(2)
1483
 747 0298 00F4      		brsh .L73
1484
 748               	.LBB43:
1485
 749               	.LBB44:
1486
 750               		.stabn	68,0,531,.LM83-.LFBB10
1487
 751               	.LM83:
1488
 752 029a 8EE4      		ldi r24,lo8(78)
1489
 753 029c 00D0      		rcall UIMgr_writeTxFifo
1490
 754               		.stabn	68,0,532,.LM84-.LFBB10
1491
 755               	.LM84:
1492
 756 029e 83E4      		ldi r24,lo8(67)
1493
 757 02a0 00D0      		rcall UIMgr_writeTxFifo
1494
 758               		.stabn	68,0,533,.LM85-.LFBB10
1495
 759               	.LM85:
1496
 760 02a2 8BE4      		ldi r24,lo8(75)
1497
 761 02a4 00D0      		rcall UIMgr_writeTxFifo
1498
 762               		.stabn	68,0,534,.LM86-.LFBB10
1499
 763               	.LM86:
1500
 764 02a6 8DE0      		ldi r24,lo8(13)
1501
GAS LISTING /tmp/ccs6Vjbf.s 			page 26
151 kaklik 1502
 
1503
 
484 kaklik 1504
 765 02a8 00D0      		rcall UIMgr_writeTxFifo
1505
 766               	.LBE44:
1506
 767               	.LBE43:
1507
 768               		.stabn	68,0,223,.LM87-.LFBB10
1508
 769               	.LM87:
1509
 770 02aa 80E9      		ldi r24,lo8(-112)
1510
 771 02ac 00D0      		rcall Exec_writeEventFifo
1511
 772 02ae 00C0      		rjmp .L75
1512
 773               	.L73:
1513
 774               	.LBB45:
1514
 775               	.LBB46:
1515
 776               		.stabn	68,0,516,.LM88-.LFBB10
1516
 777               	.LM88:
1517
 778 02b0 81E4      		ldi r24,lo8(65)
1518
 779 02b2 00D0      		rcall UIMgr_writeTxFifo
1519
 780               		.stabn	68,0,517,.LM89-.LFBB10
1520
 781               	.LM89:
1521
 782 02b4 83E4      		ldi r24,lo8(67)
1522
 783 02b6 00D0      		rcall UIMgr_writeTxFifo
1523
 784               		.stabn	68,0,518,.LM90-.LFBB10
1524
 785               	.LM90:
1525
 786 02b8 8BE4      		ldi r24,lo8(75)
1526
 787 02ba 00D0      		rcall UIMgr_writeTxFifo
1527
 788               		.stabn	68,0,519,.LM91-.LFBB10
1528
 789               	.LM91:
1529
 790 02bc 8DE0      		ldi r24,lo8(13)
1530
 791 02be 00D0      		rcall UIMgr_writeTxFifo
1531
 792               	.LBE46:
1532
 793               	.LBE45:
1533
 794               		.stabn	68,0,230,.LM92-.LFBB10
1534
 795               	.LM92:
1535
 796 02c0 80E9      		ldi r24,lo8(-112)
1536
 797 02c2 00D0      		rcall Exec_writeEventFifo
1537
 798               	.LBB47:
1538
 799               	.LBB41:
1539
 800               		.stabn	68,0,316,.LM93-.LFBB10
1540
 801               	.LM93:
1541
 802 02c4 8091 0000 		lds r24,receivedCmd
1542
 803 02c8 8130      		cpi r24,lo8(1)
1543
 804 02ca 01F4      		brne .+2
1544
 805 02cc 00C0      		rjmp .L75
1545
 806               		.stabn	68,0,319,.LM94-.LFBB10
1546
 807               	.LM94:
1547
 808 02ce 8823      		tst r24
1548
 809 02d0 01F4      		brne .L77
1549
 810               		.stabn	68,0,322,.LM95-.LFBB10
1550
 811               	.LM95:
1551
 812 02d2 8091 0000 		lds r24,AVRcamVersion
1552
 813 02d6 8823      		tst r24
1553
 814 02d8 01F4      		brne .+2
1554
 815 02da 00C0      		rjmp .L75
1555
 816 02dc E301      		movw r28,r6
1556
 817               	.L80:
1557
 818               		.stabn	68,0,324,.LM96-.LFBB10
1558
 819               	.LM96:
1559
 820 02de 2196      		adiw r28,1
1560
 821 02e0 00D0      		rcall UIMgr_writeTxFifo
1561
GAS LISTING /tmp/ccs6Vjbf.s 			page 27
151 kaklik 1562
 
1563
 
484 kaklik 1564
 822               		.stabn	68,0,322,.LM97-.LFBB10
1565
 823               	.LM97:
1566
 824 02e2 8881      		ld r24,Y
1567
 825 02e4 8823      		tst r24
1568
 826 02e6 01F4      		brne .+2
1569
 827 02e8 00C0      		rjmp .L75
1570
 828 02ea 00C0      		rjmp .L80
1571
 829               	.L77:
1572
 830               		.stabn	68,0,327,.LM98-.LFBB10
1573
 831               	.LM98:
1574
 832 02ec 8730      		cpi r24,lo8(7)
1575
 833 02ee 01F4      		brne .L81
1576
 834               		.stabn	68,0,329,.LM99-.LFBB10
1577
 835               	.LM99:
1578
 836 02f0 00D0      		rcall CamInt_resetCam
1579
 837 02f2 00C0      		rjmp .L75
1580
 838               	.L81:
1581
 839               		.stabn	68,0,331,.LM100-.LFBB10
1582
 840               	.LM100:
1583
 841 02f4 8330      		cpi r24,lo8(3)
1584
 842 02f6 01F4      		brne .L83
1585
 843               		.stabn	68,0,340,.LM101-.LFBB10
1586
 844               	.LM101:
1587
 845 02f8 84E6      		ldi r24,lo8(100)
1588
 846 02fa 90E0      		ldi r25,hi8(100)
1589
 847 02fc 00D0      		rcall Utility_delay
1590
 848               		.stabn	68,0,341,.LM102-.LFBB10
1591
 849               	.LM102:
1592
 850 02fe 82E0      		ldi r24,lo8(2)
1593
 851 0300 00D0      		rcall Exec_writeEventFifo
1594
 852 0302 00C0      		rjmp .L75
1595
 853               	.L83:
1596
 854               		.stabn	68,0,343,.LM103-.LFBB10
1597
 855               	.LM103:
1598
 856 0304 8230      		cpi r24,lo8(2)
1599
 857 0306 01F4      		brne .L85
1600
 858               		.stabn	68,0,347,.LM104-.LFBB10
1601
 859               	.LM104:
1602
 860 0308 8091 0000 		lds r24,tokenCount
1603
 861 030c 8230      		cpi r24,lo8(2)
1604
 862 030e 00F0      		brlo .L87
1605
 863 0310 11E0      		ldi r17,lo8(1)
1606
 864               	.L89:
1607
 865               		.stabn	68,0,350,.LM105-.LFBB10
1608
 866               	.LM105:
1609
 867 0312 F701      		movw r30,r14
1610
 868 0314 E10F      		add r30,r17
1611
 869 0316 F11D      		adc r31,__zero_reg__
1612
 870 0318 6181      		ldd r22,Z+1
1613
 871 031a 8081      		ld r24,Z
1614
 872 031c 00D0      		rcall CamConfig_setCamReg
1615
 873               		.stabn	68,0,347,.LM106-.LFBB10
1616
 874               	.LM106:
1617
 875 031e 1E5F      		subi r17,lo8(-(2))
1618
 876 0320 8091 0000 		lds r24,tokenCount
1619
 877 0324 1817      		cp r17,r24
1620
 878 0326 00F0      		brlo .L89
1621
GAS LISTING /tmp/ccs6Vjbf.s 			page 28
151 kaklik 1622
 
1623
 
484 kaklik 1624
 879               	.L87:
1625
 880               		.stabn	68,0,352,.LM107-.LFBB10
1626
 881               	.LM107:
1627
 882 0328 00D0      		rcall CamConfig_sendFifoCmds
1628
 883 032a 00C0      		rjmp .L75
1629
 884               	.L85:
1630
 885               		.stabn	68,0,354,.LM108-.LFBB10
1631
 886               	.LM108:
1632
 887 032c 8430      		cpi r24,lo8(4)
1633
 888 032e 01F4      		brne .L90
1634
 889               		.stabn	68,0,357,.LM109-.LFBB10
1635
 890               	.LM109:
1636
 891 0330 84E6      		ldi r24,lo8(100)
1637
 892 0332 90E0      		ldi r25,hi8(100)
1638
 893 0334 00D0      		rcall Utility_delay
1639
 894               		.stabn	68,0,358,.LM110-.LFBB10
1640
 895               	.LM110:
1641
 896 0336 80E8      		ldi r24,lo8(-128)
1642
 897 0338 00D0      		rcall Exec_writeEventFifo
1643
 898 033a 00C0      		rjmp .L75
1644
 899               	.L90:
1645
 900               		.stabn	68,0,360,.LM111-.LFBB10
1646
 901               	.LM111:
1647
 902 033c 8530      		cpi r24,lo8(5)
1648
 903 033e 01F4      		brne .L92
1649
 904               		.stabn	68,0,362,.LM112-.LFBB10
1650
 905               	.LM112:
1651
 906 0340 81E8      		ldi r24,lo8(-127)
1652
 907 0342 00D0      		rcall Exec_writeEventFifo
1653
 908 0344 00C0      		rjmp .L75
1654
 909               	.L92:
1655
 910               		.stabn	68,0,364,.LM113-.LFBB10
1656
 911               	.LM113:
1657
 912 0346 8630      		cpi r24,lo8(6)
1658
 913 0348 01F0      		breq .+2
1659
 914 034a 00C0      		rjmp .L75
1660
 915               		.stabn	68,0,367,.LM114-.LFBB10
1661
 916               	.LM114:
1662
 917 034c 8091 0000 		lds r24,tokenCount
1663
 918 0350 8823      		tst r24
1664
 919 0352 01F0      		breq .L75
1665
 920 0354 40E0      		ldi r20,lo8(0)
1666
 921               	.L96:
1667
 922               		.stabn	68,0,369,.LM115-.LFBB10
1668
 923               	.LM115:
1669
 924 0356 842F      		mov r24,r20
1670
 925 0358 9927      		clr r25
1671
 926 035a 9C01      		movw r18,r24
1672
 927 035c 2F5F      		subi r18,lo8(-(1))
1673
 928 035e 3F4F      		sbci r19,hi8(-(1))
1674
 929 0360 F901      		movw r30,r18
1675
 930 0362 EE0D      		add r30,r14
1676
 931 0364 FF1D      		adc r31,r15
1677
 932 0366 E081      		ld r30,Z
1678
 933 0368 EC01      		movw r28,r24
1679
 934 036a C80D      		add r28,r8
1680
 935 036c D91D      		adc r29,r9
1681
GAS LISTING /tmp/ccs6Vjbf.s 			page 29
151 kaklik 1682
 
1683
 
484 kaklik 1684
 936 036e E883      		st Y,r30
1685
 937               	.LBB27:
1686
 938               	.LBB28:
1687
 939               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h",132,0,0,.Ltext1
1688
 940               	.Ltext1:
1689
   1:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /* Copyright (c) 2002, 2003, 2004 Marek Michalkiewicz
1690
   2:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    Copyright (c) 2005, 2006 Bjoern Haase
1691
   3:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    All rights reserved.
1692
   4:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1693
   5:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    Redistribution and use in source and binary forms, with or without
1694
   6:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    modification, are permitted provided that the following conditions are met:
1695
   7:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1696
   8:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    * Redistributions of source code must retain the above copyright
1697
   9:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      notice, this list of conditions and the following disclaimer.
1698
  10:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1699
  11:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    * Redistributions in binary form must reproduce the above copyright
1700
  12:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      notice, this list of conditions and the following disclaimer in
1701
  13:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      the documentation and/or other materials provided with the
1702
  14:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      distribution.
1703
  15:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1704
  16:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    * Neither the name of the copyright holders nor the names of
1705
  17:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      contributors may be used to endorse or promote products derived
1706
  18:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      from this software without specific prior written permission.
1707
  19:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1708
  20:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
1709
  21:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1710
  22:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1711
  23:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
1712
  24:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1713
  25:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1714
  26:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1715
  27:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1716
  28:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1717
  29:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1718
  30:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   POSSIBILITY OF SUCH DAMAGE. */
1719
  31:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1720
  32:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /* $Id: eeprom.h,v 1.17.2.3 2006/05/23 17:18:23 aesok Exp $ */
1721
  33:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1722
  34:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /*
1723
  35:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    eeprom.h
1724
  36:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1725
  37:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    Contributors:
1726
  38:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      Created by Marek Michalkiewicz <marekm@linux.org.pl>
1727
  39:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      eeprom_write_word and eeprom_write_block added by Artur Lipowski 
1728
  40:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      <LAL@pro.onet.pl>
1729
  41:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      Complete rewrite using the original interface by Bjoern Haase 
1730
  42:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      <bjoern.haase@de.bosch.com>. 
1731
  43:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****  */
1732
  44:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1733
  45:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #ifndef _EEPROM_H_
1734
  46:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define _EEPROM_H_ 1
1735
  47:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1736
  48:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define __need_size_t
1737
  49:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #include <stddef.h>
1738
  50:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #include <inttypes.h>
1739
  51:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1740
  52:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1741
GAS LISTING /tmp/ccs6Vjbf.s 			page 30
151 kaklik 1742
 
1743
 
484 kaklik 1744
  53:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #ifdef __AVR_MEGA__
1745
  54:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define XCALL "call"
1746
  55:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #else
1747
  56:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define XCALL "rcall"
1748
  57:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #endif
1749
  58:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1750
  59:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #include <avr/io.h>
1751
  60:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #ifndef __EEPROM_REG_LOCATIONS__
1752
  61:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \def __EEPROM_REG_LOCATIONS__
1753
  62:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
1754
  63:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      In order to be able to work without a requiring a multilib 
1755
  64:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      approach for dealing with controllers having the EEPROM registers
1756
  65:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      at different positions in memory space, the eeprom functions evaluate
1757
  66:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      __EEPROM_REG_LOCATIONS__: It is assumed to be defined by
1758
  67:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      the device io header and contains 6 uppercase hex digits encoding the 
1759
  68:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      addresses of EECR,EEDR and EEAR. 
1760
  69:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      First two letters:  EECR address.
1761
  70:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      Second two letters: EEDR address.
1762
  71:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      Last two letters:   EEAR address.
1763
  72:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      The default 1C1D1E corresponds to the
1764
  73:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      register location that is valid for most controllers. The value
1765
  74:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      of this define symbol is used for appending it to the base name of the
1766
  75:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      assembler functions.  */
1767
  76:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define __EEPROM_REG_LOCATIONS__ 1C1D1E
1768
  77:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #endif
1769
  78:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define _STR2(EXP) _STR1(EXP)
1770
  79:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define _STR1(EXP) #EXP
1771
  80:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define _REG_LOCATION_SUFFIX _STR2(__EEPROM_REG_LOCATIONS__)
1772
  81:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1773
  82:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #ifndef CR_TAB
1774
  83:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define CR_TAB "\n\t"
1775
  84:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #endif
1776
  85:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1777
  86:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1778
  87:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \defgroup avr_eeprom <avr/eeprom.h>: EEPROM handling
1779
  88:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \code #include <avr/eeprom.h> \endcode
1780
  89:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1781
  90:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     This header file declares the interface to some simple library
1782
  91:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     routines suitable for handling the data EEPROM contained in the
1783
  92:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     AVR microcontrollers.  The implementation uses a simple polled
1784
  93:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     mode interface.  Applications that require interrupt-controlled
1785
  94:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     EEPROM access to ensure that no time will be wasted in spinloops
1786
  95:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     will have to deploy their own implementation.
1787
  96:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1788
  97:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \note All of the read/write functions first make sure the EEPROM
1789
  98:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      is ready to be accessed.  Since this may cause long delays if a
1790
  99:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      write operation is still pending, time-critical applications
1791
 100:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      should first poll the EEPROM e. g. using eeprom_is_ready() before
1792
 101:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      attempting any actual I/O.
1793
 102:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1794
 103:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \note This header file declares inline functions that call the
1795
 104:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      assembler subroutines directly. This prevents that the compiler
1796
 105:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      generates push/pops for the call-clobbered registers. This way
1797
 106:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      also a specific calling convention could be used for the eeprom
1798
 107:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      routines e.g. by passing values in __tmp_reg__, eeprom addresses in
1799
 108:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      X and memory addresses in Z registers. Method is optimized for code 
1800
 109:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      size.
1801
GAS LISTING /tmp/ccs6Vjbf.s 			page 31
151 kaklik 1802
 
1803
 
484 kaklik 1804
 110:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1805
 111:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \note Presently supported are two locations of the EEPROM register
1806
 112:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      set: 0x1F,0x20,0x21 and 0x1C,0x1D,0x1E 
1807
 113:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      (see ::__EEPROM_REG_LOCATIONS__).
1808
 114:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1809
 115:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \note As these functions modify IO registers, they are known to be
1810
 116:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      non-reentrant.  If any of these functions are used from both,
1811
 117:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      standard and interrupt context, the applications must ensure
1812
 118:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      proper protection (e.g. by disabling interrupts before accessing
1813
 119:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      them).
1814
 120:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1815
 121:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** */
1816
 122:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1817
 123:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1818
 124:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /* forward declarations of the inline functions so that doxygen does
1819
 125:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    not get confused by the attribute expression.  */
1820
 126:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1821
 127:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline uint8_t __attribute__ ((always_inline))
1822
 128:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr);
1823
 129:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1824
 130:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline uint16_t __attribute__ ((always_inline)) 
1825
 131:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr);
1826
 132:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1827
 133:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
1828
 134:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
1829
 135:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                    const void *pointer_eeprom,
1830
 136:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                    size_t size);
1831
 137:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1832
 138:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
1833
 139:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_write_byte (uint8_t *addr,uint8_t value);
1834
 140:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1835
 141:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
1836
 142:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_write_word (uint16_t *addr,uint16_t value);
1837
 143:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1838
 144:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
1839
 145:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_write_block (const void *pointer_ram,
1840
 146:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                     void *pointer_eeprom,
1841
 147:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                     size_t size);
1842
 148:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1843
 149:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \name avr-libc declarations */
1844
 150:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1845
 151:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /*@{*/
1846
 152:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1847
 153:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \def EEMEM
1848
 154:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
1849
 155:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Attribute expression causing a variable to be allocated within the .eeprom
1850
 156:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      section.  */
1851
 157:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define EEMEM __attribute__((section(".eeprom")))
1852
 158:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1853
 159:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \def eeprom_is_ready
1854
 160:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
1855
 161:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \returns 1 if EEPROM is ready for a new read/write operation, 0 if not. */
1856
 162:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1857
 163:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #if defined(__DOXYGEN__)
1858
 164:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready()
1859
 165:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #elif defined(EEWE)
1860
 166:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEWE)
1861
GAS LISTING /tmp/ccs6Vjbf.s 			page 32
151 kaklik 1862
 
1863
 
484 kaklik 1864
 167:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #elif defined(EEPE)
1865
 168:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEPE)
1866
 169:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #elif defined(DEECR) && defined(EEL)
1867
 170:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(DEECR, EEL)
1868
 171:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #else
1869
 172:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # error "No write enable bit known for this device's EEPROM."
1870
 173:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #endif
1871
 174:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1872
 175:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \def eeprom_busy_wait
1873
 176:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
1874
 177:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1875
 178:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Loops until the eeprom is no longer busy.
1876
 179:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1877
 180:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \returns Nothing. */
1878
 181:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1879
 182:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define eeprom_busy_wait() do {} while (!eeprom_is_ready())
1880
 183:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1881
 184:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1882
 185:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
1883
 186:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Read one byte from EEPROM address \c addr. */
1884
 187:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1885
 188:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** uint8_t 
1886
 189:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr) 
1887
 190:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** {
1888
 191:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   uint8_t result;
1889
 192:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   __asm__ __volatile__
1890
 941               		.stabn	68,0,192,.LM116-.LFBB10
1891
 942               	.LM116:
1892
 943 0370 D901      		movw r26,r18
1893
 944               	/* #APP */
1894
 945 0372 00D0      		rcall __eeprom_read_byte_1C1D1E
1895
 946 0374 802D      		mov r24,__tmp_reg__
1896
 947               	/* #NOAPP */
1897
 948               	.LBE28:
1898
 949               	.LBE27:
1899
 950               		.stabs	"UIMgr.c",132,0,0,.Ltext2
1900
 951               	.Ltext2:
1901
 952               		.stabn	68,0,374,.LM117-.LFBB10
1902
 953               	.LM117:
1903
 954 0376 E817      		cp r30,r24
1904
 955 0378 01F0      		breq .L97
1905
 956               	.LBB29:
1906
 957               	.LBB31:
1907
 958               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h",132,0,0,.Ltext3
1908
 959               	.Ltext3:
1909
 193:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       ( XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
1910
 194:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****         "mov %1,__tmp_reg__"
1911
 195:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****        : "+x" (addr),
1912
 196:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****          "=r" (result)
1913
 197:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****        : );
1914
 198:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   return result;
1915
 199:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** }
1916
 200:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1917
 201:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
1918
 202:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Read one 16-bit word (little endian) from EEPROM address \c addr. */
1919
 203:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** uint16_t
1920
 204:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr)
1921
GAS LISTING /tmp/ccs6Vjbf.s 			page 33
151 kaklik 1922
 
1923
 
484 kaklik 1924
 205:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** {
1925
 206:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   uint16_t result;
1926
 207:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1927
 208:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   __asm__ __volatile__ (
1928
 209:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****         XCALL " __eeprom_read_word_" _REG_LOCATION_SUFFIX CR_TAB
1929
 210:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****        : "+x" (addr),
1930
 211:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****          "=z" (result)
1931
 212:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****        : );
1932
 213:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   return result;
1933
 214:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** }
1934
 215:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1935
 216:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
1936
 217:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Read a block of \c n bytes from EEPROM address \c pointer_eeprom to
1937
 218:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \c pointer_ram.  For constant n <= 256 bytes a library function is used.
1938
 219:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     For block sizes unknown at compile time or block sizes > 256 an inline
1939
 220:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     loop is expanded. */
1940
 221:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1941
 222:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** void 
1942
 223:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
1943
 224:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                    const void *pointer_eeprom,
1944
 225:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                    size_t n)
1945
 226:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** {
1946
 227:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   if (!__builtin_constant_p (n)
1947
 228:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       || n > 256)
1948
 229:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     {
1949
 230:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       /* make sure size is a 16 bit variable.  */
1950
 231:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       uint16_t size = n; 
1951
 232:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1952
 233:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       __asm__ __volatile__ ( 
1953
 234:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             ".%=_start:" CR_TAB
1954
 235:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "sbiw %2,1" CR_TAB
1955
 236:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "brlt .%=_finished" CR_TAB
1956
 237:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****              XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
1957
 238:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "st z+,__tmp_reg__" CR_TAB
1958
 239:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "rjmp .%=_start" CR_TAB
1959
 240:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             ".%=_finished:" 
1960
 241:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****           : "=x" (pointer_eeprom),
1961
 242:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "=z" (pointer_ram),
1962
 243:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "+w" (size)
1963
 244:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****            : "x" (pointer_eeprom), 
1964
 245:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****              "z" (pointer_ram)
1965
 246:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****            : "memory");
1966
 247:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     }
1967
 248:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   else
1968
 249:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     {
1969
 250:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       if (n != 0)
1970
 251:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****         {
1971
 252:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****           if (n == 256)
1972
 253:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             {
1973
 254:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               __asm__ __volatile__ (
1974
 255:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                   XCALL " __eeprom_read_block_" _REG_LOCATION_SUFFIX 
1975
 256:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                 : "+x" (pointer_eeprom),
1976
 257:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                   "=z" (pointer_ram)
1977
 258:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                 : "z"  (pointer_ram)
1978
 259:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                 : "memory");
1979
 260:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             }
1980
 261:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****           else
1981
GAS LISTING /tmp/ccs6Vjbf.s 			page 34
151 kaklik 1982
 
1983
 
484 kaklik 1984
 262:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             {
1985
 263:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               /* Needed in order to truncate to 8 bit.  */
1986
 264:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               uint8_t len;
1987
 265:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               len = (uint8_t) n; 
1988
 266:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
1989
 267:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               __asm__ __volatile__ (
1990
 268:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                   "mov __zero_reg__,%2"      CR_TAB
1991
 269:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                    XCALL " __eeprom_read_block_" _REG_LOCATION_SUFFIX 
1992
 270:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                 : "+x" (pointer_eeprom),
1993
 271:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                   "=z" (pointer_ram)
1994
 272:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                 : "r"  (len),
1995
 273:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                   "z"  (pointer_ram)
1996
 274:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                 : "memory");
1997
 275:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             }
1998
 276:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****         }
1999
 277:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     }
2000
 278:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** }
2001
 279:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
2002
 280:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
2003
 281:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Write a byte \c value to EEPROM address \c addr. */
2004
 282:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
2005
 283:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** void 
2006
 284:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_write_byte (uint8_t *addr,uint8_t value)
2007
 285:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** {
2008
 286:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   __asm__ __volatile__ (
2009
 960               		.stabn	68,0,286,.LM118-.LFBB10
2010
 961               	.LM118:
2011
 962 037a D901      		movw r26,r18
2012
 963               	/* #APP */
2013
 964 037c 0E2E      		mov __tmp_reg__,r30
2014
 965 037e 00D0      		rcall __eeprom_write_byte_1C1D1E
2015
 966               	/* #NOAPP */
2016
 967               	.LBE31:
2017
 968               	.LBE29:
2018
 969               	.LBB33:
2019
 970               	.LBB35:
2020
 971               		.stabn	68,0,192,.LM119-.LFBB10
2021
 972               	.LM119:
2022
 973 0380 D901      		movw r26,r18
2023
 974               	/* #APP */
2024
 975 0382 00D0      		rcall __eeprom_read_byte_1C1D1E
2025
 976 0384 802D      		mov r24,__tmp_reg__
2026
 977               	/* #NOAPP */
2027
 978               	.LBE35:
2028
 979               	.LBE33:
2029
 980               		.stabs	"UIMgr.c",132,0,0,.Ltext4
2030
 981               	.Ltext4:
2031
 982               		.stabn	68,0,384,.LM120-.LFBB10
2032
 983               	.LM120:
2033
 984 0386 9881      		ld r25,Y
2034
 985               		.stabn	68,0,379,.LM121-.LFBB10
2035
 986               	.LM121:
2036
 987 0388 8917      		cp r24,r25
2037
 988 038a 01F0      		breq .L97
2038
 989               	.LBB37:
2039
 990               	.LBB30:
2040
 991               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h",132,0,0,.Ltext5
2041
GAS LISTING /tmp/ccs6Vjbf.s 			page 35
151 kaklik 2042
 
2043
 
484 kaklik 2044
 992               	.Ltext5:
2045
 993               		.stabn	68,0,286,.LM122-.LFBB10
2046
 994               	.LM122:
2047
 995 038c D901      		movw r26,r18
2048
 996               	/* #APP */
2049
 997 038e 092E      		mov __tmp_reg__,r25
2050
 998 0390 00D0      		rcall __eeprom_write_byte_1C1D1E
2051
 999               	/* #NOAPP */
2052
 1000               	.LBE30:
2053
 1001               	.LBE37:
2054
 1002               	.LBB38:
2055
 1003               	.LBB34:
2056
 1004               		.stabn	68,0,192,.LM123-.LFBB10
2057
 1005               	.LM123:
2058
 1006 0392 D901      		movw r26,r18
2059
 1007               	/* #APP */
2060
 1008 0394 00D0      		rcall __eeprom_read_byte_1C1D1E
2061
 1009 0396 802D      		mov r24,__tmp_reg__
2062
 1010               	/* #NOAPP */
2063
 1011               	.LBE34:
2064
 1012               	.LBE38:
2065
 1013               		.stabs	"UIMgr.c",132,0,0,.Ltext6
2066
 1014               	.Ltext6:
2067
 1015               		.stabn	68,0,384,.LM124-.LFBB10
2068
 1016               	.LM124:
2069
 1017 0398 9881      		ld r25,Y
2070
 1018               		.stabn	68,0,379,.LM125-.LFBB10
2071
 1019               	.LM125:
2072
 1020 039a 8917      		cp r24,r25
2073
 1021 039c 01F0      		breq .L97
2074
 1022               	.LBB39:
2075
 1023               	.LBB32:
2076
 1024               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h",132,0,0,.Ltext7
2077
 1025               	.Ltext7:
2078
 1026               		.stabn	68,0,286,.LM126-.LFBB10
2079
 1027               	.LM126:
2080
 1028 039e D901      		movw r26,r18
2081
 1029               	/* #APP */
2082
 1030 03a0 092E      		mov __tmp_reg__,r25
2083
 1031 03a2 00D0      		rcall __eeprom_write_byte_1C1D1E
2084
 1032               	/* #NOAPP */
2085
 1033               	.LBE32:
2086
 1034               	.LBE39:
2087
 1035               	.LBB40:
2088
 1036               	.LBB36:
2089
 1037               		.stabn	68,0,192,.LM127-.LFBB10
2090
 1038               	.LM127:
2091
 1039 03a4 D901      		movw r26,r18
2092
 1040               	/* #APP */
2093
 1041 03a6 00D0      		rcall __eeprom_read_byte_1C1D1E
2094
 1042 03a8 802D      		mov r24,__tmp_reg__
2095
 1043               	/* #NOAPP */
2096
 1044               	.L97:
2097
 1045               	.LBE36:
2098
 1046               	.LBE40:
2099
 1047               		.stabs	"UIMgr.c",132,0,0,.Ltext8
2100
 1048               	.Ltext8:
2101
GAS LISTING /tmp/ccs6Vjbf.s 			page 36
151 kaklik 2102
 
2103
 
484 kaklik 2104
 1049               		.stabn	68,0,367,.LM128-.LFBB10
2105
 1050               	.LM128:
2106
 1051 03aa 4F5F      		subi r20,lo8(-(1))
2107
 1052 03ac 8091 0000 		lds r24,tokenCount
2108
 1053 03b0 4817      		cp r20,r24
2109
 1054 03b2 00F0      		brlo .L96
2110
 1055               	.L75:
2111
 1056               	.LBE41:
2112
 1057               	.LBE47:
2113
 1058               		.stabn	68,0,235,.LM129-.LFBB10
2114
 1059               	.LM129:
2115
 1060 03b4 1092 0000 		sts tokenCount,__zero_reg__
2116
 1061               		.stabn	68,0,236,.LM130-.LFBB10
2117
 1062               	.LM130:
2118
 1063 03b8 80E4      		ldi r24,lo8(64)
2119
 1064 03ba F701      		movw r30,r14
2120
 1065 03bc 1192      		st Z+,__zero_reg__
2121
 1066 03be 8A95      	        dec r24
2122
 1067 03c0 01F4      		brne .-6
2123
 1068 03c2 00C0      		rjmp .L119
2124
 1069               	.L68:
2125
 1070               		.stabn	68,0,238,.LM131-.LFBB10
2126
 1071               	.LM131:
2127
 1072 03c4 2032      		cpi r18,lo8(32)
2128
 1073 03c6 01F4      		brne .L101
2129
 1074               		.stabn	68,0,241,.LM132-.LFBB10
2130
 1075               	.LM132:
2131
 1076 03c8 8091 0000 		lds r24,tokenCount
2132
 1077 03cc 8823      		tst r24
2133
 1078 03ce 01F4      		brne .L103
2134
 1079               		.stabn	68,0,243,.LM133-.LFBB10
2135
 1080               	.LM133:
2136
 1081 03d0 00D0      		rcall UIMgr_convertTokenToCmd
2137
 1082               		.stabn	68,0,244,.LM134-.LFBB10
2138
 1083               	.LM134:
2139
 1084 03d2 8091 0000 		lds r24,tokenCount
2140
 1085 03d6 8F5F      		subi r24,lo8(-(1))
2141
 1086 03d8 8093 0000 		sts tokenCount,r24
2142
 1087 03dc 00C0      		rjmp .L119
2143
 1088               	.L103:
2144
 1089               		.stabn	68,0,254,.LM135-.LFBB10
2145
 1090               	.LM135:
2146
 1091 03de 9927      		clr r25
2147
 1092 03e0 0196      		adiw r24,1
2148
 1093 03e2 8034      		cpi r24,64
2149
 1094 03e4 9105      		cpc r25,__zero_reg__
2150
 1095 03e6 04F0      		brlt .L105
2151
 1096               		.stabn	68,0,259,.LM136-.LFBB10
2152
 1097               	.LM136:
2153
 1098 03e8 1092 0000 		sts charCount,__zero_reg__
2154
 1099               		.stabn	68,0,260,.LM137-.LFBB10
2155
 1100               	.LM137:
2156
 1101 03ec 1092 0000 		sts charIndex,__zero_reg__
2157
 1102               		.stabn	68,0,261,.LM138-.LFBB10
2158
 1103               	.LM138:
2159
 1104 03f0 1092 0000 		sts tokenCount,__zero_reg__
2160
 1105               		.stabn	68,0,262,.LM139-.LFBB10
2161
GAS LISTING /tmp/ccs6Vjbf.s 			page 37
151 kaklik 2162
 
2163
 
484 kaklik 2164
 1106               	.LM139:
2165
 1107 03f4 89E0      		ldi r24,lo8(9)
2166
 1108 03f6 8093 0000 		sts receivedCmd,r24
2167
 1109 03fa 00C0      		rjmp .L119
2168
 1110               	.L105:
2169
 1111               		.stabn	68,0,267,.LM140-.LFBB10
2170
 1112               	.LM140:
2171
 1113 03fc 00D0      		rcall UIMgr_convertTokenToValue
2172
 1114               		.stabn	68,0,268,.LM141-.LFBB10
2173
 1115               	.LM141:
2174
 1116 03fe 8091 0000 		lds r24,tokenCount
2175
 1117 0402 8F5F      		subi r24,lo8(-(1))
2176
 1118 0404 8093 0000 		sts tokenCount,r24
2177
 1119 0408 00C0      		rjmp .L119
2178
 1120               	.L101:
2179
 1121               		.stabn	68,0,272,.LM142-.LFBB10
2180
 1122               	.LM142:
2181
 1123 040a 822F      		mov r24,r18
2182
 1124 040c 8154      		subi r24,lo8(-(-65))
2183
 1125 040e 8A31      		cpi r24,lo8(26)
2184
 1126 0410 00F0      		brlo .L107
2185
 1127 0412 8F5E      		subi r24,lo8(-(17))
2186
 1128 0414 8A30      		cpi r24,lo8(10)
2187
 1129 0416 00F4      		brsh .L109
2188
 1130               	.L107:
2189
 1131               		.stabn	68,0,276,.LM143-.LFBB10
2190
 1132               	.LM143:
2191
 1133 0418 8091 0000 		lds r24,charIndex
2192
 1134 041c F501      		movw r30,r10
2193
 1135 041e E80F      		add r30,r24
2194
 1136 0420 F11D      		adc r31,__zero_reg__
2195
 1137 0422 2083      		st Z,r18
2196
 1138               		.stabn	68,0,277,.LM144-.LFBB10
2197
 1139               	.LM144:
2198
 1140 0424 9091 0000 		lds r25,charCount
2199
 1141 0428 9F5F      		subi r25,lo8(-(1))
2200
 1142 042a 9093 0000 		sts charCount,r25
2201
 1143               		.stabn	68,0,278,.LM145-.LFBB10
2202
 1144               	.LM145:
2203
 1145 042e 8F5F      		subi r24,lo8(-(1))
2204
 1146 0430 8093 0000 		sts charIndex,r24
2205
 1147               		.stabn	68,0,279,.LM146-.LFBB10
2206
 1148               	.LM146:
2207
 1149 0434 9430      		cpi r25,lo8(4)
2208
 1150 0436 00F0      		brlo .L119
2209
 1151               		.stabn	68,0,284,.LM147-.LFBB10
2210
 1152               	.LM147:
2211
 1153 0438 89E0      		ldi r24,lo8(9)
2212
 1154 043a 8093 0000 		sts receivedCmd,r24
2213
 1155               		.stabn	68,0,285,.LM148-.LFBB10
2214
 1156               	.LM148:
2215
 1157 043e 1092 0000 		sts charIndex,__zero_reg__
2216
 1158 0442 00C0      		rjmp .L119
2217
 1159               	.L109:
2218
 1160               		.stabn	68,0,291,.LM149-.LFBB10
2219
 1161               	.LM149:
2220
 1162 0444 89E0      		ldi r24,lo8(9)
2221
GAS LISTING /tmp/ccs6Vjbf.s 			page 38
151 kaklik 2222
 
2223
 
484 kaklik 2224
 1163 0446 8093 0000 		sts receivedCmd,r24
2225
 1164               	.L119:
2226
 1165               		.stabn	68,0,199,.LM150-.LFBB10
2227
 1166               	.LM150:
2228
 1167 044a 9091 0000 		lds r25,UIMgr_rxFifoTail
2229
 1168 044e 8091 0000 		lds r24,UIMgr_rxFifoHead
2230
 1169 0452 8917      		cp r24,r25
2231
 1170 0454 01F0      		breq .+2
2232
 1171 0456 00C0      		rjmp .L67
2233
 1172               		.stabn	68,0,295,.LM151-.LFBB10
2234
 1173               	.LM151:
2235
 1174               	/* #APP */
2236
 1175 0458 E894      		clt
2237
 1176               	/* #NOAPP */
2238
 1177               	/* epilogue: frame size=0 */
2239
 1178 045a DF91      		pop r29
2240
 1179 045c CF91      		pop r28
2241
 1180 045e 1F91      		pop r17
2242
 1181 0460 FF90      		pop r15
2243
 1182 0462 EF90      		pop r14
2244
 1183 0464 DF90      		pop r13
2245
 1184 0466 CF90      		pop r12
2246
 1185 0468 BF90      		pop r11
2247
 1186 046a AF90      		pop r10
2248
 1187 046c 9F90      		pop r9
2249
 1188 046e 8F90      		pop r8
2250
 1189 0470 7F90      		pop r7
2251
 1190 0472 6F90      		pop r6
2252
 1191 0474 0895      		ret
2253
 1192               	/* epilogue end (size=14) */
2254
 1193               	/* function UIMgr_processReceivedData size 333 (306) */
2255
 1194               		.size	UIMgr_processReceivedData, .-UIMgr_processReceivedData
2256
 1195               		.stabs	"dataByte:r(0,11)",64,0,609,18
2257
 1196               		.stabn	192,0,0,.LBB23-.LFBB10
2258
 1197               		.stabn	224,0,0,.LBE23-.LFBB10
2259
 1198               		.stabs	"dataByte:r(0,11)",64,0,609,18
2260
 1199               		.stabn	192,0,0,.LBB24-.LFBB10
2261
 1200               		.stabn	224,0,0,.LBE24-.LFBB10
2262
 1201               	.Lscope10:
2263
 1202               		.stabs	"",36,0,0,.Lscope10-.LFBB10
2264
 1203               		.stabd	78,0,0
2265
 1204               		.stabs	"UIMgr_dispatchEvent:F(0,15)",36,0,152,UIMgr_dispatchEvent
2266
 1205               		.stabs	"event:P(0,11)",64,0,151,24
2267
 1206               	.global	UIMgr_dispatchEvent
2268
 1207               		.type	UIMgr_dispatchEvent, @function
2269
 1208               	UIMgr_dispatchEvent:
2270
 1209               		.stabd	46,0,0
2271
 1210               		.stabn	68,0,152,.LM152-.LFBB11
2272
 1211               	.LM152:
2273
 1212               	.LFBB11:
2274
 1213               	/* prologue: frame size=0 */
2275
 1214               	/* prologue end (size=0) */
2276
 1215               		.stabn	68,0,153,.LM153-.LFBB11
2277
 1216               	.LM153:
2278
 1217 0476 8031      		cpi r24,lo8(16)
2279
 1218 0478 01F0      		breq .L123
2280
 1219               		.stabn	68,0,153,.LM154-.LFBB11
2281
GAS LISTING /tmp/ccs6Vjbf.s 			page 39
151 kaklik 2282
 
2283
 
484 kaklik 2284
 1220               	.LM154:
2285
 1221 047a 8039      		cpi r24,lo8(-112)
2286
 1222 047c 01F0      		breq .L124
2287
 1223 047e 8130      		cpi r24,lo8(1)
2288
 1224 0480 01F4      		brne .L125
2289
 1225 0482 00C0      		rjmp .L122
2290
 1226               	.L123:
2291
 1227               		.stabn	68,0,156,.LM155-.LFBB11
2292
 1228               	.LM155:
2293
 1229 0484 00D0      		rcall UIMgr_transmitPendingData
2294
 1230 0486 0895      		ret
2295
 1231               	.L122:
2296
 1232               		.stabn	68,0,160,.LM156-.LFBB11
2297
 1233               	.LM156:
2298
 1234 0488 00D0      		rcall UIMgr_processReceivedData
2299
 1235 048a 0895      		ret
2300
 1236               	.L124:
2301
 1237               		.stabn	68,0,164,.LM157-.LFBB11
2302
 1238               	.LM157:
2303
 1239 048c 00D0      		rcall UIMgr_flushTxBuffer
2304
 1240               	.L125:
2305
 1241 048e 0895      		ret
2306
 1242               	/* epilogue: frame size=0 */
2307
 1243               	/* epilogue: noreturn */
2308
 1244               	/* epilogue end (size=0) */
2309
 1245               	/* function UIMgr_dispatchEvent size 13 (13) */
2310
 1246               		.size	UIMgr_dispatchEvent, .-UIMgr_dispatchEvent
2311
 1247               	.Lscope11:
2312
 1248               		.stabs	"",36,0,0,.Lscope11-.LFBB11
2313
 1249               		.stabd	78,0,0
2314
 1250               	.global	UIMgr_rxFifoHead
2315
 1251               	.global	UIMgr_rxFifoHead
2316
 1252               		.section .bss
2317
 1253               		.type	UIMgr_rxFifoHead, @object
2318
 1254               		.size	UIMgr_rxFifoHead, 1
2319
 1255               	UIMgr_rxFifoHead:
2320
 1256 0000 00        		.skip 1,0
2321
 1257               	.global	UIMgr_rxFifoTail
2322
 1258               	.global	UIMgr_rxFifoTail
2323
 1259               		.type	UIMgr_rxFifoTail, @object
2324
 1260               		.size	UIMgr_rxFifoTail, 1
2325
 1261               	UIMgr_rxFifoTail:
2326
 1262 0001 00        		.skip 1,0
2327
 1263               	.global	UIMgr_txFifoHead
2328
 1264               	.global	UIMgr_txFifoHead
2329
 1265               		.type	UIMgr_txFifoHead, @object
2330
 1266               		.size	UIMgr_txFifoHead, 1
2331
 1267               	UIMgr_txFifoHead:
2332
 1268 0002 00        		.skip 1,0
2333
 1269               	.global	UIMgr_txFifoTail
2334
 1270               	.global	UIMgr_txFifoTail
2335
 1271               		.type	UIMgr_txFifoTail, @object
2336
 1272               		.size	UIMgr_txFifoTail, 1
2337
 1273               	UIMgr_txFifoTail:
2338
 1274 0003 00        		.skip 1,0
2339
 1275               		.lcomm tokenCount,1
2340
 1276               		.data
2341
GAS LISTING /tmp/ccs6Vjbf.s 			page 40
151 kaklik 2342
 
2343
 
484 kaklik 2344
 1277               		.type	receivedCmd, @object
2345
 1278               		.size	receivedCmd, 1
2346
 1279               	receivedCmd:
2347
 1280 0000 08        		.byte	8
2348
 1281               		.lcomm charCount,1
2349
 1282               		.lcomm charIndex,1
2350
 1283               		.type	AVRcamVersion, @object
2351
 1284               		.size	AVRcamVersion, 13
2352
 1285               	AVRcamVersion:
2353
 1286 0001 4156 5263 		.string	"AVRcam v1.4\r"
2354
 1286      616D 2076 
2355
 1286      312E 340D 
2356
 1286      00
2357
 1287               		.lcomm asciiTokenBuffer,4
2358
 1288               		.lcomm tokenBuffer,64
2359
 1289               		.comm UIMgr_rxFifo,32,1
2360
 1290               		.comm UIMgr_txFifo,64,1
2361
 1291               		.stabs	"charCount:S(0,11)",38,0,92,charCount
2362
 1292               		.stabs	"charIndex:S(0,11)",38,0,93,charIndex
2363
 1293               		.stabs	"asciiTokenBuffer:S(0,21)=ar(0,22)=r(0,22);0;0177777;;0;3;(0,11)",40,0,94,asciiTokenBuffer
2364
 1294               		.stabs	"tokenCount:S(0,11)",38,0,95,tokenCount
2365
 1295               		.stabs	"tokenBuffer:S(0,23)=ar(0,22);0;63;(0,11)",40,0,96,tokenBuffer
2366
 1296               		.stabs	"receivedCmd:S(0,17)",38,0,97,receivedCmd
2367
 1297               		.stabs	"AVRcamVersion:S(0,24)=ar(0,22);0;12;(0,11)",38,0,98,AVRcamVersion
2368
 1298               		.stabs	"UIMgr_rxFifo:G(0,25)=ar(0,22);0;31;(0,11)",32,0,111,0
2369
 1299               		.stabs	"UIMgr_rxFifoHead:G(0,11)",32,0,112,0
2370
 1300               		.stabs	"UIMgr_rxFifoTail:G(0,11)",32,0,113,0
2371
 1301               		.stabs	"UIMgr_txFifo:G(0,23)",32,0,115,0
2372
 1302               		.stabs	"UIMgr_txFifoHead:G(0,11)",32,0,116,0
2373
 1303               		.stabs	"UIMgr_txFifoTail:G(0,11)",32,0,117,0
2374
 1304               		.text
2375
 1305               		.stabs	"",100,0,0,.Letext0
2376
 1306               	.Letext0:
2377
 1307               	/* File "UIMgr.c": code  609 = 0x0261 ( 570), prologues  16, epilogues  23 */
2378
GAS LISTING /tmp/ccs6Vjbf.s 			page 41
2379
 
2380
 
151 kaklik 2381
DEFINED SYMBOLS
2382
                            *ABS*:00000000 UIMgr.c
484 kaklik 2383
     /tmp/ccs6Vjbf.s:2      *ABS*:0000003f __SREG__
2384
     /tmp/ccs6Vjbf.s:3      *ABS*:0000003e __SP_H__
2385
     /tmp/ccs6Vjbf.s:4      *ABS*:0000003d __SP_L__
2386
     /tmp/ccs6Vjbf.s:5      *ABS*:00000000 __tmp_reg__
2387
     /tmp/ccs6Vjbf.s:6      *ABS*:00000001 __zero_reg__
2388
     /tmp/ccs6Vjbf.s:93     .text:00000000 UIMgr_writeBufferToTxFifo
2389
     /tmp/ccs6Vjbf.s:1267   .bss:00000002 UIMgr_txFifoHead
151 kaklik 2390
                            *COM*:00000040 UIMgr_txFifo
484 kaklik 2391
     /tmp/ccs6Vjbf.s:158    .text:00000034 UIMgr_readTxFifo
2392
     /tmp/ccs6Vjbf.s:1273   .bss:00000003 UIMgr_txFifoTail
2393
     /tmp/ccs6Vjbf.s:206    .text:00000052 UIMgr_writeTxFifo
2394
     /tmp/ccs6Vjbf.s:247    .text:0000006e UIMgr_flushTxBuffer
2395
     /tmp/ccs6Vjbf.s:286    .text:0000008c UIMgr_txBuffer
2396
     /tmp/ccs6Vjbf.s:327    .text:000000ac UIMgr_transmitPendingData
2397
     /tmp/ccs6Vjbf.s:356    .text:000000be UIMgr_convertTokenToCmd
2398
     /tmp/ccs6Vjbf.s:1282   .bss:00000007 asciiTokenBuffer
2399
     /tmp/ccs6Vjbf.s:1279   .data:00000000 receivedCmd
2400
     /tmp/ccs6Vjbf.s:1281   .bss:00000006 charIndex
2401
     /tmp/ccs6Vjbf.s:1275   .bss:00000005 charCount
2402
     /tmp/ccs6Vjbf.s:499    .text:0000017c UIMgr_init
2403
     /tmp/ccs6Vjbf.s:1287   .bss:0000000b tokenBuffer
151 kaklik 2404
                            *COM*:00000020 UIMgr_rxFifo
484 kaklik 2405
     /tmp/ccs6Vjbf.s:546    .text:000001b2 UIMgr_convertTokenToValue
151 kaklik 2406
                             .bss:00000004 tokenCount
484 kaklik 2407
     /tmp/ccs6Vjbf.s:617    .text:000001fe UIMgr_processReceivedData
2408
     /tmp/ccs6Vjbf.s:1285   .data:00000001 AVRcamVersion
2409
     /tmp/ccs6Vjbf.s:1261   .bss:00000001 UIMgr_rxFifoTail
2410
     /tmp/ccs6Vjbf.s:1255   .bss:00000000 UIMgr_rxFifoHead
2411
     /tmp/ccs6Vjbf.s:1208   .text:00000476 UIMgr_dispatchEvent
151 kaklik 2412
 
2413
UNDEFINED SYMBOLS
2414
__do_copy_data
2415
__do_clear_bss
2416
UartInt_txByte
2417
atoi
484 kaklik 2418
colorMap
151 kaklik 2419
Utility_delay
2420
Exec_writeEventFifo
2421
CamInt_resetCam
2422
CamConfig_setCamReg
2423
CamConfig_sendFifoCmds
2424
__eeprom_read_byte_1C1D1E
2425
__eeprom_write_byte_1C1D1E