   1               		.file	"api.c"
   2               		.arch at90can128
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
 141               	.global	UART0_Init
 143               	UART0_Init:
   1:api.c         **** /*
   2:api.c         ****  * VERSION 1.0 Januar 7th 2010 LATE  File: 'api.c'
   3:api.c         ****  * Author: Linda Fouedjio
   4:api.c         ****  * modified (heavily rather rebuild): Peter Zumbruch
   5:api.c         ****  * modified: Florian Feldbauer
   6:api.c         ****  * modified: Peter Zumbruch, July 2011
   7:api.c         ****  */
   8:api.c         **** 
   9:api.c         **** #include <stdint.h>
  10:api.c         **** #include <stdio.h>
  11:api.c         **** #include <string.h>
  12:api.c         **** #include <ctype.h>
  13:api.c         **** #include <math.h>
  14:api.c         **** #include <stdlib.h>
  15:api.c         **** #include <stddef.h>
  16:api.c         **** #include <util/delay.h>
  17:api.c         **** #include <avr/io.h>
  18:api.c         **** #include <avr/interrupt.h>
  19:api.c         **** #include <avr/sleep.h>
  20:api.c         **** #include <avr/iocan128.h>
  21:api.c         **** #include <avr/iocanxx.h>
  22:api.c         **** #include <avr/eeprom.h>
  23:api.c         **** #include <avr/wdt.h>
  24:api.c         **** #include <avr/pgmspace.h>
  25:api.c         **** 
  26:api.c         **** #include "one_wire.h"
  27:api.c         **** #include "one_wire_adc.h"
  28:api.c         **** #include "one_wire_dualSwitch.h"
  29:api.c         **** #include "one_wire_octalSwitch.h"
  30:api.c         **** #include "one_wire_simpleSwitch.h"
  31:api.c         **** #include "read_write_register.h"
  32:api.c         **** #include "one_wire_temperature.h"
  33:api.c         **** #include "one_wire_api_settings.h"
  34:api.c         **** #include "relay.h"
  35:api.c         **** 
  36:api.c         **** #include "adc.h"
  37:api.c         **** #include "api.h"
  38:api.c         **** #include "api_define.h"
  39:api.c         **** #include "api_global.h"
  40:api.c         **** #include "api_constants.h"
  41:api.c         **** #include "api_debug.h"
  42:api.c         **** #include "api_show.h"
  43:api.c         **** #include "api_help.h"
  44:api.c         **** #include "api_debug.h"
  45:api.c         **** #include "jtag.h"
  46:api.c         **** #include "can.h"
  47:api.c         **** #include "mem-check.h"
  48:api.c         **** 
  49:api.c         **** 
  50:api.c         **** #if 1 //#ifndef API_CONSTANTS_H_
  51:api.c         **** 
  52:api.c         **** #warning TODO: combine responseKeyword and other responses error into one set of responses
  53:api.c         **** static const char responseKeyword00[] PROGMEM = "RECV";
  54:api.c         **** 
  55:api.c         **** const char* responseKeywords[] PROGMEM = {
  56:api.c         ****         responseKeyword00
  57:api.c         **** };
  58:api.c         **** 
  59:api.c         **** /* those are the command keywords of the API*/
  60:api.c         **** static const char commandKeyword00[] PROGMEM = "SEND";
  61:api.c         **** static const char commandKeyword01[] PROGMEM = "SUBS";
  62:api.c         **** static const char commandKeyword02[] PROGMEM = "USUB";
  63:api.c         **** static const char commandKeyword03[] PROGMEM = "STAT";
  64:api.c         **** static const char commandKeyword04[] PROGMEM = "RGWR";
  65:api.c         **** static const char commandKeyword05[] PROGMEM = "RGRE";
  66:api.c         **** static const char commandKeyword06[] PROGMEM = "RADC";
  67:api.c         **** static const char commandKeyword07[] PROGMEM = "OWAD";
  68:api.c         **** static const char commandKeyword08[] PROGMEM = "OWDS";
  69:api.c         **** static const char commandKeyword09[] PROGMEM = "OWON";
  70:api.c         **** static const char commandKeyword10[] PROGMEM = "OWLS";
  71:api.c         **** static const char commandKeyword11[] PROGMEM = "OWSS";
  72:api.c         **** static const char commandKeyword12[] PROGMEM = "RSET";
  73:api.c         **** static const char commandKeyword13[] PROGMEM = "PING";
  74:api.c         **** static const char commandKeyword14[] PROGMEM = "OWTP";
  75:api.c         **** static const char commandKeyword15[] PROGMEM = "OWSP"; /*one-wire set active pins/bus mask*/
  76:api.c         **** static const char commandKeyword16[] PROGMEM = "ADSP"; /*AVR's adcs set active pins/bus mask*/
  77:api.c         **** static const char commandKeyword17[] PROGMEM = "RLSL"; /*relay set low  level*/
  78:api.c         **** static const char commandKeyword18[] PROGMEM = "RLSH"; /*relay set high level*/
  79:api.c         **** static const char commandKeyword19[] PROGMEM = "RLSI"; /*relay set ADC pin(s) to monitor "in" */
  80:api.c         **** static const char commandKeyword20[] PROGMEM = "RLSO"; /*relay set output pin(s) to switch "out" */
  81:api.c         **** static const char commandKeyword21[] PROGMEM = "DBGL"; /*set debug level*/
  82:api.c         **** static const char commandKeyword22[] PROGMEM = "DBGM"; /*set debug system mask*/
  83:api.c         **** static const char commandKeyword23[] PROGMEM = "JTAG"; /*toggle/set JTAG availability*/
  84:api.c         **** static const char commandKeyword24[] PROGMEM = "HELP"; /*output some help*/
  85:api.c         **** static const char commandKeyword25[] PROGMEM = "OWTR"; /*trigger one-wire device(s) for action, if 
  86:api.c         **** static const char commandKeyword26[] PROGMEM = "OWRP"; /*one-wire read active pins/bus mask*/
  87:api.c         **** static const char commandKeyword27[] PROGMEM = "ADRP"; /*AVR's adcs read active pins/bus mask*/
  88:api.c         **** static const char commandKeyword28[] PROGMEM = "DEBG"; /*set/get debug level and mask*/
  89:api.c         **** static const char commandKeyword29[] PROGMEM = "PARA"; /*check parasitic power supply mode*/
  90:api.c         **** static const char commandKeyword30[] PROGMEM = "SHOW"; /*show (internal) settings*/
  91:api.c         **** static const char commandKeyword31[] PROGMEM = "OWMR"; /*one wire basics: match rom*/
  92:api.c         **** static const char commandKeyword32[] PROGMEM = "OWPC"; /*one wire basics: presence check*/
  93:api.c         **** static const char commandKeyword33[] PROGMEM = "OWRb"; /*one wire basics: receive bit, wait for it*
  94:api.c         **** static const char commandKeyword34[] PROGMEM = "OWRB"; /*one wire basics: receive byte*/
  95:api.c         **** static const char commandKeyword35[] PROGMEM = "OWSC"; /*one wire basics: send command*/
  96:api.c         **** static const char commandKeyword36[] PROGMEM = "OWSB"; /*one wire basics: send byte*/
  97:api.c         **** static const char commandKeyword37[] PROGMEM = "OWSA"; /*one wire API settings: set/get 1-wire spec
  98:api.c         **** static const char commandKeyword38[] PROGMEM = "WDOG"; /*set/get watch dog status*/
  99:api.c         **** static const char commandKeyword39[] PROGMEM = "EXIT"; /*exit*/
 100:api.c         **** static const char commandKeyword40[] PROGMEM = "RLTH"; /* relay threshold */
 101:api.c         **** static const char commandKeyword41[] PROGMEM = "CMD1"; /* command (dummy name) */
 102:api.c         **** static const char commandKeyword42[] PROGMEM = "CMD2"; /* command (dummy name) */
 103:api.c         **** static const char commandKeyword43[] PROGMEM = "CMD3"; /* command (dummy name) */
 104:api.c         **** static const char commandKeyword44[] PROGMEM = "CMD4"; /* command (dummy name) */
 105:api.c         **** static const char commandKeyword45[] PROGMEM = "CMD5"; /* command (dummy name) */
 106:api.c         **** static const char commandKeyword46[] PROGMEM = "CMD6"; /* command (dummy name) */
 107:api.c         **** static const char commandKeyword47[] PROGMEM = "CMD7"; /* command (dummy name) */
 108:api.c         **** static const char commandKeyword48[] PROGMEM = "CMD8"; /* command (dummy name) */
 109:api.c         **** static const char commandKeyword49[] PROGMEM = "CMD9"; /* command (dummy name) */
 110:api.c         **** 
 111:api.c         **** 
 112:api.c         **** /* this is the corresponding command key array, beware of the same order*/
 113:api.c         **** const char* commandKeywords[] PROGMEM = {
 114:api.c         **** 		commandKeyword00,
 115:api.c         **** 		commandKeyword01,
 116:api.c         **** 		commandKeyword02,
 117:api.c         **** 		commandKeyword03,
 118:api.c         **** 		commandKeyword04,
 119:api.c         **** 		commandKeyword05,
 120:api.c         **** 		commandKeyword06,
 121:api.c         **** 		commandKeyword07,
 122:api.c         **** 		commandKeyword08,
 123:api.c         **** 		commandKeyword09,
 124:api.c         **** 		commandKeyword10,
 125:api.c         **** 		commandKeyword11,
 126:api.c         **** 		commandKeyword12,
 127:api.c         **** 		commandKeyword13,
 128:api.c         **** 		commandKeyword14,
 129:api.c         **** 		commandKeyword15,
 130:api.c         **** 		commandKeyword16,
 131:api.c         **** 		commandKeyword17,
 132:api.c         **** 		commandKeyword18,
 133:api.c         **** 		commandKeyword19,
 134:api.c         **** 		commandKeyword20,
 135:api.c         **** 		commandKeyword21,
 136:api.c         **** 		commandKeyword22,
 137:api.c         **** 		commandKeyword23,
 138:api.c         **** 		commandKeyword24,
 139:api.c         **** 		commandKeyword25,
 140:api.c         **** 		commandKeyword26,
 141:api.c         **** 		commandKeyword27,
 142:api.c         **** 		commandKeyword28,
 143:api.c         **** 		commandKeyword29,
 144:api.c         **** 		commandKeyword30,
 145:api.c         **** 		commandKeyword31,
 146:api.c         **** 		commandKeyword32,
 147:api.c         **** 		commandKeyword33,
 148:api.c         **** 		commandKeyword34,
 149:api.c         **** 		commandKeyword35,
 150:api.c         **** 		commandKeyword36,
 151:api.c         **** 		commandKeyword37,
 152:api.c         **** 		commandKeyword38,
 153:api.c         **** 		commandKeyword39,
 154:api.c         **** 		commandKeyword40,
 155:api.c         **** 		commandKeyword41,
 156:api.c         **** 		commandKeyword42,
 157:api.c         **** 		commandKeyword43,
 158:api.c         **** 		commandKeyword44,
 159:api.c         **** 		commandKeyword45,
 160:api.c         **** 		commandKeyword46,
 161:api.c         **** 		commandKeyword47,
 162:api.c         **** 		commandKeyword48,
 163:api.c         **** 		commandKeyword49
 164:api.c         **** 
 165:api.c         **** };
 166:api.c         **** 
 167:api.c         **** /* those are the command keywords of the API*/
 168:api.c         **** static const char commandShortDescription00[] PROGMEM = "CAN-ID ID-Range [RTR <nBytes> D0 .. D7]";
 169:api.c         **** static const char commandShortDescription01[] PROGMEM = "CAN-ID ID-Range";
 170:api.c         **** static const char commandShortDescription02[] PROGMEM = "CAN-ID ID-Range";
 171:api.c         **** static const char commandShortDescription03[] PROGMEM = "[ID]";
 172:api.c         **** static const char commandShortDescription04[] PROGMEM = "Register Value";
 173:api.c         **** static const char commandShortDescription05[] PROGMEM = "Register";
 174:api.c         **** static const char commandShortDescription06[] PROGMEM = "[<ADC Channel>]";
 175:api.c         **** static const char commandShortDescription07[] PROGMEM = "[ID [flag_conv [flag_init]]]";
 176:api.c         **** static const char commandShortDescription08[] PROGMEM = "[ID]";
 177:api.c         **** static const char commandShortDescription09[] PROGMEM = "[ID]";
 178:api.c         **** static const char commandShortDescription10[] PROGMEM = "[<Family Code>]";
 179:api.c         **** static const char commandShortDescription11[] PROGMEM = "[ID]";
 180:api.c         **** static const char commandShortDescription12[] PROGMEM = "";
 181:api.c         **** static const char commandShortDescription13[] PROGMEM = "";
 182:api.c         **** static const char commandShortDescription14[] PROGMEM = "[ID [flag_conv [flag_init]] | <command_key
 183:api.c         **** static const char commandShortDescription15[] PROGMEM = "<bus mask>"; /*one-wire set/get active pin
 184:api.c         **** static const char commandShortDescription16[] PROGMEM = "<bus mask>"; /*AVR's adcs set active pins/
 185:api.c         **** static const char commandShortDescription17[] PROGMEM = "<bus> [val]"; /*relay set low  level*/
 186:api.c         **** static const char commandShortDescription18[] PROGMEM = "<bus> [val]"; /*relay set high level*/
 187:api.c         **** static const char commandShortDescription19[] PROGMEM = "<bus> [pins]"; /*relay set ADC pin(s) to m
 188:api.c         **** static const char commandShortDescription20[] PROGMEM = "<bus> [pins]"; /*relay set output pin(s) t
 189:api.c         **** static const char commandShortDescription21[] PROGMEM = "[level]"; /*set debug level*/
 190:api.c         **** static const char commandShortDescription22[] PROGMEM = "[mask]"; /*set debug system mask*/
 191:api.c         **** static const char commandShortDescription23[] PROGMEM = ""; /*toggle/set JTAG availability*/
 192:api.c         **** static const char commandShortDescription24[] PROGMEM = "[CMND]"; /*output some help*/
 193:api.c         **** static const char commandShortDescription25[] PROGMEM = "[ID] ..."; /*trigger one-wire device(s) fo
 194:api.c         **** static const char commandShortDescription26[] PROGMEM = ""; /*one-wire read active pins/bus mask*/
 195:api.c         **** static const char commandShortDescription27[] PROGMEM = ""; /*AVR's adcs read active pins/bus mask*
 196:api.c         **** static const char commandShortDescription28[] PROGMEM = "[level [mask]]"; /*set/get debug level and
 197:api.c         **** static const char commandShortDescription29[] PROGMEM = "parasitic device test [???]"; /*not yet fi
 198:api.c         **** static const char commandShortDescription30[] PROGMEM = "[key_word]"; /*show (internal) settings*/
 199:api.c         **** static const char commandShortDescription31[] PROGMEM = "ID <pin_mask>"; /*one wire basics: match r
 200:api.c         **** static const char commandShortDescription32[] PROGMEM = "[<pin_mask>]"; /*one wire basics: presence
 201:api.c         **** static const char commandShortDescription33[] PROGMEM = "<pin_mask> <delay> <timeout: N (times dela
 202:api.c         **** static const char commandShortDescription34[] PROGMEM = "[<pin_mask>]"; /*one wire basics: receive 
 203:api.c         **** static const char commandShortDescription35[] PROGMEM = "<command_key_word> [<pin_mask> [arguments 
 204:api.c         **** static const char commandShortDescription36[] PROGMEM = "<byte> [<pin_mask>]"; /*one wire basics: s
 205:api.c         **** static const char commandShortDescription37[] PROGMEM = "<command_key_word> [arguments] "; /*one wi
 206:api.c         **** static const char commandShortDescription38[] PROGMEM = "[???]"; /* watch dog, not yet figured out*
 207:api.c         **** static const char commandShortDescription39[] PROGMEM = ""; /* exit */
 208:api.c         **** static const char commandShortDescription40[] PROGMEM = "[command_key_word] <value>"; /* dummy comm
 209:api.c         **** static const char commandShortDescription41[] PROGMEM = "[???]"; /* dummy command */
 210:api.c         **** static const char commandShortDescription42[] PROGMEM = "[???]"; /* dummy command */
 211:api.c         **** static const char commandShortDescription43[] PROGMEM = "[???]"; /* dummy command */
 212:api.c         **** static const char commandShortDescription44[] PROGMEM = "[???]"; /* dummy command */
 213:api.c         **** static const char commandShortDescription45[] PROGMEM = "[???]"; /* dummy command */
 214:api.c         **** static const char commandShortDescription46[] PROGMEM = "[???]"; /* dummy command */
 215:api.c         **** static const char commandShortDescription47[] PROGMEM = "[???]"; /* dummy command */
 216:api.c         **** static const char commandShortDescription48[] PROGMEM = "[???]"; /* dummy command */
 217:api.c         **** static const char commandShortDescription49[] PROGMEM = "[???]"; /* dummy command */
 218:api.c         **** 
 219:api.c         **** 
 220:api.c         **** /* this is the corresponding command key array, beware of the same order*/
 221:api.c         **** const char* commandShortDescriptions[] PROGMEM= {
 222:api.c         **** 		commandShortDescription00,
 223:api.c         **** 		commandShortDescription01,
 224:api.c         **** 		commandShortDescription02,
 225:api.c         **** 		commandShortDescription03,
 226:api.c         **** 		commandShortDescription04,
 227:api.c         **** 		commandShortDescription05,
 228:api.c         **** 		commandShortDescription06,
 229:api.c         **** 		commandShortDescription07,
 230:api.c         **** 		commandShortDescription08,
 231:api.c         **** 		commandShortDescription09,
 232:api.c         **** 		commandShortDescription10,
 233:api.c         **** 		commandShortDescription11,
 234:api.c         **** 		commandShortDescription12,
 235:api.c         **** 		commandShortDescription13,
 236:api.c         **** 		commandShortDescription14,
 237:api.c         **** 		commandShortDescription15,
 238:api.c         **** 		commandShortDescription16,
 239:api.c         **** 		commandShortDescription17,
 240:api.c         **** 		commandShortDescription18,
 241:api.c         **** 		commandShortDescription19,
 242:api.c         **** 		commandShortDescription20,
 243:api.c         **** 		commandShortDescription21,
 244:api.c         **** 		commandShortDescription22,
 245:api.c         **** 		commandShortDescription23,
 246:api.c         **** 		commandShortDescription24,
 247:api.c         **** 		commandShortDescription25,
 248:api.c         **** 		commandShortDescription26,
 249:api.c         **** 		commandShortDescription27,
 250:api.c         **** 		commandShortDescription28,
 251:api.c         **** 		commandShortDescription29,
 252:api.c         **** 		commandShortDescription30,
 253:api.c         **** 		commandShortDescription31,
 254:api.c         **** 		commandShortDescription32,
 255:api.c         **** 		commandShortDescription33,
 256:api.c         **** 		commandShortDescription34,
 257:api.c         **** 		commandShortDescription35,
 258:api.c         **** 		commandShortDescription36,
 259:api.c         **** 		commandShortDescription37,
 260:api.c         **** 		commandShortDescription38,
 261:api.c         **** 		commandShortDescription39,
 262:api.c         **** 		commandShortDescription40,
 263:api.c         **** 		commandShortDescription41,
 264:api.c         **** 		commandShortDescription42,
 265:api.c         **** 		commandShortDescription43,
 266:api.c         **** 		commandShortDescription44,
 267:api.c         **** 		commandShortDescription45,
 268:api.c         **** 		commandShortDescription46,
 269:api.c         **** 		commandShortDescription47,
 270:api.c         **** 		commandShortDescription48,
 271:api.c         **** 		commandShortDescription49
 272:api.c         **** };
 273:api.c         **** 
 274:api.c         **** /* those are the command keywords of the API*/
 275:api.c         **** static const char commandImplementation00[] PROGMEM = "";
 276:api.c         **** static const char commandImplementation01[] PROGMEM = "";
 277:api.c         **** static const char commandImplementation02[] PROGMEM = "";
 278:api.c         **** static const char commandImplementation03[] PROGMEM = "--- not implemented";
 279:api.c         **** static const char commandImplementation04[] PROGMEM = "";
 280:api.c         **** static const char commandImplementation05[] PROGMEM = "";
 281:api.c         **** static const char commandImplementation06[] PROGMEM = "";
 282:api.c         **** static const char commandImplementation07[] PROGMEM = "";
 283:api.c         **** static const char commandImplementation08[] PROGMEM = "--- [ID] not implemented";
 284:api.c         **** static const char commandImplementation09[] PROGMEM = "--- [ID] not implemented";
 285:api.c         **** static const char commandImplementation10[] PROGMEM = "";
 286:api.c         **** static const char commandImplementation11[] PROGMEM = "--- [ID] not implemented";
 287:api.c         **** static const char commandImplementation12[] PROGMEM = "";
 288:api.c         **** static const char commandImplementation13[] PROGMEM = "";
 289:api.c         **** static const char commandImplementation14[] PROGMEM = "";
 290:api.c         **** static const char commandImplementation15[] PROGMEM = ""; /*one-wire set/get active pins/bus mask*/
 291:api.c         **** static const char commandImplementation16[] PROGMEM = "--- not implemented"; /*AVR's adcs set activ
 292:api.c         **** static const char commandImplementation17[] PROGMEM = "--- not implemented"; /*relay set low  level
 293:api.c         **** static const char commandImplementation18[] PROGMEM = "--- not implemented"; /*relay set high level
 294:api.c         **** static const char commandImplementation19[] PROGMEM = "--- not implemented"; /*relay set ADC pin(s)
 295:api.c         **** static const char commandImplementation20[] PROGMEM = "--- not implemented"; /*relay set output pin
 296:api.c         **** static const char commandImplementation21[] PROGMEM = ""; /*set debug level*/
 297:api.c         **** static const char commandImplementation22[] PROGMEM = ""; /*set debug system mask*/
 298:api.c         **** static const char commandImplementation23[] PROGMEM = "--- not implemented"; /*toggle/set JTAG avai
 299:api.c         **** static const char commandImplementation24[] PROGMEM = ""; /*output some help*/
 300:api.c         **** static const char commandImplementation25[] PROGMEM = "--- not implemented"; /*trigger one-wire dev
 301:api.c         **** static const char commandImplementation26[] PROGMEM = ""; /*one-wire read active pins/bus mask*/
 302:api.c         **** static const char commandImplementation27[] PROGMEM = "--- not implemented"; /*AVR's adcs read acti
 303:api.c         **** static const char commandImplementation28[] PROGMEM = ""; /*set/get debug level and mask*/
 304:api.c         **** static const char commandImplementation29[] PROGMEM = "";
 305:api.c         **** static const char commandImplementation30[] PROGMEM = "";
 306:api.c         **** static const char commandImplementation31[] PROGMEM = "--- not implemented"; /*one wire basics: mat
 307:api.c         **** static const char commandImplementation32[] PROGMEM = "--- not implemented"; /*one wire basics: pre
 308:api.c         **** static const char commandImplementation33[] PROGMEM = "--- not implemented"; /*one wire basics: rec
 309:api.c         **** static const char commandImplementation34[] PROGMEM = "--- not implemented"; /*one wire basics: rec
 310:api.c         **** static const char commandImplementation35[] PROGMEM = "--- not implemented"; /*one wire basics: sen
 311:api.c         **** static const char commandImplementation36[] PROGMEM = "--- not implemented"; /*one wire basics: sen
 312:api.c         **** static const char commandImplementation37[] PROGMEM = "--- not implemented"; /*one wire API setting
 313:api.c         **** static const char commandImplementation38[] PROGMEM = "--- not implemented"; /*wdog*/
 314:api.c         **** static const char commandImplementation39[] PROGMEM = "--- not implemented"; /*exit*/
 315:api.c         **** static const char commandImplementation40[] PROGMEM = ""; /*dummy command*/
 316:api.c         **** static const char commandImplementation41[] PROGMEM = "--- not implemented"; /*dummy command*/
 317:api.c         **** static const char commandImplementation42[] PROGMEM = "--- not implemented"; /*dummy command*/
 318:api.c         **** static const char commandImplementation43[] PROGMEM = "--- not implemented"; /*dummy command*/
 319:api.c         **** static const char commandImplementation44[] PROGMEM = "--- not implemented"; /*dummy command*/
 320:api.c         **** static const char commandImplementation45[] PROGMEM = "--- not implemented"; /*dummy command*/
 321:api.c         **** static const char commandImplementation46[] PROGMEM = "--- not implemented"; /*dummy command*/
 322:api.c         **** static const char commandImplementation47[] PROGMEM = "--- not implemented"; /*dummy command*/
 323:api.c         **** static const char commandImplementation48[] PROGMEM = "--- not implemented"; /*dummy command*/
 324:api.c         **** static const char commandImplementation49[] PROGMEM = "--- not implemented"; /*dummy command*/
 325:api.c         **** 
 326:api.c         **** /* this is the corresponding command key array, beware of the same order*/
 327:api.c         **** const char* commandImplementations[] PROGMEM= {
 328:api.c         **** 		commandImplementation00,
 329:api.c         **** 		commandImplementation01,
 330:api.c         **** 		commandImplementation02,
 331:api.c         **** 		commandImplementation03,
 332:api.c         **** 		commandImplementation04,
 333:api.c         **** 		commandImplementation05,
 334:api.c         **** 		commandImplementation06,
 335:api.c         **** 		commandImplementation07,
 336:api.c         **** 		commandImplementation08,
 337:api.c         **** 		commandImplementation09,
 338:api.c         **** 		commandImplementation10,
 339:api.c         **** 		commandImplementation11,
 340:api.c         **** 		commandImplementation12,
 341:api.c         **** 		commandImplementation13,
 342:api.c         **** 		commandImplementation14,
 343:api.c         **** 		commandImplementation15,
 344:api.c         **** 		commandImplementation16,
 345:api.c         **** 		commandImplementation17,
 346:api.c         **** 		commandImplementation18,
 347:api.c         **** 		commandImplementation19,
 348:api.c         **** 		commandImplementation20,
 349:api.c         **** 		commandImplementation21,
 350:api.c         **** 		commandImplementation22,
 351:api.c         **** 		commandImplementation23,
 352:api.c         **** 		commandImplementation24,
 353:api.c         **** 		commandImplementation25,
 354:api.c         **** 		commandImplementation26,
 355:api.c         **** 		commandImplementation27,
 356:api.c         **** 		commandImplementation28,
 357:api.c         **** 		commandImplementation29,
 358:api.c         **** 		commandImplementation30,
 359:api.c         **** 		commandImplementation31,
 360:api.c         **** 		commandImplementation32,
 361:api.c         **** 		commandImplementation33,
 362:api.c         **** 		commandImplementation34,
 363:api.c         **** 		commandImplementation35,
 364:api.c         **** 		commandImplementation36,
 365:api.c         **** 		commandImplementation37,
 366:api.c         **** 		commandImplementation38,
 367:api.c         **** 		commandImplementation39,
 368:api.c         **** 		commandImplementation40,
 369:api.c         **** 		commandImplementation41,
 370:api.c         **** 		commandImplementation42,
 371:api.c         **** 		commandImplementation43,
 372:api.c         **** 		commandImplementation44,
 373:api.c         **** 		commandImplementation45,
 374:api.c         **** 		commandImplementation46,
 375:api.c         **** 		commandImplementation47,
 376:api.c         **** 		commandImplementation48,
 377:api.c         **** 		commandImplementation49
 378:api.c         **** };
 379:api.c         **** 
 380:api.c         **** 
 381:api.c         **** /* pointer of array for defined serial error number*/
 382:api.c         **** static const char se00[] PROGMEM = "no valid command name";
 383:api.c         **** static const char se01[] PROGMEM = "ID is too long";
 384:api.c         **** static const char se02[] PROGMEM = "mask is too long";
 385:api.c         **** static const char se03[] PROGMEM = "rtr is too long";
 386:api.c         **** static const char se04[] PROGMEM = "length is  too long";
 387:api.c         **** static const char se05[] PROGMEM = "data 0 is too long";
 388:api.c         **** static const char se06[] PROGMEM = "data 1 is too long";
 389:api.c         **** static const char se07[] PROGMEM = "data 2 is too long";
 390:api.c         **** static const char se08[] PROGMEM = "data 3 is too long";
 391:api.c         **** static const char se09[] PROGMEM = "data 4 is too long";
 392:api.c         **** static const char se10[] PROGMEM = "data 5 is too long";
 393:api.c         **** static const char se11[] PROGMEM = "data 6 is too long";
 394:api.c         **** static const char se12[] PROGMEM = "data 7 is too long";
 395:api.c         **** static const char se13[] PROGMEM = "command is too long";
 396:api.c         **** static const char se14[] PROGMEM = "argument has invalid type";
 397:api.c         **** static const char se15[] PROGMEM = "ID has invalid type";
 398:api.c         **** static const char se16[] PROGMEM = "mask has invalid type";
 399:api.c         **** static const char se17[] PROGMEM = "rtr has invalid type";
 400:api.c         **** static const char se18[] PROGMEM = "length has invalid type";
 401:api.c         **** static const char se19[] PROGMEM = "data 0 has invalid type";
 402:api.c         **** static const char se20[] PROGMEM = "data 1 has invalid type";
 403:api.c         **** static const char se21[] PROGMEM = "data 2 has invalid type";
 404:api.c         **** static const char se22[] PROGMEM = "data 3 has invalid type";
 405:api.c         **** static const char se23[] PROGMEM = "data 4 has invalid type";
 406:api.c         **** static const char se24[] PROGMEM = "data 5 has invalid type";
 407:api.c         **** static const char se25[] PROGMEM = "data 6 has invalid type";
 408:api.c         **** static const char se26[] PROGMEM = "data 7 has invalid type";
 409:api.c         **** static const char se27[] PROGMEM = "undefined error type";
 410:api.c         **** static const char se28[] PROGMEM = "first value is too long";
 411:api.c         **** static const char se29[] PROGMEM = "second value is too long";
 412:api.c         **** static const char se30[] PROGMEM = "arguments have invalid type";
 413:api.c         **** static const char se31[] PROGMEM = "argument(s) exceed(s) allowed boundary";
 414:api.c         **** static const char se32[] PROGMEM = "too many arguments";
 415:api.c         **** 
 416:api.c         **** const char *serial_error[] PROGMEM = { se00, se01, se02, se03, se04, se05, se06, se07, se08, se09, 
 417:api.c         **** 		se21, se22, se23, se24, se25, se26, se27, se28, se29, se30, se31, se32 };
 418:api.c         **** 
 419:api.c         **** 
 420:api.c         **** /* array for defined serial error number*/
 421:api.c         **** const uint8_t serial_error_number[] = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 110,
 422:api.c         **** 		111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
 423:api.c         **** 		121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
 424:api.c         **** 		131};
 425:api.c         **** 
 426:api.c         **** /* pointer of array for defined can error number*/
 427:api.c         **** 
 428:api.c         **** static const char ce00[] PROGMEM = "Can_Bus is off";
 429:api.c         **** static const char ce01[] PROGMEM = "Can_Bus is passive";
 430:api.c         **** static const char ce02[] PROGMEM = "Can_Bus is on";
 431:api.c         **** static const char ce03[] PROGMEM = "Bit Error";
 432:api.c         **** static const char ce04[] PROGMEM = "Stuff Error";
 433:api.c         **** static const char ce05[] PROGMEM = "CRC Error";
 434:api.c         **** static const char ce06[] PROGMEM = "Form Error";
 435:api.c         **** static const char ce07[] PROGMEM = "Acknowledgment Error";
 436:api.c         **** static const char ce08[] PROGMEM = "CAN was not successfully initialized";
 437:api.c         **** static const char ce09[] PROGMEM = "timeout for CAN communication";
 438:api.c         **** 
 439:api.c         **** const char *can_error[] PROGMEM = { ce00, ce01, ce02, ce03, ce04, ce05, ce06, ce07, ce08, ce09 };
 440:api.c         **** 
 441:api.c         **** /* array for defined can error number*/
 442:api.c         **** const uint8_t can_error_number[] = { 21, 22, 23, 24, 25, 26, 27, 28, 29, 210 };
 443:api.c         **** /* pointer of array for defined mailbox error */
 444:api.c         **** 
 445:api.c         **** static const char me00[] PROGMEM = "all mailboxes already in use";
 446:api.c         **** static const char me01[] PROGMEM = "message ID not found";
 447:api.c         **** static const char me02[] PROGMEM = "this message already exists";
 448:api.c         **** 
 449:api.c         **** const char *mob_error[] PROGMEM = { me00, me01, me02 };
 450:api.c         **** 
 451:api.c         **** /* array for defined mailbox error number*/
 452:api.c         **** const uint8_t mob_error_number[] = { 31, 32, 33 };
 453:api.c         **** 
 454:api.c         **** /* pointer of array for defined general error number*/
 455:api.c         **** 
 456:api.c         **** static const char ge00[] PROGMEM = "init for timer0 failed";
 457:api.c         **** static const char ge01[] PROGMEM = "init for timer0A failed";
 458:api.c         **** static const char ge02[] PROGMEM = "family code not found";
 459:api.c         **** static const char ge03[] PROGMEM = "all message were read";
 460:api.c         **** static const char ge04[] PROGMEM = "no device is connected to the bus";
 461:api.c         **** static const char ge05[] PROGMEM = "undefined bus";
 462:api.c         **** static const char ge06[] PROGMEM = "channel undefined";
 463:api.c         **** static const char ge07[] PROGMEM = "value has invalid type";
 464:api.c         **** static const char ge08[] PROGMEM = "address has invalid type";
 465:api.c         **** static const char ge09[] PROGMEM = "undefined family code";
 466:api.c         **** static const char ge10[] PROGMEM = "invalid argument";
 467:api.c         **** 
 468:api.c         **** const char *general_error[] PROGMEM = { ge00, ge01, ge02, ge03, ge04, ge05, ge06, ge07, ge08, ge09,
 469:api.c         **** 
 470:api.c         **** /* array for defined general error number*/
 471:api.c         **** const uint16_t general_error_number[] = { 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 410 };
 472:api.c         **** 
 473:api.c         **** /* pointer of array for defined general error number*/
 474:api.c         **** static const char errorType00[] PROGMEM = "ERRG"; /*general*/
 475:api.c         **** static const char errorType01[] PROGMEM = "ERRA"; /*api*/
 476:api.c         **** static const char errorType02[] PROGMEM = "ERRC"; /*can protocol*/
 477:api.c         **** static const char errorType03[] PROGMEM = "ERRM"; /*can hardware*/
 478:api.c         **** static const char errorType04[] PROGMEM = "ERRU"; /*undefined*/
 479:api.c         **** 
 480:api.c         **** /* this is the corresponding error Type array, beware of the same order*/
 481:api.c         **** const char *errorTypes[] PROGMEM = {
 482:api.c         **** 		errorType00,
 483:api.c         **** 		errorType01,
 484:api.c         **** 		errorType02,
 485:api.c         **** 		errorType03,
 486:api.c         **** 		errorType04
 487:api.c         **** };
 488:api.c         **** 
 489:api.c         **** #endif
 490:api.c         **** /*-------------------------------------------------------------------------------------------------
 491:api.c         **** 
 492:api.c         **** /*
 493:api.c         ****  *this function initializes the UART0 register needed to allow the at90can128
 494:api.c         ****  *USART transmissions
 495:api.c         ****  */
 496:api.c         **** int8_t UART0_Init( void )
 497:api.c         **** {
 145               	.LM0:
 146               	/* prologue: frame size=0 */
 147               	/* prologue end (size=0) */
 498:api.c         **** 	uint8_t intstate1 = SREG;/*save global interrupt flag*/
 149               	.LM1:
 150 0000 9FB7      		in r25,95-0x20
 499:api.c         **** 	cli();
 152               	.LM2:
 153               	/* #APP */
 154 0002 F894      		cli
 500:api.c         **** 	/*disable interrupt*/
 501:api.c         **** 	while ( 0 << TXC0 )
 502:api.c         **** 	{
 503:api.c         **** #warning timeout needed
 504:api.c         **** 	}
 505:api.c         **** 	/* set baud rate*/
 506:api.c         **** 	UBRR0H = (uint8_t) ( BAUD >> 8 );
 156               	.LM3:
 157               	/* #NOAPP */
 158 0004 1092 C500 		sts 197,__zero_reg__
 507:api.c         **** 	UBRR0L = (uint8_t) ( BAUD );
 160               	.LM4:
 161 0008 8AE0      		ldi r24,lo8(10)
 162 000a 8093 C400 		sts 196,r24
 508:api.c         **** 	/* set frame format: i will set it now as 8 bits, no parity 1 stop bit, asynchronous*/
 509:api.c         **** 	UCSR0C = ( 0 << UMSEL0 ) | ( 0 << UPM0 ) | ( 0 << USBS0 ) | ( 3 << UCSZ0 );
 164               	.LM5:
 165 000e 86E0      		ldi r24,lo8(6)
 166 0010 8093 C200 		sts 194,r24
 510:api.c         **** 	/*set double speed*/
 511:api.c         **** 	UCSR0A = ( 1 << U2X0 );
 168               	.LM6:
 169 0014 82E0      		ldi r24,lo8(2)
 170 0016 8093 C000 		sts 192,r24
 512:api.c         **** 	/*enable receiver and transmitter; enable RX and Data register empty interrupt*/
 513:api.c         **** 	UCSR0B = ( 1 << TXEN0 ) | ( 1 << RXEN0 ) | ( 1 << RXCIE0 );
 172               	.LM7:
 173 001a 88E9      		ldi r24,lo8(-104)
 174 001c 8093 C100 		sts 193,r24
 514:api.c         **** 	SREG = intstate1; /*restore global interrupt flag*/
 176               	.LM8:
 177 0020 9FBF      		out 95-0x20,r25
 515:api.c         **** 	return 1;
 516:api.c         **** }//END of  UART0_Init
 179               	.LM9:
 180 0022 81E0      		ldi r24,lo8(1)
 181 0024 90E0      		ldi r25,hi8(1)
 182               	/* epilogue: frame size=0 */
 183 0026 0895      		ret
 184               	/* epilogue end (size=1) */
 185               	/* function UART0_Init size 21 (20) */
 190               	.Lscope0:
 192               	.global	Timer0_Init
 194               	Timer0_Init:
 517:api.c         **** 
 518:api.c         **** 
 519:api.c         **** 
 520:api.c         **** 
 521:api.c         **** /*
 522:api.c         ****  *this function initializes the 8 bit counter
 523:api.c         ****  * the function has not input parameter
 524:api.c         ****  */
 525:api.c         **** 
 526:api.c         **** int8_t Timer0_Init( void )
 527:api.c         **** {
 196               	.LM10:
 197               	/* prologue: frame size=0 */
 198               	/* prologue end (size=0) */
 528:api.c         **** 	uint8_t intstate3 = SREG; /* save global interrupt flag */
 200               	.LM11:
 201 0028 9FB7      		in r25,95-0x20
 529:api.c         **** 	cli(); /* disable interrupt */
 203               	.LM12:
 204               	/* #APP */
 205 002a F894      		cli
 530:api.c         **** 	TCCR0A = ( 1 << CS02 ) | ( 0 << CS01 ) | ( 1 << CS00 ); /* set Prescaler 1024 */
 207               	.LM13:
 208               	/* #NOAPP */
 209 002c 85E0      		ldi r24,lo8(5)
 210 002e 84BD      		out 68-0x20,r24
 531:api.c         **** 	TIMSK0 |= ( 1 << TOIE0 ); /* Timer0 Overflow enable */
 212               	.LM14:
 213 0030 EEE6      		ldi r30,lo8(110)
 214 0032 F0E0      		ldi r31,hi8(110)
 215 0034 8081      		ld r24,Z
 216 0036 8160      		ori r24,lo8(1)
 217 0038 8083      		st Z,r24
 532:api.c         **** 	SREG = intstate3; /* restore global interrupt flag */
 219               	.LM15:
 220 003a 9FBF      		out 95-0x20,r25
 533:api.c         **** 	return 1;
 534:api.c         **** }// END of Timer0_Init
 222               	.LM16:
 223 003c 81E0      		ldi r24,lo8(1)
 224 003e 90E0      		ldi r25,hi8(1)
 225               	/* epilogue: frame size=0 */
 226 0040 0895      		ret
 227               	/* epilogue end (size=1) */
 228               	/* function Timer0_Init size 14 (13) */
 233               	.Lscope1:
 235               	.global	Timer0A_Init
 237               	Timer0A_Init:
 535:api.c         **** 
 536:api.c         **** 
 537:api.c         **** /*
 538:api.c         ****  *this function initializes the 8 bit counter with output compareA
 539:api.c         ****  * the function has not input parameter
 540:api.c         ****  * the output parameter is an integer
 541:api.c         ****  * 1 -> the timer initializierung for timer 0 was successfully
 542:api.c         ****  */
 543:api.c         **** 
 544:api.c         **** int8_t Timer0A_Init( void )
 545:api.c         **** {
 239               	.LM17:
 240               	/* prologue: frame size=0 */
 241               	/* prologue end (size=0) */
 546:api.c         **** 	uint8_t intstate4 = SREG; /* save global interrupt flag */
 243               	.LM18:
 244 0042 9FB7      		in r25,95-0x20
 547:api.c         **** 	cli();  /* disable interrupt */
 246               	.LM19:
 247               	/* #APP */
 248 0044 F894      		cli
 548:api.c         **** 	TCCR0A = ( 1 << FOC0A ) | ( 1 << CS02 ) | ( 0 << CS01 ) | ( 1 << CS00 ); /* set Prescaler 1024 */
 250               	.LM20:
 251               	/* #NOAPP */
 252 0046 85E8      		ldi r24,lo8(-123)
 253 0048 84BD      		out 68-0x20,r24
 549:api.c         **** 	OCR0A = 255;
 255               	.LM21:
 256 004a 8FEF      		ldi r24,lo8(-1)
 257 004c 87BD      		out 71-0x20,r24
 550:api.c         **** 	TCNT0 = 20;
 259               	.LM22:
 260 004e 84E1      		ldi r24,lo8(20)
 261 0050 86BD      		out 70-0x20,r24
 551:api.c         **** 	TIMSK0 |= ( 1 << OCIE0A ); /* enable compare output Interrupt */
 263               	.LM23:
 264 0052 EEE6      		ldi r30,lo8(110)
 265 0054 F0E0      		ldi r31,hi8(110)
 266 0056 8081      		ld r24,Z
 267 0058 8260      		ori r24,lo8(2)
 268 005a 8083      		st Z,r24
 552:api.c         **** 	SREG = intstate4; /*restore global interrupt flag */
 270               	.LM24:
 271 005c 9FBF      		out 95-0x20,r25
 553:api.c         **** 	return 1;
 554:api.c         **** }//END of int8_t Timer0A_Init
 273               	.LM25:
 274 005e 81E0      		ldi r24,lo8(1)
 275 0060 90E0      		ldi r25,hi8(1)
 276               	/* epilogue: frame size=0 */
 277 0062 0895      		ret
 278               	/* epilogue end (size=1) */
 279               	/* function Timer0A_Init size 18 (17) */
 284               	.Lscope2:
 287               	.global	Check_Parameter_CanFormat
 289               	Check_Parameter_CanFormat:
 555:api.c         **** 
 556:api.c         **** /* this function processes an UART event
 557:api.c         ****  * i.e.
 558:api.c         ****  * - parsing it
 559:api.c         ****  * - finding command keywords
 560:api.c         ****  * - converting command arguments into an structure
 561:api.c         ****  * - check the parameter boundaries and types (integer)
 562:api.c         ****  * - check for errors
 563:api.c         ****  * - choose the corresponding function
 564:api.c         ****  * - resetting data structures
 565:api.c         ****  *
 566:api.c         ****  * no direct input: use of global variable decrypt_uartStruct
 567:api.c         ****  * no return value
 568:api.c         ****  */
 569:api.c         **** 
 570:api.c         **** void Process_Uart_Event(void)
 571:api.c         **** {
 572:api.c         **** 	/* split uart string into its elements */
 573:api.c         **** 
 574:api.c         **** 	int8_t number_of_elements = -1;
 575:api.c         **** 	number_of_elements = Decrypt_Uart_String();
 576:api.c         **** 
 577:api.c         **** 	if ( 0 < number_of_elements  )
 578:api.c         **** 	{
 579:api.c         **** 		/* set number of arguments */
 580:api.c         **** 		ptr_uartStruct->number_of_arguments = number_of_elements -1;
 581:api.c         **** 
 582:api.c         **** 		/* Find matching command keyword */
 583:api.c         **** 		ptr_uartStruct->commandKeywordIndex = Parse_Keyword(setParameter[0]);
 584:api.c         **** 
 585:api.c         **** 		if ( eventDebug <= debug && ( ( debugMask >> debugCommandKey ) & 1 ) )
 586:api.c         **** 		{
 587:api.c         **** 			snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) keywordIndex of %s is %i"
 588:api.c         **** 			UART0_Send_Message_String(NULL,0);
 589:api.c         **** 		}
 590:api.c         **** 
 591:api.c         **** 		/* no matching keyword ?*/
 592:api.c         **** 		if ( 0 > ptr_uartStruct->commandKeywordIndex )
 593:api.c         **** 		{
 594:api.c         **** 			Check_Error(ptr_uartStruct);
 595:api.c         **** 		}
 596:api.c         **** 		else
 597:api.c         **** 		{
 598:api.c         **** 			switch(ptr_uartStruct->commandKeywordIndex)
 599:api.c         **** 			{
 600:api.c         **** 			case commandKeyNumber_HELP: /*use its own parameter handling*/
 601:api.c         **** 			case commandKeyNumber_SHOW: /*use its own parameter handling*/
 602:api.c         **** 			case commandKeyNumber_OWSA: /*use its own parameter handling*/
 603:api.c         **** 			case commandKeyNumber_OWSC: /*use its own parameter handling*/
 604:api.c         **** 			case commandKeyNumber_RLTH: /*use its own parameter handling*/
 605:api.c         **** 			   Choose_Function(ptr_uartStruct);
 606:api.c         **** 				break;
 607:api.c         **** 			case commandKeyNumber_OWTP: /*use its own parameter handling, ID access*/
 608:api.c         **** 			case commandKeyNumber_OWAD: /*use its own parameter handling, ID access*/
 609:api.c         **** 			case commandKeyNumber_OWDS: /*use its own parameter handling, ID access*/
 610:api.c         **** 			case commandKeyNumber_OWSS: /*use its own parameter handling, ID access*/
 611:api.c         **** 			case commandKeyNumber_OWON: /*use its own parameter handling, ID access*/
 612:api.c         **** 			case commandKeyNumber_OWMR: /*use its own parameter handling, ID access*/
 613:api.c         **** 			   if ( 0 == ConvertUartDataToOwiStruct() )
 614:api.c         **** 			   {
 615:api.c         **** 			      Choose_Function(ptr_uartStruct);
 616:api.c         **** 			   }
 617:api.c         **** 			   break;
 618:api.c         **** 			default:
 619:api.c         **** 				/* call the function for the conversion frameformat in Canformat*/
 620:api.c         **** 				Convert_UartData_to_UartStruct(setParameter);
 621:api.c         **** 				/*call the function Check_Parameter*/
 622:api.c         **** 				/* TODO: improve this for different command keywords than CAN based,
 623:api.c         **** 				 * i.e. think to do checks maybe later when already having chosen the
 624:api.c         **** 				 * right function*/
 625:api.c         **** 				if ( TRUE == Check_Parameter(ptr_uartStruct) )
 626:api.c         **** 				{
 627:api.c         **** 					Choose_Function(ptr_uartStruct);
 628:api.c         **** 				}
 629:api.c         **** 				else
 630:api.c         **** 				{
 631:api.c         **** 					Check_Error(ptr_uartStruct);
 632:api.c         **** 				}
 633:api.c         **** 				break;
 634:api.c         **** 			}
 635:api.c         **** 		}
 636:api.c         **** 	}
 637:api.c         **** 
 638:api.c         **** 	/*clear the variables*/
 639:api.c         **** 	Reset_SetParameter();
 640:api.c         **** 	Reset_UartStruct(ptr_uartStruct);
 641:api.c         **** 	clearString(decrypt_uartString, BUFFER_SIZE);
 642:api.c         **** 
 643:api.c         **** 	return;
 644:api.c         **** }
 645:api.c         **** 
 646:api.c         **** /*
 647:api.c         ****  * this function splits the string to receive various parameters
 648:api.c         ****  * no direct input : use of global variable decrypt_uartString
 649:api.c         ****  * no direct output: use of global variable setParameter
 650:api.c         ****  * return value:
 651:api.c         ****  *          number of found elements,
 652:api.c         ****  *          FALSE else
 653:api.c         ****  */
 654:api.c         **** 
 655:api.c         **** int8_t Decrypt_Uart_String( void )
 656:api.c         **** {
 657:api.c         **** 	uint8_t index_parameter;
 658:api.c         **** 
 659:api.c         **** 	/* maximum length check of input */
 660:api.c         **** 
 661:api.c         **** 	if ( MAX_LENGTH_COMMAND < strlen(decrypt_uartString) )
 662:api.c         **** 	{
 663:api.c         **** 		uart_errorCode = CommunicationError(ERRA, SERIAL_ERROR_command_is_too_long, 0, NULL, 0);
 664:api.c         **** 
 665:api.c         **** 		/* reset */
 666:api.c         **** 		clearString(decrypt_uartString, BUFFER_SIZE);
 667:api.c         **** 		/* "reset": decrypt_uartString[0] = '\0'; */
 668:api.c         **** 
 669:api.c         **** 		return 0;
 670:api.c         **** 	}
 671:api.c         **** 
 672:api.c         **** 	/*
 673:api.c         **** 	 * disassemble the decrypt_uartString into stringlets
 674:api.c         **** 	 * separated by delimiters "delim"
 675:api.c         **** 	 * into elements of array setParameter
 676:api.c         **** 	 */
 677:api.c         **** 
 678:api.c         **** 	const char *delims = " ";
 679:api.c         **** 	char *test = NULL;
 680:api.c         **** 	char *result = NULL; /* pointer init */
 681:api.c         **** 
 682:api.c         **** 	/* initial iteration */
 683:api.c         **** 	result = strtok_r(decrypt_uartString, delims, &test); /*search spaces in string */
 684:api.c         **** 	index_parameter = 0; /* pointer of setParameter*/
 685:api.c         **** 
 686:api.c         **** 	while ( result != NULL )
 687:api.c         **** 	{
 688:api.c         **** 		if (MAX_LENGTH_PARAMETER < strlen(result))
 689:api.c         **** 		{
 690:api.c         **** 			/* TODO: create correct error code*/
 691:api.c         **** 			uart_errorCode = CommunicationError(ERRA, SERIAL_ERROR_command_is_too_long, 0, NULL, 0);
 692:api.c         **** 		    clearString(decrypt_uartString, BUFFER_SIZE);
 693:api.c         **** 		    /* "reset": decrypt_uartString[0] = '\0'; */
 694:api.c         **** 
 695:api.c         **** 			return 0;
 696:api.c         **** 		}
 697:api.c         **** 
 698:api.c         **** 		strncpy(setParameter[index_parameter], result, MAX_LENGTH_PARAMETER);
 699:api.c         **** 		result = strtok_r(NULL, delims, &test);
 700:api.c         **** 		index_parameter++;
 701:api.c         **** 
 702:api.c         **** 		if ( MAX_PARAMETER < index_parameter )
 703:api.c         **** 		{
 704:api.c         **** 			uart_errorCode = CommunicationError(ERRA, SERIAL_ERROR_too_many_arguments, 0, NULL, 0);
 705:api.c         **** 	        clearString(decrypt_uartString, BUFFER_SIZE);
 706:api.c         **** 	        /* "reset": decrypt_uartString[0] = '\0'; */
 707:api.c         **** 			return 0;
 708:api.c         **** 		}
 709:api.c         **** 	}
 710:api.c         **** 
 711:api.c         **** 	if ( eventDebug <= debug && ( ( debugMask >> debugDecrypt ) & 0x1 ) )
 712:api.c         **** 	{
 713:api.c         **** 		snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) found %i arguments "), __L
 714:api.c         **** 		UART0_Send_Message_String(NULL,0);
 715:api.c         **** 	}
 716:api.c         **** 
 717:api.c         ****     clearString(decrypt_uartString, BUFFER_SIZE);
 718:api.c         ****      /* "reset": decrypt_uartString[0] = '\0'; */
 719:api.c         **** 
 720:api.c         **** 	return index_parameter;
 721:api.c         **** 
 722:api.c         **** }//END of Decrypt_Uart_String function
 723:api.c         **** 
 724:api.c         **** 
 725:api.c         **** /*
 726:api.c         ****  *this function assigns the various parameters of the string to the structure and reviewed the rang
 727:api.c         ****  *the  function has a two dimensional array from string via serial interface as input and returns n
 728:api.c         ****  */
 729:api.c         **** 
 730:api.c         **** void Convert_UartData_to_UartStruct( char string[MAX_PARAMETER][MAX_LENGTH_PARAMETER] )
 731:api.c         **** {
 732:api.c         **** 	/* convert char in Hexadezimal*/
 733:api.c         **** 
 734:api.c         **** 	//   ptr_uartStruct->Name = setParameter[0];
 735:api.c         **** 	ptr_uartStruct->Uart_Message_ID = (uint32_t) strtoul(setParameter [1], &ptr_setParameter[1], 16);
 736:api.c         **** 	ptr_uartStruct->Uart_Mask       = (uint32_t) strtoul(setParameter [2], &ptr_setParameter[2], 16);
 737:api.c         **** 	ptr_uartStruct->Uart_Rtr        = (uint8_t)  strtoul(setParameter [3], &ptr_setParameter[3], 16);
 738:api.c         **** 	ptr_uartStruct->Uart_Length     = (uint8_t)  strtoul(setParameter [4], &ptr_setParameter[4], 16);
 739:api.c         **** 	ptr_uartStruct->Uart_Data[0]    = (uint16_t) strtoul(setParameter [5], &ptr_setParameter[5], 16);
 740:api.c         **** 	ptr_uartStruct->Uart_Data[1]    = (uint16_t) strtoul(setParameter [6], &ptr_setParameter[6], 16);
 741:api.c         **** 	ptr_uartStruct->Uart_Data[2]    = (uint16_t) strtoul(setParameter [7], &ptr_setParameter[7], 16);
 742:api.c         **** 	ptr_uartStruct->Uart_Data[3]    = (uint16_t) strtoul(setParameter [8], &ptr_setParameter[8], 16);
 743:api.c         **** 	ptr_uartStruct->Uart_Data[4]    = (uint16_t) strtoul(setParameter [9], &ptr_setParameter[9], 16);
 744:api.c         **** 	ptr_uartStruct->Uart_Data[5]    = (uint16_t) strtoul(setParameter[10], &ptr_setParameter[10], 16);
 745:api.c         **** 	ptr_uartStruct->Uart_Data[6]    = (uint16_t) strtoul(setParameter[11], &ptr_setParameter[11], 16);
 746:api.c         **** 	ptr_uartStruct->Uart_Data[7]    = (uint16_t) strtoul(setParameter[12], &ptr_setParameter[12], 16);
 747:api.c         **** 
 748:api.c         **** } // END of function Convert_UartFormat_to_CanFormat
 749:api.c         **** 
 750:api.c         **** /* this function parses for all valid command matching keyword
 751:api.c         ****  * on the first MAX_LENGTH_PARAMETER characters of the string
 752:api.c         ****  *
 753:api.c         ****  * it has an char pointer as input
 754:api.c         ****  * it returns
 755:api.c         ****  *     the commandKeyNumber of the corresponding command key word
 756:api.c         ****  *     -1 if not found
 757:api.c         ****  *     -99 on error
 758:api.c         ****  */
 759:api.c         **** 
 760:api.c         **** int Parse_Keyword(char string[])
 761:api.c         **** {
 762:api.c         **** 	static int8_t keywordNumber;
 763:api.c         **** 
 764:api.c         **** 	if (NULL == string   ) {return -99;}
 765:api.c         **** 	if (STRING_END  == string[0]) {return -99;}
 766:api.c         **** 
 767:api.c         **** 	if ( eventDebug <= debug && ( ( debugMask >> debugCommandKey ) & 1 ) )
 768:api.c         **** 	{
 769:api.c         **** 		snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) Parse_Keyword %s"), __LINE
 770:api.c         **** 		UART0_Send_Message_String(NULL,0);
 771:api.c         **** 	}
 772:api.c         **** 	for ( keywordNumber = 0; keywordNumber < commandKeyNumber_MAXIMUM_NUMBER ; keywordNumber++ )
 773:api.c         **** 	{
 774:api.c         ****        /*exclude list*/
 775:api.c         ****        if ( commandKeyNumber_OWON == keywordNumber) { continue; }
 776:api.c         **** 
 777:api.c         **** 		if ( 0 == strncmp_P(&string[0], (const char*) (pgm_read_word( &(commandKeywords[keywordNumber])))
 778:api.c         **** 		{
 779:api.c         ****            if ( eventDebug <= debug && ( ( debugMask >> debugCommandKey ) & 0x1 ) )
 780:api.c         ****             {
 781:api.c         ****                snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) fcn:ParseKeyw
 782:api.c         ****                           __LINE__, __FILE__, string);
 783:api.c         ****                strncat_P(uart_message_string,(const char*) (pgm_read_word( &(commandKeywords[keywor
 784:api.c         ****                UART0_Send_Message_String(NULL,0);
 785:api.c         ****             }
 786:api.c         **** 
 787:api.c         **** 			return keywordNumber;
 788:api.c         **** 		}
 789:api.c         ****         else
 790:api.c         ****           {
 791:api.c         ****              if ( eventDebugVerbose <= debug && ((debugMask >> debugCommandKey) & 0x1))
 792:api.c         ****              {
 793:api.c         ****                 snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) fcn:ParseKey
 794:api.c         ****                            __LINE__, __FILE__, string);
 795:api.c         ****                 strncat_P(uart_message_string,(const char*) (pgm_read_word( &(commandKeywords[keywo
 796:api.c         ****                 UART0_Send_Message_String(NULL,0);
 797:api.c         ****              }
 798:api.c         ****           }
 799:api.c         **** 
 800:api.c         **** 	}
 801:api.c         **** 	return -1;
 802:api.c         **** }
 803:api.c         **** 
 804:api.c         **** /* this function checks whether all the received parameters are valid
 805:api.c         ****  * the function has a pointer of the serial structure as input and
 806:api.c         ****  * returns TRUE if all checks are passed
 807:api.c         ****  * else FALSE
 808:api.c         ****  */
 809:api.c         **** 
 810:api.c         **** int8_t Check_Parameter( struct uartStruct *ptr_uartStruct )
 811:api.c         **** {
 812:api.c         **** 	/*check correct keyword*/
 813:api.c         **** 	/*check range of parameter*/
 814:api.c         **** 	return ( 0 <= ptr_uartStruct->commandKeywordIndex && TRUE == Check_Parameter_CanFormat(ptr_uartStr
 815:api.c         **** }
 816:api.c         **** 
 817:api.c         **** /* this function checks whether all the received parameters are valid
 818:api.c         ****  * the function has a pointer of the serial structure as input and returns no parameter
 819:api.c         ****  * returns TRUE if all checks are passed
 820:api.c         ****  * returns FALSE else
 821:api.c         ****  */
 822:api.c         **** 
 823:api.c         **** int8_t Check_Parameter_CanFormat( struct uartStruct *ptr_uartStruct )
 824:api.c         **** {
 291               	.LM26:
 292               	/* prologue: frame size=0 */
 293 0064 CF93      		push r28
 294 0066 DF93      		push r29
 295               	/* prologue end (size=2) */
 296 0068 EC01      		movw r28,r24
 297 006a A0E0      		ldi r26,lo8(ptr_setParameter+2)
 298 006c B0E0      		ldi r27,hi8(ptr_setParameter+2)
 299               	.L8:
 300               	.LBB6:
 825:api.c         ****    /*check range of parameter*/
 826:api.c         **** 
 827:api.c         ****    for (uint8_t index = 1; index < MAX_PARAMETER; index ++)
 828:api.c         ****    {
 829:api.c         ****       if ( 0 != *ptr_setParameter[index] ) return FALSE;
 302               	.LM27:
 303 006e ED91      		ld r30,X+
 304 0070 FC91      		ld r31,X
 305 0072 1197      		sbiw r26,1
 306 0074 8081      		ld r24,Z
 307 0076 8823      		tst r24
 308 0078 01F4      		brne .L9
 309 007a 1296      		adiw r26,2
 311               	.LM28:
 312 007c 20E0      		ldi r18,hi8(ptr_setParameter+26)
 313 007e A030      		cpi r26,lo8(ptr_setParameter+26)
 314 0080 B207      		cpc r27,r18
 315 0082 01F4      		brne .L8
 316               	.LBE6:
 830:api.c         ****    }
 831:api.c         **** 
 832:api.c         ****    if ( 0x7FFFFFF  < ptr_uartStruct->Uart_Message_ID ) return FALSE;
 318               	.LM29:
 319 0084 8881      		ld r24,Y
 320 0086 9981      		ldd r25,Y+1
 321 0088 AA81      		ldd r26,Y+2
 322 008a BB81      		ldd r27,Y+3
 323 008c 8050      		subi r24,lo8(134217728)
 324 008e 9040      		sbci r25,hi8(134217728)
 325 0090 A040      		sbci r26,hlo8(134217728)
 326 0092 B840      		sbci r27,hhi8(134217728)
 327 0094 00F4      		brsh .L9
 833:api.c         ****    if ( 0x7FFFFFF  < ptr_uartStruct->Uart_Mask       ) return FALSE;
 329               	.LM30:
 330 0096 8C81      		ldd r24,Y+4
 331 0098 9D81      		ldd r25,Y+5
 332 009a AE81      		ldd r26,Y+6
 333 009c BF81      		ldd r27,Y+7
 334 009e 8050      		subi r24,lo8(134217728)
 335 00a0 9040      		sbci r25,hi8(134217728)
 336 00a2 A040      		sbci r26,hlo8(134217728)
 337 00a4 B840      		sbci r27,hhi8(134217728)
 338 00a6 00F4      		brsh .L9
 834:api.c         ****    if ( 1          < ptr_uartStruct->Uart_Rtr        ) return FALSE;
 340               	.LM31:
 341 00a8 8885      		ldd r24,Y+8
 342 00aa 8230      		cpi r24,lo8(2)
 343 00ac 00F0      		brlo .L29
 344               	.L9:
 835:api.c         ****    if ( 8          < ptr_uartStruct->Uart_Length     ) return FALSE;
 836:api.c         ****    if ( 0XFF       < ptr_uartStruct->Uart_Data[0]    ) return FALSE;
 837:api.c         ****    if ( 0XFF       < ptr_uartStruct->Uart_Data[1]    ) return FALSE;
 838:api.c         ****    if ( 0XFF       < ptr_uartStruct->Uart_Data[2]    ) return FALSE;
 839:api.c         ****    if ( 0XFF       < ptr_uartStruct->Uart_Data[3]    ) return FALSE;
 840:api.c         ****    if ( 0XFF       < ptr_uartStruct->Uart_Data[4]    ) return FALSE;
 841:api.c         ****    if ( 0XFF       < ptr_uartStruct->Uart_Data[5]    ) return FALSE;
 842:api.c         ****    if ( 0XFF       < ptr_uartStruct->Uart_Data[6]    ) return FALSE;
 346               	.LM32:
 347 00ae 80E0      		ldi r24,lo8(0)
 348 00b0 90E0      		ldi r25,hi8(0)
 349 00b2 00C0      		rjmp .L24
 350               	.L29:
 352               	.LM33:
 353 00b4 8985      		ldd r24,Y+9
 354 00b6 8930      		cpi r24,lo8(9)
 355 00b8 00F4      		brsh .L9
 357               	.LM34:
 358 00ba 8A85      		ldd r24,Y+10
 359 00bc 9B85      		ldd r25,Y+11
 360 00be 8F3F      		cpi r24,255
 361 00c0 9105      		cpc r25,__zero_reg__
 362 00c2 01F0      		breq .+2
 363 00c4 00F4      		brsh .L9
 365               	.LM35:
 366 00c6 8C85      		ldd r24,Y+12
 367 00c8 9D85      		ldd r25,Y+13
 368 00ca 8F3F      		cpi r24,255
 369 00cc 9105      		cpc r25,__zero_reg__
 370 00ce 01F0      		breq .+2
 371 00d0 00F4      		brsh .L9
 373               	.LM36:
 374 00d2 8E85      		ldd r24,Y+14
 375 00d4 9F85      		ldd r25,Y+15
 376 00d6 8F3F      		cpi r24,255
 377 00d8 9105      		cpc r25,__zero_reg__
 378 00da 01F0      		breq .+2
 379 00dc 00F4      		brsh .L9
 381               	.LM37:
 382 00de 8889      		ldd r24,Y+16
 383 00e0 9989      		ldd r25,Y+17
 384 00e2 8F3F      		cpi r24,255
 385 00e4 9105      		cpc r25,__zero_reg__
 386 00e6 01F0      		breq .+2
 387 00e8 00F4      		brsh .L9
 389               	.LM38:
 390 00ea 8A89      		ldd r24,Y+18
 391 00ec 9B89      		ldd r25,Y+19
 392 00ee 8F3F      		cpi r24,255
 393 00f0 9105      		cpc r25,__zero_reg__
 394 00f2 01F0      		breq .+2
 395 00f4 00F4      		brsh .L9
 397               	.LM39:
 398 00f6 8C89      		ldd r24,Y+20
 399 00f8 9D89      		ldd r25,Y+21
 400 00fa 8F3F      		cpi r24,255
 401 00fc 9105      		cpc r25,__zero_reg__
 402 00fe 01F0      		breq .+2
 403 0100 00F4      		brsh .L9
 405               	.LM40:
 406 0102 8E89      		ldd r24,Y+22
 407 0104 9F89      		ldd r25,Y+23
 408 0106 8F3F      		cpi r24,255
 409 0108 9105      		cpc r25,__zero_reg__
 410 010a 01F0      		breq .+2
 411 010c 00F4      		brsh .L9
 412 010e 20E0      		ldi r18,lo8(0)
 413 0110 888D      		ldd r24,Y+24
 414 0112 998D      		ldd r25,Y+25
 415 0114 8F3F      		cpi r24,255
 416 0116 9105      		cpc r25,__zero_reg__
 417 0118 01F0      		breq .L23
 418 011a 00F0      		brlo .L23
 419 011c 21E0      		ldi r18,lo8(1)
 420               	.L23:
 421 011e 81E0      		ldi r24,lo8(1)
 422 0120 2827      		eor r18,r24
 423 0122 822F      		mov r24,r18
 424 0124 9927      		clr r25
 425               	.L24:
 426               	/* epilogue: frame size=0 */
 427 0126 DF91      		pop r29
 428 0128 CF91      		pop r28
 429 012a 0895      		ret
 430               	/* epilogue end (size=3) */
 431               	/* function Check_Parameter_CanFormat size 106 (101) */
 433               	.Lscope3:
 436               	.global	Check_Parameter
 438               	Check_Parameter:
 440               	.LM41:
 441               	/* prologue: frame size=0 */
 442               	/* prologue end (size=0) */
 443 012c FC01      		movw r30,r24
 445               	.LM42:
 446 012e 828D      		ldd r24,Z+26
 447 0130 87FD      		sbrc r24,7
 448 0132 00C0      		rjmp .L36
 450               	.LM43:
 451 0134 CF01      		movw r24,r30
 452 0136 0E94 0000 		call Check_Parameter_CanFormat
 453 013a 90E0      		ldi r25,lo8(0)
 454 013c 8130      		cpi r24,lo8(1)
 455 013e 01F0      		breq .L34
 456 0140 91E0      		ldi r25,lo8(1)
 457               	.L34:
 458 0142 81E0      		ldi r24,lo8(1)
 459 0144 9827      		eor r25,r24
 460 0146 892F      		mov r24,r25
 461 0148 9927      		clr r25
 462 014a 87FD      		sbrc r24,7
 463 014c 9095      		com r25
 465               	.LM44:
 466 014e 0895      		ret
 467               	.L36:
 469               	.LM45:
 470 0150 80E0      		ldi r24,lo8(0)
 471 0152 90E0      		ldi r25,hi8(0)
 472 0154 0895      		ret
 473               	/* epilogue: frame size=0 */
 474               	/* epilogue: noreturn */
 475               	/* epilogue end (size=0) */
 476               	/* function Check_Parameter size 21 (21) */
 478               	.Lscope4:
 480               	.global	Reset_SetParameter
 482               	Reset_SetParameter:
 843:api.c         ****    if ( 0XFF       < ptr_uartStruct->Uart_Data[7]    ) return FALSE;
 844:api.c         ****    return TRUE;
 845:api.c         **** 
 846:api.c         **** }
 847:api.c         **** 
 848:api.c         **** /* this function clears the container setParameter
 849:api.c         ****  * the function has no input
 850:api.c         ****  */
 851:api.c         **** 
 852:api.c         **** void Reset_SetParameter()
 853:api.c         **** {
 484               	.LM46:
 485               	/* prologue: frame size=0 */
 486 0156 CF93      		push r28
 487 0158 DF93      		push r29
 488               	/* prologue end (size=2) */
 489 015a A0E0      		ldi r26,lo8(setParameter)
 490 015c B0E0      		ldi r27,hi8(setParameter)
 491 015e C0E0      		ldi r28,lo8(ptr_setParameter)
 492 0160 D0E0      		ldi r29,hi8(ptr_setParameter)
 493               	.L38:
 494               	.LBB7:
 854:api.c         ****    for ( uint8_t count_setParameter = 0 ; count_setParameter < MAX_PARAMETER ; count_setParameter++
 855:api.c         ****    {
 856:api.c         ****       setParameter[count_setParameter][0] = '\0';
 496               	.LM47:
 497 0162 1C92      		st X,__zero_reg__
 857:api.c         ****       *ptr_setParameter[count_setParameter] = 0;
 499               	.LM48:
 500 0164 E991      		ld r30,Y+
 501 0166 F991      		ld r31,Y+
 502 0168 1082      		st Z,__zero_reg__
 503 016a 5996      		adiw r26,25
 505               	.LM49:
 506 016c 80E0      		ldi r24,hi8(setParameter+325)
 507 016e A030      		cpi r26,lo8(setParameter+325)
 508 0170 B807      		cpc r27,r24
 509 0172 01F4      		brne .L38
 510               	.LBE7:
 511               	/* epilogue: frame size=0 */
 512 0174 DF91      		pop r29
 513 0176 CF91      		pop r28
 514 0178 0895      		ret
 515               	/* epilogue end (size=3) */
 516               	/* function Reset_SetParameter size 18 (13) */
 518               	.Lscope5:
 521               	.global	Reset_UartStruct
 523               	Reset_UartStruct:
 858:api.c         **** 
 859:api.c         ****    }
 860:api.c         **** }
 861:api.c         **** 
 862:api.c         **** /* this function clears the container pointed to by ptr_uartStruct
 863:api.c         ****  * the function has as input a pointer to an uartStruct structure
 864:api.c         ****  */
 865:api.c         **** 
 866:api.c         **** void Reset_UartStruct( struct uartStruct *ptr_uartStruct )
 867:api.c         **** {
 525               	.LM50:
 526               	/* prologue: frame size=0 */
 527               	/* prologue end (size=0) */
 528 017a FC01      		movw r30,r24
 868:api.c         ****    if ( NULL != ptr_uartStruct )
 530               	.LM51:
 531 017c 892B      		or r24,r25
 532 017e 01F0      		breq .L47
 869:api.c         ****    {
 870:api.c         ****       ptr_uartStruct->Uart_Length = 0;
 534               	.LM52:
 535 0180 1186      		std Z+9,__zero_reg__
 871:api.c         ****       ptr_uartStruct->Uart_Mask = 0;
 537               	.LM53:
 538 0182 1482      		std Z+4,__zero_reg__
 539 0184 1582      		std Z+5,__zero_reg__
 540 0186 1682      		std Z+6,__zero_reg__
 541 0188 1782      		std Z+7,__zero_reg__
 872:api.c         ****       ptr_uartStruct->Uart_Message_ID = 0;
 543               	.LM54:
 544 018a 1082      		st Z,__zero_reg__
 545 018c 1182      		std Z+1,__zero_reg__
 546 018e 1282      		std Z+2,__zero_reg__
 547 0190 1382      		std Z+3,__zero_reg__
 873:api.c         ****       ptr_uartStruct->Uart_Rtr = 0;
 549               	.LM55:
 550 0192 1086      		std Z+8,__zero_reg__
 874:api.c         ****       ptr_uartStruct->commandKeywordIndex = -1;
 552               	.LM56:
 553 0194 8FEF      		ldi r24,lo8(-1)
 554 0196 828F      		std Z+26,r24
 875:api.c         ****       ptr_uartStruct->number_of_arguments = -1;
 556               	.LM57:
 557 0198 838F      		std Z+27,r24
 558 019a 80E0      		ldi r24,lo8(0)
 559               	.L46:
 560               	.LBB8:
 876:api.c         ****       for ( uint8_t i = 0 ; i < 8 ; i++ )
 877:api.c         ****       {
 878:api.c         ****          ptr_uartStruct->Uart_Data[i] = 0;
 562               	.LM58:
 563 019c 1386      		std Z+11,__zero_reg__
 564 019e 1286      		std Z+10,__zero_reg__
 566               	.LM59:
 567 01a0 8F5F      		subi r24,lo8(-(1))
 568 01a2 3296      		adiw r30,2
 569 01a4 8830      		cpi r24,lo8(8)
 570 01a6 01F4      		brne .L46
 571               	.L47:
 572 01a8 0895      		ret
 573               	.LBE8:
 574               	/* epilogue: frame size=0 */
 575               	/* epilogue: noreturn */
 576               	/* epilogue end (size=0) */
 577               	/* function Reset_UartStruct size 24 (24) */
 582               	.Lscope6:
 584               	.global	__vector_17
 586               	__vector_17:
 879:api.c         ****       }
 880:api.c         ****    }
 881:api.c         **** }
 882:api.c         **** 
 883:api.c         **** /* this function checks error for the received parameter
 884:api.c         ****  * the function has a pointer of the serial structur as input and returns no parameter
 885:api.c         ****  */
 886:api.c         **** 
 887:api.c         **** int8_t Check_Error( struct uartStruct *ptr_uartStruct )
 888:api.c         **** {
 889:api.c         ****    static int8_t error = FALSE;
 890:api.c         **** 
 891:api.c         ****    error = FALSE;
 892:api.c         **** 
 893:api.c         ****    if ( 0 > ptr_uartStruct->commandKeywordIndex )
 894:api.c         ****    {
 895:api.c         ****       uart_errorCode = CommunicationError(ERRA, SERIAL_ERROR_no_valid_command_name,0,NULL,0);
 896:api.c         ****       error = TRUE;
 897:api.c         ****    }
 898:api.c         ****    else
 899:api.c         ****    {
 900:api.c         ****       for (uint8_t index = 1; index < MAX_PARAMETER; index ++)
 901:api.c         ****       {
 902:api.c         ****          if (0 != *ptr_setParameter[index])
 903:api.c         ****          {
 904:api.c         ****             uart_errorCode = CommunicationError(ERRA,SERIAL_ERROR_argument_has_invalid_type + index
 905:api.c         ****             error = TRUE;
 906:api.c         ****          }
 907:api.c         ****          else
 908:api.c         ****          {
 909:api.c         ****             switch (ptr_uartStruct->commandKeywordIndex)
 910:api.c         ****             {
 911:api.c         ****                case commandKeyNumber_SEND: /*CAN*/
 912:api.c         ****                case commandKeyNumber_SUBS: /*CAN*/
 913:api.c         ****                case commandKeyNumber_USUB: /*CAN*/
 914:api.c         ****                {
 915:api.c         ****                   //#error missing break statement for number of arguments
 916:api.c         ****                   /* type check */
 917:api.c         ****                   for ( uint8_t i = 0 ; i < MAX_PARAMETER ; i++ )
 918:api.c         ****                   {
 919:api.c         ****                      switch (i)
 920:api.c         ****                      {
 921:api.c         ****                         case 1:
 922:api.c         ****                            if ( ( 0x7FFFFFF ) < ptr_uartStruct->Uart_Message_ID )
 923:api.c         ****                            {
 924:api.c         ****                               uart_errorCode = CommunicationError(ERRA, SERIAL_ERROR_ID_is_too_long
 925:api.c         ****                               error = TRUE;
 926:api.c         ****                               break;
 927:api.c         ****                            }
 928:api.c         ****                            break;
 929:api.c         ****                         case 2:
 930:api.c         ****                            if ( ( 0x7FFFFFF ) < ptr_uartStruct->Uart_Mask )
 931:api.c         ****                            {
 932:api.c         ****                               uart_errorCode = CommunicationError(ERRA, SERIAL_ERROR_mask_is_too_lo
 933:api.c         ****                               error = TRUE;
 934:api.c         ****                               break;
 935:api.c         ****                            }
 936:api.c         ****                            break;
 937:api.c         ****                         case 3:
 938:api.c         **** 
 939:api.c         ****                            if ( ( 1 ) < ptr_uartStruct->Uart_Rtr )
 940:api.c         ****                            {
 941:api.c         ****                               uart_errorCode = CommunicationError(ERRA, SERIAL_ERROR_rtr_is_too_lon
 942:api.c         ****                               error = TRUE;
 943:api.c         ****                               break;
 944:api.c         ****                            }
 945:api.c         ****                            break;
 946:api.c         ****                         case 4:
 947:api.c         **** 
 948:api.c         ****                            if ( ( 8 ) < ptr_uartStruct->Uart_Length )
 949:api.c         ****                            {
 950:api.c         ****                               uart_errorCode = CommunicationError(ERRA, SERIAL_ERROR_length_is_too_
 951:api.c         ****                               error = TRUE;
 952:api.c         ****                               break;
 953:api.c         ****                            }
 954:api.c         ****                            break;
 955:api.c         ****                         case 5:
 956:api.c         ****                         case 6:
 957:api.c         ****                         case 7:
 958:api.c         ****                         case 8:
 959:api.c         ****                         case 9:
 960:api.c         ****                         case 10:
 961:api.c         ****                         case 11:
 962:api.c         ****                         case 12:
 963:api.c         ****                            for ( uint8_t i = 0 ; i < 8 ; i++ )
 964:api.c         ****                            {
 965:api.c         ****                               if ( ( 0XFF ) < ptr_uartStruct->Uart_Data[i] )
 966:api.c         ****                               {
 967:api.c         ****                                  uart_errorCode = CommunicationError(ERRA, SERIAL_ERROR_data_0_is_t
 968:api.c         ****                                  ptr_uartStruct->Uart_Data[i] = 0;
 969:api.c         ****                                  error = TRUE;
 970:api.c         ****                                  break;
 971:api.c         ****                               }
 972:api.c         ****                            }
 973:api.c         ****                            break;
 974:api.c         ****                      }
 975:api.c         **** 
 976:api.c         ****                   }
 977:api.c         ****                }
 978:api.c         ****                break;
 979:api.c         ****                default: /*uncovered command keys*/
 980:api.c         ****                   break;
 981:api.c         ****             }
 982:api.c         ****          }
 983:api.c         ****          if ( TRUE == error )
 984:api.c         ****          {
 985:api.c         ****             break;
 986:api.c         ****          }
 987:api.c         ****       } //end for
 988:api.c         ****    }//end else
 989:api.c         **** 
 990:api.c         ****    if ( TRUE == error )
 991:api.c         ****    {
 992:api.c         ****       Reset_UartStruct(ptr_uartStruct);
 993:api.c         ****       Reset_SetParameter();
 994:api.c         ****       return 1;
 995:api.c         ****    }
 996:api.c         ****    else
 997:api.c         ****    {
 998:api.c         ****       return 0;
 999:api.c         ****    }
1000:api.c         **** }//END of Check_Error function
1001:api.c         **** 
1002:api.c         **** /*
1003:api.c         ****  *this function calls another function in relation to the first parameter of the string
1004:api.c         ****  *the function has a pointer of the serial structure as input and returns no parameter
1005:api.c         ****  */
1006:api.c         **** 
1007:api.c         **** void Choose_Function( struct uartStruct *ptr_uartStruct )
1008:api.c         **** {
1009:api.c         **** 	switch (ptr_uartStruct->commandKeywordIndex)
1010:api.c         **** 	{
1011:api.c         **** 	case commandKeyNumber_SEND:
1012:api.c         **** 	case commandKeyNumber_SUBS:
1013:api.c         **** 	case commandKeyNumber_USUB:
1014:api.c         **** 	{
1015:api.c         **** 		Convert_UartData_to_UartStruct(setParameter);
1016:api.c         **** 		if (TRUE == Check_Parameter_CanFormat(ptr_uartStruct))
1017:api.c         **** 		{
1018:api.c         **** 			switch ( ptr_uartStruct->commandKeywordIndex )
1019:api.c         **** 			{
1020:api.c         **** 			case commandKeyNumber_SEND:
1021:api.c         **** 				/* command : SEND CAN-Message-ID ID-Range [RTR <Number of data bytes> Data0 ... Data7] */
1022:api.c         **** 				if ( 0 == ptr_uartStruct->Uart_Rtr )
1023:api.c         **** 				{
1024:api.c         **** 					/* command      : SEND CAN-Message-ID ID-Range 0 <Number of data bytes> Data0 ... Data7]
1025:api.c         **** 					 * response now : RECV SEND CAN-Message-ID "command will be carried out"*/
1026:api.c         **** 					/* response TODO: <nothing> */
1027:api.c         **** 					/* TODO: is this obsolete, debug level?*/
1028:api.c         **** 					Send_Message(ptr_uartStruct); /* call function with name  Send_Message */
1029:api.c         **** 				}
1030:api.c         **** 				else
1031:api.c         **** 				{
1032:api.c         **** 					/* command      : SEND CAN-Message-ID ID-Range 0 <Number of data bytes> Data0 ... Data7]
1033:api.c         **** 					 * response  now: RECV CAN_Mob CAN-Message-ID CAN-Length [Data0 ... Data7] */
1034:api.c         **** 					/* response TODO: RECV SEND CAN-Message-ID CAN-Length [Data0 ... Data7] */
1035:api.c         **** 					Receive_Message(ptr_uartStruct); /* call function with name Receive_message */
1036:api.c         **** 				}
1037:api.c         **** 				break;
1038:api.c         **** 			case commandKeyNumber_SUBS:
1039:api.c         **** 				/* command : SUBS CAN-Message-ID ID-Range
1040:api.c         **** 				 * response: */
1041:api.c         **** 				Subscribe_Message(ptr_uartStruct); /* call function with name Subscribe_Message */
1042:api.c         **** 				break;
1043:api.c         **** 			case commandKeyNumber_USUB:
1044:api.c         **** 				/* command : USUB CAN-Message-ID ID-Range
1045:api.c         **** 				 * response: */
1046:api.c         **** 				Unsubscribe_Message(ptr_uartStruct); /* call function with name Unsubscribe_Message */
1047:api.c         **** 				break;
1048:api.c         **** 			}
1049:api.c         **** 		}
1050:api.c         **** 		else { Check_Error(ptr_uartStruct);}
1051:api.c         **** 	}
1052:api.c         **** 	break;
1053:api.c         **** 	case commandKeyNumber_STAT:
1054:api.c         **** 		/* command  : STAT [ID]*/
1055:api.c         **** 		/* response : RECV STAT ID1 description1 status1\r
1056:api.c         **** 		 *            ...
1057:api.c         **** 		 *            RECV STAT IDX descriptionX statusX\n */
1058:api.c         **** 		/* originally ment to read the pressure in the bus*/
1059:api.c         **** 		//atmelControlLoopReadStatus(ptr_uartStruct);
1060:api.c         **** 		break;
1061:api.c         **** 	case commandKeyNumber_OWTP:
1062:api.c         **** 		/* command : OWTP [ID / keyword [keyword arguments]]
1063:api.c         **** 		 * [ID] response: RECV OWTP ID1 value1\r
1064:api.c         **** 		 *                ...
1065:api.c         **** 		 *                RECV OWTP IDx valueX\n
1066:api.c         **** 		 * keyword response: RECV keyword STATUS
1067:api.c         ****          * command : OWTP
1068:api.c         ****          */
1069:api.c         **** 		owiTemperatureSensors(ptr_uartStruct); /* call function with name owiTemperatureReadSensors */
1070:api.c         **** 		break;
1071:api.c         **** 	case commandKeyNumber_RGWR:
1072:api.c         **** 		/* command      : RGWR Register Value */
1073:api.c         **** 		/* response now : RECV the value %x has been written in Register */
1074:api.c         **** 		/* response TODO: RECV RGWR Register Value (OldValue) */
1075:api.c         **** 		writeRegister(ptr_uartStruct); /* call function with name writeRegister  */
1076:api.c         **** 		break;
1077:api.c         **** 	case commandKeyNumber_RGRE:
1078:api.c         **** 		/* command      : RGRE Register*/
1079:api.c         **** 		/* response now : RECV the value %x has been written in Register */
1080:api.c         **** 		/* response TODO: RECV RGWR Register Value */
1081:api.c         **** 		readRegister(ptr_uartStruct); /* call function with name  readRegister */
1082:api.c         **** 		break;
1083:api.c         **** 	case commandKeyNumber_RADC: /* read AVR's ADCs */
1084:api.c         **** 		atmelReadADCs(ptr_uartStruct);
1085:api.c         **** 		break;
1086:api.c         **** 	case commandKeyNumber_OWAD: /* one-wire adc */
1087:api.c         **** 		/* command : OWAD [ID]
1088:api.c         **** 		 * response: RECV OWAD ID1 value1.1 ... value1.n\r
1089:api.c         **** 		 *           ...
1090:api.c         **** 		 *           RECV OWAD IDx valueX.1 ... valueX.n\n */
1091:api.c         **** 		owiReadADCs(ptr_uartStruct);
1092:api.c         **** 		/* similar to OWTP*/
1093:api.c         **** 		break;
1094:api.c         **** //	case commandKeyNumber_OWON:
1095:api.c         **** //		dualSwitches_ON(ptr_uartStruct);
1096:api.c         **** //		break;
1097:api.c         **** 	case commandKeyNumber_OWDS: /*set/get one wire dual switches*/
1098:api.c         **** 		owiDualSwitches(ptr_uartStruct);
1099:api.c         **** 		break;
1100:api.c         **** 	case commandKeyNumber_RSET:
1101:api.c         **** 		Initialization();
1102:api.c         **** #warning TODO: better implemention than just calling init, maybe reset via watchdog or ...
1103:api.c         **** 		break;
1104:api.c         **** 	case commandKeyNumber_OWSS:
1105:api.c         **** 		read_status_simpleSwitches(ptr_uartStruct); /* call function with name  readRegister */
1106:api.c         **** 		break;
1107:api.c         **** 	case commandKeyNumber_OWLS:
1108:api.c         ****        /* command : OWLS
1109:api.c         ****         * response: RECV OWLS 1: bus mask: 0xXX ID <owi ID>
1110:api.c         ****         *           ...
1111:api.c         ****         * response: RECV OWLS N: bus mask: 0xXX ID <owi ID>*/
1112:api.c         **** 	   owiShowDevicesID(ptr_uartStruct);
1113:api.c         **** 		break;
1114:api.c         **** 	case commandKeyNumber_PING:
1115:api.c         **** 		keep_alive(ptr_uartStruct); /* call function with name  readRegister */
1116:api.c         **** 		break;
1117:api.c         **** 	case commandKeyNumber_OWSP: /*one-wire set active pins/bus mask*/
1118:api.c         **** 		/* command : OWSP FC
1119:api.c         **** 		 * response: ... */
1120:api.c         **** 		setOneWireBusMask(ptr_uartStruct);
1121:api.c         **** 		break;
1122:api.c         **** 	case commandKeyNumber_OWRP: /*one-wire read active pins/bus mask*/
1123:api.c         **** 		/* command : OWRP
1124:api.c         **** 		 * response: RECV OWRP value */
1125:api.c         **** 		getOneWireBusMask(ptr_uartStruct);
1126:api.c         **** 		break;
1127:api.c         **** 	case commandKeyNumber_ADSP: /*AVR's adcs set active pins/bus mask*/
1128:api.c         **** 		break;
1129:api.c         **** 	case commandKeyNumber_RLSL: /*relay set low  level*/
1130:api.c         **** 		break;
1131:api.c         **** 	case commandKeyNumber_RLSH: /*relay set high level*/
1132:api.c         **** 		break;
1133:api.c         **** 	case commandKeyNumber_RLSI: /*relay set ADC pin(s) to monitor "in" */
1134:api.c         **** 		break;
1135:api.c         **** 	case commandKeyNumber_RLSO: /*relay set output pin(s) to switch "out" */
1136:api.c         **** 		break;
1137:api.c         **** 	case commandKeyNumber_PARA: /*parasitic devices*/
1138:api.c         **** 	   owiTemperatureFindParasiticlyPoweredDevices(TRUE);
1139:api.c         **** 		break;
1140:api.c         **** //    case commandKeyNumber_WDOG: /*watch dog*/
1141:api.c         **** //        break;
1142:api.c         **** 	case commandKeyNumber_SHOW: /*show (internal) settings*/
1143:api.c         **** 		show(ptr_uartStruct);
1144:api.c         **** 		break;
1145:api.c         **** 	case commandKeyNumber_DEBG: /*set/get debug level*/
1146:api.c         **** 		/* command : DEBG [level [mask]]
1147:api.c         **** 		 * set response: ...
1148:api.c         **** 		 * get response: RECV DEBG level mask*/
1149:api.c         **** 		readModifyDebugLevelAndMask(ptr_uartStruct);
1150:api.c         **** 		break;
1151:api.c         **** 	case commandKeyNumber_DBGL: /*set/get debug level*/
1152:api.c         **** 		/* command : DBGL [level]
1153:api.c         **** 		 * set response: ...
1154:api.c         **** 		 * get response: RECV DBGL level */
1155:api.c         **** 		readModifyDebugLevel(ptr_uartStruct);
1156:api.c         **** 		break;
1157:api.c         **** 	case commandKeyNumber_DBGM: /*set/get only debug system mask*/
1158:api.c         **** 		/* command : DBGM [mask]
1159:api.c         **** 		 * set response: ...
1160:api.c         **** 		 * get response: RECV DBGM mask*/
1161:api.c         **** 		readModifyDebugMask(ptr_uartStruct);
1162:api.c         **** 		break;
1163:api.c         **** 	case commandKeyNumber_JTAG: /*toggle/set JTAG availability*/
1164:api.c         **** 	   modifyJTAG(ptr_uartStruct);
1165:api.c         **** 		break;
1166:api.c         **** 	case commandKeyNumber_OWTR: /*trigger one-wire device(s) for action, if possible*/
1167:api.c         **** 		break;
1168:api.c         **** 	case commandKeyNumber_HELP: /*output some help*/
1169:api.c         **** 		help(ptr_uartStruct);
1170:api.c         **** 		break;
1171:api.c         ****     case commandKeyNumber_OWMR: /*one wire basics: match rom*/
1172:api.c         ****        break;
1173:api.c         ****     case commandKeyNumber_OWPC: /*one wire basics: presence check*/
1174:api.c         ****        break;
1175:api.c         ****     case commandKeyNumber_OWRb: /*one wire basics: receive bit, wait for it*/
1176:api.c         ****        break;
1177:api.c         ****     case commandKeyNumber_OWRB: /*one wire basics: receive byte*/
1178:api.c         ****        break;
1179:api.c         ****     case commandKeyNumber_OWSB: /*one wire basics: send byte*/
1180:api.c         ****        break;
1181:api.c         ****     case commandKeyNumber_OWSC: /*one wire basics: send command*/
1182:api.c         ****        break;
1183:api.c         ****     case commandKeyNumber_OWSA: /*one wire API settings: set/get 1-wire specific API settings*/
1184:api.c         ****        owiApi(ptr_uartStruct);
1185:api.c         ****        break;
1186:api.c         ****     case commandKeyNumber_WDOG: /*set/get watch dog status*/
1187:api.c         ****        break;
1188:api.c         **** //    case commandKeyNumber_EXIT: /*exit*/
1189:api.c         **** //       break;
1190:api.c         ****     case commandKeyNumber_RLTH: /* relay threshold */
1191:api.c         ****        relayThreshold(ptr_uartStruct);
1192:api.c         ****        break;
1193:api.c         ****     case commandKeyNumber_CMD1: /* command (dummy name) */
1194:api.c         ****        PORTA |= 0x01;
1195:api.c         ****        break;
1196:api.c         ****     case commandKeyNumber_CMD2: /* command (dummy name) */
1197:api.c         ****        PORTA &= ~(0x01);
1198:api.c         ****        break;
1199:api.c         ****     case commandKeyNumber_CMD3: /* command (dummy name) */
1200:api.c         ****        PINA |= 0x01;
1201:api.c         ****        break;
1202:api.c         ****     case commandKeyNumber_CMD4: /* command (dummy name) */
1203:api.c         ****        break;
1204:api.c         ****     case commandKeyNumber_CMD5: /* command (dummy name) */
1205:api.c         ****        break;
1206:api.c         ****     case commandKeyNumber_CMD6: /* command (dummy name) */
1207:api.c         ****        break;
1208:api.c         ****     case commandKeyNumber_CMD7: /* command (dummy name) */
1209:api.c         ****        break;
1210:api.c         ****     case commandKeyNumber_CMD8: /* command (dummy name) */
1211:api.c         ****        break;
1212:api.c         ****     case commandKeyNumber_CMD9: /* command (dummy name) */
1213:api.c         ****        break;
1214:api.c         ****     default:
1215:api.c         **** 		ptr_uartStruct->commandKeywordIndex = -1;
1216:api.c         **** 		Check_Error(ptr_uartStruct);
1217:api.c         **** 		break;
1218:api.c         **** 	}
1219:api.c         **** 	return;
1220:api.c         **** }//END of Choose function
1221:api.c         **** 
1222:api.c         **** /**************************/
1223:api.c         **** /* interrupt for overflow with defined interrupt vector TIMER0_OVF_vect */
1224:api.c         **** 
1225:api.c         **** ISR(TIMER0_OVF_vect)
1226:api.c         **** {
 588               	.LM60:
 589               	/* prologue: frame size=0 */
 590 01aa 1F92      		push __zero_reg__
 591 01ac 0F92      		push __tmp_reg__
 592 01ae 0FB6      		in __tmp_reg__,__SREG__
 593 01b0 0F92      		push __tmp_reg__
 594 01b2 1124      		clr __zero_reg__
 595 01b4 8F93      		push r24
 596 01b6 9F93      		push r25
 597               	/* prologue end (size=7) */
1227:api.c         **** 
1228:api.c         **** 	static uint8_t counter0 = 0; /* counter for timer0 */
1229:api.c         **** 	static uint8_t counter1 = 0; /* counter for timer0 */
1230:api.c         **** 	counter0++;
 599               	.LM61:
 600 01b8 8091 0000 		lds r24,counter0.3363
 601 01bc 8F5F      		subi r24,lo8(-(1))
 602 01be 8093 0000 		sts counter0.3363,r24
1231:api.c         **** 	counter1++;
 604               	.LM62:
 605 01c2 9091 0000 		lds r25,counter1.3364
 606 01c6 9F5F      		subi r25,lo8(-(1))
 607 01c8 9093 0000 		sts counter1.3364,r25
1232:api.c         **** 
1233:api.c         **** 	if ( counter0 == 10 ) /* 10 overflow for timer0=0.5s */
 609               	.LM63:
 610 01cc 8A30      		cpi r24,lo8(10)
 611 01ce 01F0      		breq .L55
 612               	.L50:
1234:api.c         **** 	{
1235:api.c         **** 
1236:api.c         **** 		timer0Ready = 1; /* mark, that we got an CAN_interrupt, to be handled by main */
1237:api.c         **** 		counter0 = 0;
1238:api.c         **** 	}
1239:api.c         **** 	if ( counter1 == 20 ) /* 10 overflow for timer1=1s */
 614               	.LM64:
 615 01d0 9431      		cpi r25,lo8(20)
 616 01d2 01F4      		brne .L54
1240:api.c         **** 	{
1241:api.c         **** 
1242:api.c         **** 		timer1Ready = 1; /* mark, that we got an CAN_interrupt, to be handled by main */
 618               	.LM65:
 619 01d4 81E0      		ldi r24,lo8(1)
 620 01d6 8093 0000 		sts timer1Ready,r24
1243:api.c         **** 		counter1 = 0;
 622               	.LM66:
 623 01da 1092 0000 		sts counter1.3364,__zero_reg__
 624 01de 00C0      		rjmp .L54
 625               	.L55:
 627               	.LM67:
 628 01e0 81E0      		ldi r24,lo8(1)
 629 01e2 8093 0000 		sts timer0Ready,r24
 631               	.LM68:
 632 01e6 1092 0000 		sts counter0.3363,__zero_reg__
 633 01ea 00C0      		rjmp .L50
 634               	.L54:
 635               	/* epilogue: frame size=0 */
 636 01ec 9F91      		pop r25
 637 01ee 8F91      		pop r24
 638 01f0 0F90      		pop __tmp_reg__
 639 01f2 0FBE      		out __SREG__,__tmp_reg__
 640 01f4 0F90      		pop __tmp_reg__
 641 01f6 1F90      		pop __zero_reg__
 642 01f8 1895      		reti
 643               	/* epilogue end (size=7) */
 644               	/* function __vector_17 size 40 (26) */
 650               	.Lscope7:
 652               	.global	__vector_16
 654               	__vector_16:
1244:api.c         **** 	}
1245:api.c         **** }//END of ISR(TIMER0_OVF_vect)
1246:api.c         **** 
1247:api.c         **** 
1248:api.c         **** /* interrupt for output compare with defined interrupt vector SIG_OUTPUT_COMPARE0 */
1249:api.c         **** ISR(SIG_OUTPUT_COMPARE0)
1250:api.c         **** {
 656               	.LM69:
 657               	/* prologue: frame size=0 */
 658 01fa 1F92      		push __zero_reg__
 659 01fc 0F92      		push __tmp_reg__
 660 01fe 0FB6      		in __tmp_reg__,__SREG__
 661 0200 0F92      		push __tmp_reg__
 662 0202 1124      		clr __zero_reg__
 663 0204 8F93      		push r24
 664 0206 9F93      		push r25
 665               	/* prologue end (size=7) */
1251:api.c         **** 	static uint8_t counter0A = 0; /* counter for timer0 with output compareA */
1252:api.c         **** 	static uint8_t counter0AScheduler = 0; /* counter for timer0 with output compareA */
1253:api.c         **** 	counter0A++;
 667               	.LM70:
 668 0208 8091 0000 		lds r24,counter0A.3374
 669 020c 8F5F      		subi r24,lo8(-(1))
 670 020e 8093 0000 		sts counter0A.3374,r24
1254:api.c         **** 	counter0AScheduler++;
 672               	.LM71:
 673 0212 9091 0000 		lds r25,counter0AScheduler.3375
 674 0216 9F5F      		subi r25,lo8(-(1))
 675 0218 9093 0000 		sts counter0AScheduler.3375,r25
1255:api.c         **** 
1256:api.c         **** 	if ( counter0A == 9 ) /*9 overflow for timer0A=0.6s*/
 677               	.LM72:
 678 021c 8930      		cpi r24,lo8(9)
 679 021e 01F0      		breq .L62
 680               	.L57:
1257:api.c         **** 	{
1258:api.c         **** 		timer0AReady = 1; /* mark, that we got an CAN_interrupt, to be handled by main */
1259:api.c         **** 		counter0A = 0;
1260:api.c         **** 	}
1261:api.c         **** 	if ( counter0AScheduler == 40 ) /*9 overflow for timer0A=2s*/
 682               	.LM73:
 683 0220 9832      		cpi r25,lo8(40)
 684 0222 01F4      		brne .L61
1262:api.c         **** 	{
1263:api.c         **** 		timer0ASchedulerReady = 1; /* mark, that we got an CAN_interrupt, to be handled by main */
 686               	.LM74:
 687 0224 81E0      		ldi r24,lo8(1)
 688 0226 8093 0000 		sts timer0ASchedulerReady,r24
1264:api.c         **** 		counter0AScheduler = 0;
 690               	.LM75:
 691 022a 1092 0000 		sts counter0AScheduler.3375,__zero_reg__
 692 022e 00C0      		rjmp .L61
 693               	.L62:
 695               	.LM76:
 696 0230 81E0      		ldi r24,lo8(1)
 697 0232 8093 0000 		sts timer0AReady,r24
 699               	.LM77:
 700 0236 1092 0000 		sts counter0A.3374,__zero_reg__
 701 023a 00C0      		rjmp .L57
 702               	.L61:
 703               	/* epilogue: frame size=0 */
 704 023c 9F91      		pop r25
 705 023e 8F91      		pop r24
 706 0240 0F90      		pop __tmp_reg__
 707 0242 0FBE      		out __SREG__,__tmp_reg__
 708 0244 0F90      		pop __tmp_reg__
 709 0246 1F90      		pop __zero_reg__
 710 0248 1895      		reti
 711               	/* epilogue end (size=7) */
 712               	/* function __vector_16 size 40 (26) */
 718               	.Lscope8:
 720               	.global	__vector_21
 722               	__vector_21:
1265:api.c         **** 	}
1266:api.c         **** }//END of ISR(SIG_OUTPUT_COMPARE0)
1267:api.c         **** 
1268:api.c         **** 
1269:api.c         **** /* interrupt for receive  data via serial communication with defined interrupt vector SIG_UART0_REC
1270:api.c         **** ISR (SIG_UART0_RECV)
1271:api.c         **** {
 724               	.LM78:
 725               	/* prologue: frame size=0 */
 726 024a 1F92      		push __zero_reg__
 727 024c 0F92      		push __tmp_reg__
 728 024e 0FB6      		in __tmp_reg__,__SREG__
 729 0250 0F92      		push __tmp_reg__
 730 0252 1124      		clr __zero_reg__
 731 0254 8F93      		push r24
 732 0256 AF93      		push r26
 733 0258 BF93      		push r27
 734 025a EF93      		push r30
 735 025c FF93      		push r31
 736               	/* prologue end (size=10) */
1272:api.c         **** 
1273:api.c         **** 	unsigned char c = UDR0;
 738               	.LM79:
 739 025e 8091 C600 		lds r24,198
1274:api.c         **** 
1275:api.c         **** 	if ( c == '\n' ) /* the string is complete? */
 741               	.LM80:
 742 0262 8A30      		cpi r24,lo8(10)
 743 0264 01F0      		breq .L68
1276:api.c         **** 	{
1277:api.c         **** 
1278:api.c         **** 		uartString[nextCharPos] = '\0';
1279:api.c         **** 		uartReady = 1; /* mark, that we got an CAN_interrupt, to be handled by main */
1280:api.c         **** 		nextCharPos = 0;
1281:api.c         **** 	}
1282:api.c         **** 
1283:api.c         **** 	else
1284:api.c         **** 	{
1285:api.c         **** 		uartString[nextCharPos] = c;
 745               	.LM81:
 746 0266 A091 0000 		lds r26,nextCharPos
 747 026a EA2F      		mov r30,r26
 748 026c FF27      		clr r31
 749 026e E050      		subi r30,lo8(-(uartString))
 750 0270 F040      		sbci r31,hi8(-(uartString))
 751 0272 8083      		st Z,r24
1286:api.c         **** 		nextCharPos++;
 753               	.LM82:
 754 0274 AF5F      		subi r26,lo8(-(1))
 755 0276 A093 0000 		sts nextCharPos,r26
1287:api.c         **** 		uartString[nextCharPos] = '\0';
 757               	.LM83:
 758 027a BB27      		clr r27
 759 027c A050      		subi r26,lo8(-(uartString))
 760 027e B040      		sbci r27,hi8(-(uartString))
 761 0280 1C92      		st X,__zero_reg__
 762 0282 00C0      		rjmp .L67
 763               	.L68:
 765               	.LM84:
 766 0284 E091 0000 		lds r30,nextCharPos
 767 0288 FF27      		clr r31
 768 028a E050      		subi r30,lo8(-(uartString))
 769 028c F040      		sbci r31,hi8(-(uartString))
 770 028e 1082      		st Z,__zero_reg__
 772               	.LM85:
 773 0290 81E0      		ldi r24,lo8(1)
 774 0292 8093 0000 		sts uartReady,r24
 776               	.LM86:
 777 0296 1092 0000 		sts nextCharPos,__zero_reg__
 778               	.L67:
 779               	/* epilogue: frame size=0 */
 780 029a FF91      		pop r31
 781 029c EF91      		pop r30
 782 029e BF91      		pop r27
 783 02a0 AF91      		pop r26
 784 02a2 8F91      		pop r24
 785 02a4 0F90      		pop __tmp_reg__
 786 02a6 0FBE      		out __SREG__,__tmp_reg__
 787 02a8 0F90      		pop __tmp_reg__
 788 02aa 1F90      		pop __zero_reg__
 789 02ac 1895      		reti
 790               	/* epilogue end (size=10) */
 791               	/* function __vector_21 size 50 (30) */
 796               	.Lscope9:
 799               	.global	UART0_Transmit
 801               	UART0_Transmit:
1288:api.c         **** 	}
1289:api.c         **** }//END of ISR (SIG_UART0_RECV)
1290:api.c         **** 
1291:api.c         **** 
1292:api.c         **** /* interrupt for receive data via CAN communication with defined interrupt vector CANIT_vect */
1293:api.c         **** ISR(CANIT_vect)
1294:api.c         **** {
1295:api.c         **** 	uint8_t save_canpage = CANPAGE;
1296:api.c         **** 
1297:api.c         **** 	if ( (CANHPMOB & 0xF0) != 0xF0 )
1298:api.c         **** 	{
1299:api.c         **** 		// --- interrupt generated by a MOb
1300:api.c         **** 
1301:api.c         **** 		mob = (CANHPMOB & 0xf0) >> 4;
1302:api.c         **** 		CANPAGE = (CANHPMOB & 0xf0);
1303:api.c         **** 
1304:api.c         **** 		if (Get_CanError() == 1)
1305:api.c         **** 		{ // check if MOb has an error
1306:api.c         **** 			CANCDMOB = ( 1 << CONMOB0 ); /* reset receive mode*/
1307:api.c         **** 		}
1308:api.c         **** 
1309:api.c         **** 		else if ( CANSTMOB & ( 1 << TXOK ) )
1310:api.c         **** 		{ // MOb finished transmission
1311:api.c         **** 			CANSTMOB &= ~( 1 << TXOK );  /* disable transmission mode*/
1312:api.c         **** 			CANCDMOB = ( 1 << CONMOB0 ); /* reset receive mode*/
1313:api.c         **** 		}
1314:api.c         **** 		else if ( CANSTMOB & ( 1 << RXOK ) )
1315:api.c         **** 		{ // MOb received message
1316:api.c         **** 			ptr_canStruct->Can_Length = ( CANCDMOB & ( 0xF << DLC0 ) );
1317:api.c         **** 			for ( uint8_t i = 0 ; i < ptr_canStruct->Can_Length ; i++ )
1318:api.c         **** 			{
1319:api.c         **** 				/* get data of selected MOb */
1320:api.c         **** 				ptr_canStruct->Can_Data[i] = CANMSG;
1321:api.c         **** 			}
1322:api.c         **** 			/*get identifier */
1323:api.c         **** 			ptr_canStruct->Can_Message_ID = 0;
1324:api.c         **** 			ptr_canStruct->Can_Message_ID = CANIDT2 >> 5;
1325:api.c         **** 			ptr_canStruct->Can_Message_ID |= CANIDT1 << 3;
1326:api.c         **** 			ptr_canStruct->Can_Mob = mob; /*get mailbox */
1327:api.c         **** 			CANSTMOB &= ~( 1 << RXOK ); /* clear interrupt */
1328:api.c         **** 			CANCDMOB = ( 1 << CONMOB1 ); /* reset receive mode*/
1329:api.c         **** 			canReady = 1; /* mark, that we got an CAN_interrupt, to be handled by main */
1330:api.c         **** 		}
1331:api.c         **** 		CANPAGE = save_canpage; /* restore CANPAGE*/
1332:api.c         **** 	}
1333:api.c         **** 	else {
1334:api.c         **** 		// --- general interrupt was generated
1335:api.c         **** 		Get_BusState();
1336:api.c         **** 		CANGIT |= 0;
1337:api.c         **** 	}
1338:api.c         **** }//END of ISR(CANIT_vect)
1339:api.c         **** 
1340:api.c         **** /*
1341:api.c         ****  *USART0 must be initialized before using this function
1342:api.c         ****  *for use this function, be sure that data is no longer then 8 bit
1343:api.c         ****  *(single character) this function will send  8 bits from the at90can128
1344:api.c         ****  */
1345:api.c         **** 
1346:api.c         **** #warning add timeout ? Add check for USART0 init ?
1347:api.c         **** 
1348:api.c         **** void UART0_Transmit( uint8_t data )
1349:api.c         **** {
 803               	.LM87:
 804               	/* prologue: frame size=0 */
 805               	/* prologue end (size=0) */
 806 02ae 982F      		mov r25,r24
 807               	.L71:
1350:api.c         **** 	/* wait for empty transmit buffer */
1351:api.c         **** 	while ( !( UCSR0A & ( 1 << UDRE0 ) ) )
 809               	.LM88:
 810 02b0 8091 C000 		lds r24,192
 811 02b4 85FF      		sbrs r24,5
 812 02b6 00C0      		rjmp .L71
1352:api.c         **** 	{
1353:api.c         **** 		/* do nothing*/
1354:api.c         **** 	}
1355:api.c         **** 	/* put the data into the buffer */
1356:api.c         **** 
1357:api.c         **** 	UDR0 = data;
 814               	.LM89:
 815 02b8 9093 C600 		sts 198,r25
 816               	/* epilogue: frame size=0 */
 817 02bc 0895      		ret
 818               	/* epilogue end (size=1) */
 819               	/* function UART0_Transmit size 8 (7) */
 821               	.Lscope10:
 823               	.global	Init_Port
 825               	Init_Port:
1358:api.c         **** }
1359:api.c         **** 
1360:api.c         **** /*
1361:api.c         ****  *this function sends a string to serial communication
1362:api.c         ****  * the input parameter is a defined global variable tmp_str
1363:api.c         ****  * the output parameter is an integer
1364:api.c         ****  * 0 -> the message is sent
1365:api.c         ****  */
1366:api.c         **** 
1367:api.c         **** int16_t UART0_Send_Message_String( char *tmp_str, uint16_t maxSize )
1368:api.c         **** {
1369:api.c         **** 	/* this function sends the string pointed to by tmp_str to UART
1370:api.c         **** 	 * this happens char by char until STRING_END is found
1371:api.c         **** 	 * afterwards the message string is cleared up to the size maxSize
1372:api.c         **** 	 *
1373:api.c         **** 	 * if tmp_str is NULL
1374:api.c         **** 	 *    - tmp_str is set to the global variable uart_message_string
1375:api.c         **** 	 *    - and maxSize is set to BUFFER_SIZE
1376:api.c         **** 	 * else if maxSize is 0
1377:api.c         **** 	 *    - maxSize is assumed to be BUFFER_SIZE
1378:api.c         **** 	 *
1379:api.c         **** 	 * returns
1380:api.c         **** 	 *   - in case of errors: -1
1381:api.c         **** 	 *   - else number of transfered characters (max INT16_MAX )
1382:api.c         **** 	 *
1383:api.c         **** 	 * */
1384:api.c         **** 
1385:api.c         **** 	/* if tmp_str is NULL, take as default uart_message_string and its size BUFFER_SIZE */
1386:api.c         **** 	if (NULL == tmp_str)
1387:api.c         **** 	{
1388:api.c         **** 		if (NULL != uart_message_string)
1389:api.c         **** 		{
1390:api.c         **** 			tmp_str = uart_message_string;
1391:api.c         **** 			maxSize = BUFFER_SIZE;
1392:api.c         **** 		}
1393:api.c         **** 		else
1394:api.c         **** 		{
1395:api.c         **** 			return -1;
1396:api.c         **** 		}
1397:api.c         **** 	}
1398:api.c         **** 
1399:api.c         **** 	/* if maxSize is set to 0, take default value BUFFER_SIZE */
1400:api.c         **** 	if ( 0 == maxSize)
1401:api.c         **** 	{
1402:api.c         **** 		maxSize = BUFFER_SIZE;
1403:api.c         **** 	}
1404:api.c         **** 
1405:api.c         **** 	static uint16_t index;
1406:api.c         **** 
1407:api.c         **** 	for ( index = 0; STRING_END != tmp_str[index] && index < maxSize ; index++ )
1408:api.c         **** 	{
1409:api.c         **** 		UART0_Transmit(tmp_str[index]);
1410:api.c         **** 	}
1411:api.c         **** 	UART0_Transmit('\n');
1412:api.c         **** 	clearString(tmp_str, maxSize); /*clear tmp_str variable*/
1413:api.c         **** 
1414:api.c         **** 	return index;
1415:api.c         **** }//END of UART0_Send_Message_String function
1416:api.c         **** 
1417:api.c         **** 
1418:api.c         **** /*
1419:api.c         ****  *this function sends a string to serial communication
1420:api.c         ****  * the input parameter is a defined global variable tmp_str
1421:api.c         ****  * the output parameter is an integer
1422:api.c         ****  * 0 -> the message is sent
1423:api.c         ****  * only use for the function owiFindFamilyDevicesAndAccessValues in one_wire.c
1424:api.c         ****  */
1425:api.c         **** int8_t UART0_Send_Message_String_woLF( char *tmp_str, uint32_t maxSize )
1426:api.c         **** {
1427:api.c         **** 	for ( uint16_t j = 0 ; j < strlen((char *) tmp_str) && j < maxSize ; j++ )
1428:api.c         **** 	{
1429:api.c         **** 		UART0_Transmit(tmp_str[j]);
1430:api.c         **** 	}
1431:api.c         **** 
1432:api.c         **** 	clearString(tmp_str, maxSize); /*clear tmp_str variable*/
1433:api.c         **** 	return 0;
1434:api.c         **** }//END of UART0_Send_Message_String_woLF
1435:api.c         **** 
1436:api.c         **** 
1437:api.c         **** uint8_t CommunicationError( uint8_t errorType, const int16_t errorIndex, const uint8_t flag_printCo
1438:api.c         **** {
1439:api.c         **** /* This (new) Communication Error function
1440:api.c         ****  * sends a ((partly) predefined) error message to UART
1441:api.c         ****  *
1442:api.c         ****  * output: ERRG/C/U/A/M <error number> <error message> [<alternative/extra Error> <alternative/extr
1443:api.c         ****  * output: ERRA/C/U/A/M "<command key> <command arguments>" --- <error number> <error message>
1444:api.c         ****  *
1445:api.c         ****  * arguments:
1446:api.c         ****  *    - Error type: defines the error class the error belongs to (ERRG, ERRA, ERRM, ERRC, ERRU)
1447:api.c         ****  *      - use enums as input
1448:api.c         ****  *         - ERRG: general errors
1449:api.c         ****  *         - ERRA: API specific
1450:api.c         ****  *            - considered to be specific to a certain command call,
1451:api.c         ****  *              therefore it delivers in addition to the error message, the calling command string
1452:api.c         ****  *         - ERRC/ERRM: can (call/hardware) specific errors
1453:api.c         ****  *            - if considered to be specific to a certain command call,
1454:api.c         ****  *              then it delivers in addition to the error message, the calling command string
1455:api.c         ****  *         - ERRU: undefined errors
1456:api.c         ****  *      - if  Error_typ > ERRU, Error_typ = ERRU
1457:api.c         ****  *    - Error_Index: selection index of predefined error messages
1458:api.c         ****  *      - if index > MAX_INDEX or 0 > index, the next arguments are used
1459:api.c         ****  *    - flag_printCommand
1460:api.c         ****  *      - if 0 do nothing
1461:api.c         ****  *      - else add command sequence to error message
1462:api.c         ****  *    - alternativeErrorMessage: message to be printed/attached if Error_Index exceeds limits / els
1463:api.c         ****  *       - by default prog_char, i.e. FLASH data (otherwise see below)
1464:api.c         ****  *    - alternativeErrorNumber :  number to be printed/attached if Error_Index exceeds limits / els
1465:api.c         ****  *       - if this value is less than COMMUNICATION_ERROR_USE_GLOBAL_MESSAGE_STRING_INDEX_THRESHOLD
1466:api.c         ****  *            value < COMMUNICATION_ERROR_USE_GLOBAL_MESSAGE_STRING_INDEX_THRESHOLD,
1467:api.c         ****  *            then instead of the text the global variable message is used
1468:api.c         ****  *
1469:api.c         ****  * returns:
1470:api.c         ****  *    - 0 , if all o.k.
1471:api.c         ****  *    - <> 0, else
1472:api.c         ****  * */
1473:api.c         **** 
1474:api.c         ****     unsigned char flag_UseOnlyAlternatives = FALSE;
1475:api.c         ****     unsigned char errmax[4];
1476:api.c         ****     errmax[ERRA] = SERIAL_ERROR_MAXIMUM_INDEX;
1477:api.c         ****     errmax[ERRC] = CAN_ERROR_MAXIMUM_INDEX;
1478:api.c         ****     errmax[ERRG] = GENERAL_ERROR_MAXIMUM_INDEX;
1479:api.c         ****     errmax[ERRM] = MOB_ERROR_MAXIMUM_INDEX;
1480:api.c         **** 
1481:api.c         ****     /* checking error type */
1482:api.c         ****     if ( ERR_MAXIMUM_NUMBER <= errorType )
1483:api.c         ****     {
1484:api.c         ****        errorType = ERRU; /* set to undefined error */
1485:api.c         ****     }
1486:api.c         **** 
1487:api.c         **** /* checking error index */
1488:api.c         ****     switch(errorType)
1489:api.c         ****     {
1490:api.c         ****        case ERRA:
1491:api.c         ****        case ERRC:
1492:api.c         ****        case ERRG:
1493:api.c         ****        case ERRM:
1494:api.c         ****           if (0 > errorIndex || errmax[errorType] <= errorIndex)
1495:api.c         ****           { flag_UseOnlyAlternatives = TRUE; }
1496:api.c         ****           break;
1497:api.c         ****        case ERRU:
1498:api.c         ****           flag_UseOnlyAlternatives = TRUE;
1499:api.c         ****           break;
1500:api.c         ****        default:
1501:api.c         ****           if ( eventDebug <= debug )
1502:api.c         ****           {
1503:api.c         ****              for ( int clearIndex = 0 ; clearIndex < BUFFER_SIZE ; clearIndex++ )
1504:api.c         ****              {
1505:api.c         ****                 message[clearIndex] = STRING_END;
1506:api.c         ****              }
1507:api.c         ****               snprintf_P(message, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) CommunicationError wrong e
1508:api.c         ****               UART0_Send_Message_String(message,BUFFER_SIZE);
1509:api.c         ****           }
1510:api.c         ****           return 1; /*shouldn't happen*/
1511:api.c         ****           break;
1512:api.c         ****     }
1513:api.c         **** 
1514:api.c         ****     /* check alternative pointer, return if empty*/
1515:api.c         ****     if ( TRUE == flag_UseOnlyAlternatives && NULL == alternativeErrorMessage && COMMUNICATION_ERROR
1516:api.c         ****     {
1517:api.c         ****           if ( eventDebug <= debug )
1518:api.c         ****           {
1519:api.c         ****              for ( int clearIndex = 0 ; clearIndex < BUFFER_SIZE ; clearIndex++ )
1520:api.c         ****              {
1521:api.c         ****                 message[clearIndex] = STRING_END;
1522:api.c         ****              }
1523:api.c         ****              snprintf_P(message, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) CommunicationError alternat
1524:api.c         ****              UART0_Send_Message_String(message,BUFFER_SIZE);
1525:api.c         ****           }
1526:api.c         ****           return 1;
1527:api.c         ****     }
1528:api.c         **** 
1529:api.c         ****     /* compose message
1530:api.c         ****      * output: ERRG/C/U/A/M <error number> <error message> [<alternative/extra Error> <alternative/
1531:api.c         ****      * output: ERRA/C/U/A/M "<command key> <command arguments>" --- <error number> <error message>
1532:api.c         ****      * */
1533:api.c         ****     /* clear string*/
1534:api.c         ****     clearString(uart_message_string, BUFFER_SIZE);
1535:api.c         **** 
1536:api.c         ****     /* cat Error Type */
1537:api.c         ****     strncat_P(uart_message_string, (const char*) (pgm_read_word( &(errorTypes[errorType]))) ,BUFFER
1538:api.c         **** 
1539:api.c         ****     /* "<command key> <command arguments>" */
1540:api.c         ****     if ( TRUE == flag_printCommand)
1541:api.c         ****     {
1542:api.c         ****        /* no command string parsing yet*/
1543:api.c         ****        if ( STRING_END != decrypt_uartString[0]) /*assume decrypt_uartString  not to be empty */
1544:api.c         ****        {
1545:api.c         ****           strncat_P(uart_message_string, PSTR(" \""), BUFFER_SIZE -1 );
1546:api.c         ****           strncat  (uart_message_string, decrypt_uartString, BUFFER_SIZE -1 );
1547:api.c         ****           strncat_P(uart_message_string, PSTR("\""), BUFFER_SIZE -1 );
1548:api.c         ****        }
1549:api.c         ****        else /* command string already parsed: setParameter available */
1550:api.c         ****        {
1551:api.c         ****           uint8_t index=0;
1552:api.c         ****           strncat_P(uart_message_string, PSTR(" \""), BUFFER_SIZE -1 );
1553:api.c         **** 
1554:api.c         ****           while (index < MAX_PARAMETER && NULL != setParameter[index] && STRING_END != setParameter
1555:api.c         ****           {
1556:api.c         ****              snprintf_P(uart_message_string, BUFFER_SIZE -1 , PSTR("%s%s%s"), uart_message_string, 
1557:api.c         ****              index++;
1558:api.c         ****           }
1559:api.c         ****           snprintf_P(uart_message_string, BUFFER_SIZE -1 , PSTR("%s\" ---"), uart_message_string);
1560:api.c         ****        }
1561:api.c         ****     }
1562:api.c         **** 
1563:api.c         ****     if ( FALSE == flag_UseOnlyAlternatives )
1564:api.c         ****     {
1565:api.c         ****        switch (errorType)
1566:api.c         ****        {
1567:api.c         ****           case ERRG:
1568:api.c         ****              snprintf_P(uart_message_string, BUFFER_SIZE -1 , PSTR("%s %i "), uart_message_string, 
1569:api.c         ****              strncat_P(uart_message_string, (const char*) (pgm_read_word( &(general_error[errorInde
1570:api.c         ****              break;
1571:api.c         ****           case ERRA:
1572:api.c         ****              snprintf_P(uart_message_string, BUFFER_SIZE -1 , PSTR("%s %i "), uart_message_string, 
1573:api.c         ****              strncat_P(uart_message_string, (const char*) (pgm_read_word( &(serial_error[errorIndex
1574:api.c         ****              break;
1575:api.c         ****           case ERRM:
1576:api.c         ****              snprintf_P(uart_message_string, BUFFER_SIZE -1 , PSTR("%s %i "), uart_message_string, 
1577:api.c         ****              strncat_P(uart_message_string, (const char*) (pgm_read_word( &(mob_error[errorIndex]))
1578:api.c         ****              break;
1579:api.c         ****           case ERRC:
1580:api.c         ****              snprintf_P(uart_message_string, BUFFER_SIZE -1 , PSTR("%s %i "), uart_message_string, 
1581:api.c         ****              strncat_P(uart_message_string, (const char*) (pgm_read_word( &(can_error[errorIndex]))
1582:api.c         ****              break;
1583:api.c         ****           default:
1584:api.c         ****              if ( eventDebug <= debug )
1585:api.c         ****              {
1586:api.c         ****                 for ( int clearIndex = 0 ; clearIndex < BUFFER_SIZE ; clearIndex++ )
1587:api.c         ****                 {
1588:api.c         ****                    message[clearIndex] = STRING_END;
1589:api.c         ****                 }
1590:api.c         ****                 snprintf_P(message, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) CommunicationError wrong
1591:api.c         ****                 UART0_Send_Message_String(message,BUFFER_SIZE);
1592:api.c         ****              }
1593:api.c         ****              return 1;
1594:api.c         ****              break;
1595:api.c         ****        }
1596:api.c         ****     }
1597:api.c         **** 
1598:api.c         ****     if ( NULL != alternativeErrorMessage || COMMUNICATION_ERROR_USE_GLOBAL_MESSAGE_STRING_INDEX_THR
1599:api.c         ****     {
1600:api.c         ****        if (TRUE == flag_UseOnlyAlternatives)
1601:api.c         ****        {
1602:api.c         ****           snprintf_P(uart_message_string,  BUFFER_SIZE - 1 , PSTR("%s %i "), uart_message_string, a
1603:api.c         ****        }
1604:api.c         ****        else
1605:api.c         ****        {
1606:api.c         ****           strncat_P(uart_message_string, PSTR(" *** "), BUFFER_SIZE -1);
1607:api.c         ****        }
1608:api.c         **** 
1609:api.c         ****        /* if alternativeErrorIndex is smaller then COMMUNICATION_ERROR_USE_GLOBAL_MESSAGE_STRING_IN
1610:api.c         ****        if ( COMMUNICATION_ERROR_USE_GLOBAL_MESSAGE_STRING_INDEX_THRESHOLD > alternativeErrorNumber 
1611:api.c         ****        {
1612:api.c         ****           strncat(uart_message_string, message, BUFFER_SIZE -1);
1613:api.c         ****        }
1614:api.c         ****        else
1615:api.c         ****        {
1616:api.c         ****           strncat_P(uart_message_string, alternativeErrorMessage, BUFFER_SIZE -1);
1617:api.c         ****        }
1618:api.c         ****     }
1619:api.c         **** 
1620:api.c         ****     UART0_Send_Message_String(NULL,0);
1621:api.c         **** 
1622:api.c         ****     return 0;
1623:api.c         **** }//END of CommunicationError function
1624:api.c         **** 
1625:api.c         **** /*
1626:api.c         ****  this function initializes all init functions again and activates the interrupt
1627:api.c         ****  */
1628:api.c         **** void Initialization( void )
1629:api.c         **** {
1630:api.c         **** #warning TODO find a generalized way to check for correct init and a modular possibility to fail an
1631:api.c         ****    uint16_t status = 0;
1632:api.c         ****    /* disable interrupts*/
1633:api.c         ****    cli();
1634:api.c         **** 
1635:api.c         ****    UART0_Init();
1636:api.c         **** 
1637:api.c         ****    Init_Port();
1638:api.c         **** 
1639:api.c         ****    can_init = CAN_Init(CAN_DEFAULT_BAUD_RATE); /* initialize can-controller with a baudrate 250kps 
1640:api.c         **** 
1641:api.c         ****    if ( -1 == can_init )
1642:api.c         ****    {
1643:api.c         ****       can_errorCode = CommunicationError(ERRC, CAN_ERROR_CAN_was_not_successfully_initialized, 0, N
1644:api.c         ****       exit(0);
1645:api.c         ****    }
1646:api.c         ****    else
1647:api.c         ****    {
1648:api.c         ****       timer0_init = Timer0_Init(); /* initialize first timer */
1649:api.c         ****    }
1650:api.c         **** 
1651:api.c         ****    if ( 1 != timer0_init )
1652:api.c         ****    {
1653:api.c         ****       general_errorCode = CommunicationError(ERRG, GENERAL_ERROR_init_for_timer0_failed, 0, NULL, 0
1654:api.c         ****       exit(0);
1655:api.c         ****    }
1656:api.c         ****    else
1657:api.c         ****    {
1658:api.c         ****       timer0A_init = Timer0A_Init(); /* initialize second timer*/
1659:api.c         ****    }
1660:api.c         ****    if ( 1 != timer0A_init )
1661:api.c         ****    {
1662:api.c         ****       general_errorCode = CommunicationError(ERRG, GENERAL_ERROR_init_for_timer0A_failed, 0, NULL, 
1663:api.c         ****       exit(0);
1664:api.c         ****    }
1665:api.c         **** 
1666:api.c         ****    /* enable interrupts*/
1667:api.c         ****    sei();
1668:api.c         **** 
1669:api.c         ****    clearString(currentResponseKeyword,MAX_LENGTH_KEYWORD);
1670:api.c         ****    strncat_P(currentResponseKeyword, (const char*) ( pgm_read_word( &(responseKeywords[responseKeyN
1671:api.c         **** 
1672:api.c         ****    // start relay init
1673:api.c         ****    status = relayThresholdInBoundPolarityInit();
1674:api.c         ****    if ( status >= TRUE )
1675:api.c         ****    {
1676:api.c         ****       status = 0;
1677:api.c         **** 
1678:api.c         ****       if ( FALSE != relayThresholdEnable_flag
1679:api.c         ****                && FALSE != relayThresholds_valid[relayThreshold_LOW]
1680:api.c         ****                && FALSE != relayThresholds_valid[relayThreshold_HIGH] )
1681:api.c         ****       {
1682:api.c         ****          status = relayThresholdInit();
1683:api.c         ****       }
1684:api.c         ****    }
1685:api.c         ****    else
1686:api.c         ****    {
1687:api.c         ****       snprintf_P(message, BUFFER_SIZE, PSTR("Relay Init Failed"));
1688:api.c         ****       CommunicationError(ERRA, -1, TRUE, message, COMMUNICATION_ERROR_USE_GLOBAL_MESSAGE_STRING_IND
1689:api.c         **** #warning missing action in case of failure: either exit or deactivate relay
1690:api.c         ****    }
1691:api.c         **** 
1692:api.c         **** }//END of Initialization
1693:api.c         **** 
1694:api.c         **** /*This function initializes all input /output of the microcontroller
1695:api.c         ****  *the  function has no input and output variable
1696:api.c         ****  */
1697:api.c         **** 
1698:api.c         **** void Init_Port( void )
1699:api.c         **** {
 827               	.LM90:
 828               	/* prologue: frame size=0 */
 829               	/* prologue end (size=0) */
1700:api.c         ****    uint8_t intstate = SREG; /* save global interrupt flag */
 831               	.LM91:
 832 02be 2FB7      		in r18,95-0x20
1701:api.c         ****    cli();
 834               	.LM92:
 835               	/* #APP */
 836 02c0 F894      		cli
1702:api.c         **** 
1703:api.c         **** #warning check right setting while merging, DDRA=0x00 could also be possible
1704:api.c         ****    /* DDRX = 0xff =>  output ,  PORTX = 0x00 => disabled pullups*/
1705:api.c         ****    DDRA = 0xFF; 
 838               	.LM93:
 839               	/* #NOAPP */
 840 02c2 9FEF      		ldi r25,lo8(-1)
 841 02c4 91B9      		out 33-0x20,r25
1706:api.c         ****    PORTA = 0x00; 
 843               	.LM94:
 844 02c6 12B8      		out 34-0x20,__zero_reg__
1707:api.c         **** #warning probably needed by MDC Relay RLTH
1708:api.c         **** //   PORTA |= 0x08; (MDC Relay)
1709:api.c         **** 
1710:api.c         ****    /* use port B as input with activated pullups*/
1711:api.c         ****    DDRB = 0x00;
 846               	.LM95:
 847 02c8 14B8      		out 36-0x20,__zero_reg__
1712:api.c         ****    PORTB = 0xFF;
 849               	.LM96:
 850 02ca 95B9      		out 37-0x20,r25
1713:api.c         **** 
1714:api.c         **** # warning TODO: is this comment true?
1715:api.c         ****    /* use port C as input with activated pullups*/
1716:api.c         ****    DDRC = 0xff & ( ~0x4 );
 852               	.LM97:
 853 02cc 8BEF      		ldi r24,lo8(-5)
 854 02ce 87B9      		out 39-0x20,r24
1717:api.c         ****    //  DDRC = 0xff ;
1718:api.c         ****    PORTC = 0xff;
 856               	.LM98:
 857 02d0 98B9      		out 40-0x20,r25
1719:api.c         **** 
1720:api.c         ****    /* use port E as input with activated pullups*/
1721:api.c         ****    DDRE = 0x00;
 859               	.LM99:
 860 02d2 1DB8      		out 45-0x20,__zero_reg__
1722:api.c         ****    PORTE = 0xFF;
 862               	.LM100:
 863 02d4 9EB9      		out 46-0x20,r25
1723:api.c         **** 
1724:api.c         ****    /* use port F as input with activated pullups*/
1725:api.c         ****    DDRF = 0x00; /* define as input */
 865               	.LM101:
 866 02d6 10BA      		out 48-0x20,__zero_reg__
1726:api.c         ****    PORTF = 0xFF; /* writing to it activates the pullups */
 868               	.LM102:
 869 02d8 91BB      		out 49-0x20,r25
1727:api.c         **** 
1728:api.c         ****    /* enable ADC and set clock prescale factor to 64 (p.280)*/
1729:api.c         ****    ADCSRA = BIT (ADEN) | 0x06;
 871               	.LM103:
 872 02da 86E8      		ldi r24,lo8(-122)
 873 02dc 8093 7A00 		sts 122,r24
1730:api.c         ****    /* 0x80 => ADEN => enable ADC*/
1731:api.c         **** 
1732:api.c         ****    /* low speed and manually triggered ADC conversion mode*/
1733:api.c         ****    ADCSRB = 0;
 875               	.LM104:
 876 02e0 1092 7B00 		sts 123,__zero_reg__
1734:api.c         **** 
1735:api.c         ****    /* deactivate digital input buffer for used ADC pins*/
1736:api.c         **** #warning during merge: different opinions to activate this #if 0/1
1737:api.c         **** #if 1
1738:api.c         ****    DIDR0 = 0x0F;
 878               	.LM105:
 879 02e4 8FE0      		ldi r24,lo8(15)
 880 02e6 8093 7E00 		sts 126,r24
1739:api.c         **** #else
1740:api.c         **** #ifdef ALLOW_DISABLE_JTAG
1741:api.c         ****    DIDR0 = 0xFF;
1742:api.c         ****    /*MCUCR |= 0x80;   // deactivate whole JTAG interface */
1743:api.c         **** #else
1744:api.c         ****    DIDR0 = 0x0F;
1745:api.c         **** #endif
1746:api.c         **** #endif
1747:api.c         **** 
1748:api.c         ****    /* enable only compare match interrupt on timer 1, channel A*/
1749:api.c         ****    TIMSK1 = 0x02;
 882               	.LM106:
 883 02ea 82E0      		ldi r24,lo8(2)
 884 02ec 8093 6F00 		sts 111,r24
1750:api.c         **** 
1751:api.c         ****    /* normal counter mode (no wave and/or PWM stuff) for timer 1, channel A*/
1752:api.c         ****    TCCR1A = 0;
 886               	.LM107:
 887 02f0 1092 8000 		sts 128,__zero_reg__
1753:api.c         ****    TCCR1C = 0;
 889               	.LM108:
 890 02f4 1092 8200 		sts 130,__zero_reg__
1754:api.c         **** 
1755:api.c         ****    /* snprintf_P(uart_message_string,BUFFER_SIZE-1, PSTR("init finished") );
1756:api.c         ****     UART0_Send_Message_String(NULL,0);*/
1757:api.c         **** 
1758:api.c         ****    SREG = intstate; /*restore global interrupt flag */
 892               	.LM109:
 893 02f8 2FBF      		out 95-0x20,r18
 894               	/* epilogue: frame size=0 */
 895 02fa 0895      		ret
 896               	/* epilogue end (size=1) */
 897               	/* function Init_Port size 32 (31) */
 902               	.Lscope11:
 905               	.global	clearUartStruct
 907               	clearUartStruct:
1759:api.c         **** 
1760:api.c         **** }//END of Init function
1761:api.c         **** 
1762:api.c         **** /*this function checks the functionality of the software*/
1763:api.c         **** void keep_alive( struct uartStruct *ptr_uartStruct )
1764:api.c         **** {
1765:api.c         **** 	flag_pingActive = ( 0 != ptr_uartStruct->Uart_Message_ID );
1766:api.c         **** 
1767:api.c         **** 	snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("RECV PING mechanism is %s"), ( flag_pingAct
1768:api.c         **** 	UART0_Send_Message_String(NULL,0);
1769:api.c         **** }//END of keep_alive
1770:api.c         **** 
1771:api.c         **** //void SwitchPinPeriodically()
1772:api.c         **** //{
1773:api.c         **** //   /*
1774:api.c         **** //    for (int j=0;1;j++) {
1775:api.c         **** //    for(i=1;i<=100;i++) {
1776:api.c         **** //    _delay_us(1);
1777:api.c         **** //    }
1778:api.c         **** //    if (j && 0 == j%1000 )
1779:api.c         **** //    {
1780:api.c         **** //    snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("--- alive (line:%i) --- %i "),
1781:api.c         **** //    __LINE__, j);
1782:api.c         **** //    UART0_Send_Message_String(NULL,0);
1783:api.c         **** //    }
1784:api.c         **** //    //      PORTA ^=  0xFF ;
1785:api.c         **** //    }
1786:api.c         **** //    */
1787:api.c         **** //}
1788:api.c         **** 
1789:api.c         **** void clearUartStruct( struct uartStruct *ptr_uartStruct ) /* resets all values of uartStruct*/
1790:api.c         **** { /*resets the uartStruct structure to "0" */
 909               	.LM110:
 910               	/* prologue: frame size=0 */
 911               	/* prologue end (size=0) */
 912 02fc FC01      		movw r30,r24
1791:api.c         ****    if ( NULL != ptr_uartStruct )
 914               	.LM111:
 915 02fe 892B      		or r24,r25
 916 0300 01F0      		breq .L82
1792:api.c         ****    {
1793:api.c         ****       ptr_uartStruct->Uart_Message_ID = 0;
 918               	.LM112:
 919 0302 1082      		st Z,__zero_reg__
 920 0304 1182      		std Z+1,__zero_reg__
 921 0306 1282      		std Z+2,__zero_reg__
 922 0308 1382      		std Z+3,__zero_reg__
1794:api.c         ****       ptr_uartStruct->Uart_Mask = 0;
 924               	.LM113:
 925 030a 1482      		std Z+4,__zero_reg__
 926 030c 1582      		std Z+5,__zero_reg__
 927 030e 1682      		std Z+6,__zero_reg__
 928 0310 1782      		std Z+7,__zero_reg__
1795:api.c         ****       ptr_uartStruct->Uart_Rtr = 0;
 930               	.LM114:
 931 0312 1086      		std Z+8,__zero_reg__
1796:api.c         ****       ptr_uartStruct->Uart_Length = 0;
 933               	.LM115:
 934 0314 1186      		std Z+9,__zero_reg__
1797:api.c         ****       ptr_uartStruct->commandKeywordIndex = 0;
 936               	.LM116:
 937 0316 128E      		std Z+26,__zero_reg__
1798:api.c         ****       ptr_uartStruct->number_of_arguments = 0;
 939               	.LM117:
 940 0318 138E      		std Z+27,__zero_reg__
 941 031a 80E0      		ldi r24,lo8(0)
 942               	.L81:
 943               	.LBB9:
1799:api.c         ****       for ( uint8_t clearIndex = 0 ; clearIndex < UART_MAX_DATA_ELEMENTS ; clearIndex++ )
1800:api.c         ****       {
1801:api.c         ****          ptr_uartStruct->Uart_Data[clearIndex] = 0;
 945               	.LM118:
 946 031c 1386      		std Z+11,__zero_reg__
 947 031e 1286      		std Z+10,__zero_reg__
 949               	.LM119:
 950 0320 8F5F      		subi r24,lo8(-(1))
 951 0322 3296      		adiw r30,2
 952 0324 8830      		cpi r24,lo8(8)
 953 0326 01F4      		brne .L81
 954               	.L82:
 955 0328 0895      		ret
 956               	.LBE9:
 957               	/* epilogue: frame size=0 */
 958               	/* epilogue: noreturn */
 959               	/* epilogue end (size=0) */
 960               	/* function clearUartStruct size 23 (23) */
 965               	.Lscope12:
 969               	.global	clearString
 971               	clearString:
1802:api.c         ****       }
1803:api.c         ****    }
1804:api.c         **** }//END of clearuartStruct
1805:api.c         **** 
1806:api.c         **** /* creates the string "RECV <current command keyword> "
1807:api.c         ****  * from the information of the uart struct
1808:api.c         ****  * input:
1809:api.c         ****  *    ptr_myUartStruct:
1810:api.c         ****  *       pointer to the uart struct
1811:api.c         ****  *       - if NULL, set to ptr_uartStruct global variable
1812:api.c         ****  *    message_string:
1813:api.c         ****  *       pointer to char array where the created message should be stored
1814:api.c         ****  *       - if NULL, set to uart_message_string global variable
1815:api.c         ****  *    size:
1816:api.c         ****  *       maximum size of message_string
1817:api.c         ****  *       - if 0, set to BUFFER_SIZE
1818:api.c         ****  * return:
1819:api.c         ****  *  always: 0
1820:api.c         ****  */
1821:api.c         **** 
1822:api.c         **** uint8_t createReceiveHeader( struct uartStruct *ptr_myUartStruct, char message_string[], uint16_t s
1823:api.c         **** {
1824:api.c         ****    if (NULL == ptr_myUartStruct) {ptr_myUartStruct = ptr_uartStruct;}
1825:api.c         ****    if (NULL == message_string) { message_string = uart_message_string; }
1826:api.c         ****    if (0 == size) { size = BUFFER_SIZE; }
1827:api.c         ****    clearString(message_string, size);
1828:api.c         ****    strncat_P(message_string, (const char*) ( pgm_read_word( &(responseKeywords[responseKeyNumber_RE
1829:api.c         ****    strncat_P(message_string, PSTR(" "), size - 1);
1830:api.c         ****    strncat_P(message_string, (const char*) ( pgm_read_word( &(commandKeywords[ptr_myUartStruct->com
1831:api.c         ****    strncat_P(message_string, PSTR(" "), size - 1);
1832:api.c         ****    return 0;
1833:api.c         **** }
1834:api.c         **** 
1835:api.c         **** /*clear strings*/
1836:api.c         **** uint16_t clearString( char mystring[], uint16_t length )
1837:api.c         **** {
 973               	.LM120:
 974               	/* prologue: frame size=0 */
 975               	/* prologue end (size=0) */
1838:api.c         ****    if (NULL == mystring) {return 0;}
 977               	.LM121:
 978 032a 0097      		sbiw r24,0
 979 032c 01F0      		breq .L85
1839:api.c         ****    uint16_t clearIndex = 0;
1840:api.c         ****    for (; clearIndex < length ; clearIndex++) {mystring[clearIndex] = STRING_END;}
 981               	.LM122:
 982 032e 6115      		cp r22,__zero_reg__
 983 0330 7105      		cpc r23,__zero_reg__
 984 0332 01F0      		breq .L85
 985 0334 20E0      		ldi r18,lo8(0)
 986 0336 30E0      		ldi r19,hi8(0)
 987 0338 FC01      		movw r30,r24
 988               	.L88:
 989 033a 1192      		st Z+,__zero_reg__
 990 033c 2F5F      		subi r18,lo8(-(1))
 991 033e 3F4F      		sbci r19,hi8(-(1))
 992 0340 6217      		cp r22,r18
 993 0342 7307      		cpc r23,r19
 994 0344 01F4      		brne .L88
 995 0346 00C0      		rjmp .L90
 996               	.L85:
 997 0348 60E0      		ldi r22,lo8(0)
 998 034a 70E0      		ldi r23,hi8(0)
 999               	.L90:
1841:api.c         ****    return clearIndex;
1842:api.c         **** }
 1001               	.LM123:
 1002 034c CB01      		movw r24,r22
 1003               	/* epilogue: frame size=0 */
 1004 034e 0895      		ret
 1005               	/* epilogue end (size=1) */
 1006               	/* function clearString size 19 (18) */
 1011               	.Lscope13:
 1015               	.global	UART0_Send_Message_String
 1017               	UART0_Send_Message_String:
 1019               	.LM124:
 1020               	/* prologue: frame size=0 */
 1021 0350 CF92      		push r12
 1022 0352 DF92      		push r13
 1023 0354 EF92      		push r14
 1024 0356 FF92      		push r15
 1025 0358 0F93      		push r16
 1026 035a 1F93      		push r17
 1027 035c CF93      		push r28
 1028 035e DF93      		push r29
 1029               	/* prologue end (size=8) */
 1030 0360 6C01      		movw r12,r24
 1031 0362 7B01      		movw r14,r22
 1033               	.LM125:
 1034 0364 892B      		or r24,r25
 1035 0366 01F0      		breq .L111
 1037               	.LM126:
 1038 0368 672B      		or r22,r23
 1039 036a 01F0      		breq .L112
 1040               	.L97:
 1042               	.LM127:
 1043 036c 1092 0000 		sts (index.3461)+1,__zero_reg__
 1044 0370 1092 0000 		sts index.3461,__zero_reg__
 1045 0374 F601      		movw r30,r12
 1046 0376 8081      		ld r24,Z
 1047 0378 8823      		tst r24
 1048 037a 01F0      		breq .L99
 1049 037c E114      		cp r14,__zero_reg__
 1050 037e F104      		cpc r15,__zero_reg__
 1051 0380 01F0      		breq .L99
 1052 0382 00E0      		ldi r16,lo8(0)
 1053 0384 10E0      		ldi r17,hi8(0)
 1054 0386 E601      		movw r28,r12
 1055 0388 00C0      		rjmp .L102
 1056               	.L114:
 1057 038a E016      		cp r14,r16
 1058 038c F106      		cpc r15,r17
 1059 038e 01F0      		breq .L113
 1060               	.L102:
 1062               	.LM128:
 1063 0390 0E94 0000 		call UART0_Transmit
 1065               	.LM129:
 1066 0394 0F5F      		subi r16,lo8(-(1))
 1067 0396 1F4F      		sbci r17,hi8(-(1))
 1068 0398 2196      		adiw r28,1
 1069 039a 8881      		ld r24,Y
 1070 039c 8823      		tst r24
 1071 039e 01F4      		brne .L114
 1072 03a0 1093 0000 		sts (index.3461)+1,r17
 1073 03a4 0093 0000 		sts index.3461,r16
 1074 03a8 E801      		movw r28,r16
 1075 03aa 00C0      		rjmp .L105
 1076               	.L112:
 1078               	.LM130:
 1079 03ac 8FE7      		ldi r24,lo8(127)
 1080 03ae E82E      		mov r14,r24
 1081 03b0 F12C      		mov r15,__zero_reg__
 1082 03b2 00C0      		rjmp .L97
 1083               	.L113:
 1085               	.LM131:
 1086 03b4 F092 0000 		sts (index.3461)+1,r15
 1087 03b8 E092 0000 		sts index.3461,r14
 1088 03bc E701      		movw r28,r14
 1089 03be 00C0      		rjmp .L105
 1090               	.L111:
 1092               	.LM132:
 1093 03c0 20E0      		ldi r18,lo8(uart_message_string)
 1094 03c2 C22E      		mov r12,r18
 1095 03c4 20E0      		ldi r18,hi8(uart_message_string)
 1096 03c6 D22E      		mov r13,r18
 1097 03c8 9FE7      		ldi r25,lo8(127)
 1098 03ca E92E      		mov r14,r25
 1099 03cc F12C      		mov r15,__zero_reg__
 1100 03ce 00C0      		rjmp .L97
 1101               	.L99:
 1103               	.LM133:
 1104 03d0 C0E0      		ldi r28,lo8(0)
 1105 03d2 D0E0      		ldi r29,hi8(0)
 1106               	.L105:
 1108               	.LM134:
 1109 03d4 8AE0      		ldi r24,lo8(10)
 1110 03d6 0E94 0000 		call UART0_Transmit
 1112               	.LM135:
 1113 03da B701      		movw r22,r14
 1114 03dc C601      		movw r24,r12
 1115 03de 0E94 0000 		call clearString
 1117               	.LM136:
 1118 03e2 CE01      		movw r24,r28
 1119               	/* epilogue: frame size=0 */
 1120 03e4 DF91      		pop r29
 1121 03e6 CF91      		pop r28
 1122 03e8 1F91      		pop r17
 1123 03ea 0F91      		pop r16
 1124 03ec FF90      		pop r15
 1125 03ee EF90      		pop r14
 1126 03f0 DF90      		pop r13
 1127 03f2 CF90      		pop r12
 1128 03f4 0895      		ret
 1129               	/* epilogue end (size=9) */
 1130               	/* function UART0_Send_Message_String size 83 (66) */
 1135               	.Lscope14:
 1136               		.data
 1137               	.LC0:
 1138 0000 656E 6162 		.string	"enabled"
 1138      6C65 6400 
 1139               	.LC1:
 1140 0008 6469 7361 		.string	"disabled"
 1140      626C 6564 
 1140      00
 1141               		.text
 1144               	.global	keep_alive
 1146               	keep_alive:
 1148               	.LM137:
 1149               	/* prologue: frame size=0 */
 1150               	/* prologue end (size=0) */
 1151 03f6 FC01      		movw r30,r24
 1153               	.LM138:
 1154 03f8 20E0      		ldi r18,lo8(0)
 1155 03fa 8081      		ld r24,Z
 1156 03fc 9181      		ldd r25,Z+1
 1157 03fe A281      		ldd r26,Z+2
 1158 0400 B381      		ldd r27,Z+3
 1159 0402 0097      		sbiw r24,0
 1160 0404 A105      		cpc r26,__zero_reg__
 1161 0406 B105      		cpc r27,__zero_reg__
 1162 0408 01F0      		breq .L116
 1164               	.LM139:
 1165 040a 21E0      		ldi r18,lo8(1)
 1166               	.L116:
 1167 040c 2093 0000 		sts flag_pingActive,r18
 1169               	.LM140:
 1170 0410 2223      		tst r18
 1171 0412 01F0      		breq .L117
 1172 0414 80E0      		ldi r24,lo8(.LC0)
 1173 0416 90E0      		ldi r25,hi8(.LC0)
 1174 0418 00C0      		rjmp .L119
 1175               	.L117:
 1176 041a 80E0      		ldi r24,lo8(.LC1)
 1177 041c 90E0      		ldi r25,hi8(.LC1)
 1178               	.L119:
 1179 041e 9F93      		push r25
 1180 0420 8F93      		push r24
 1181 0422 80E0      		ldi r24,lo8(__c.3666)
 1182 0424 90E0      		ldi r25,hi8(__c.3666)
 1183 0426 9F93      		push r25
 1184 0428 8F93      		push r24
 1185 042a 8EE7      		ldi r24,lo8(126)
 1186 042c 90E0      		ldi r25,hi8(126)
 1187 042e 9F93      		push r25
 1188 0430 8F93      		push r24
 1189 0432 80E0      		ldi r24,lo8(uart_message_string)
 1190 0434 90E0      		ldi r25,hi8(uart_message_string)
 1191 0436 9F93      		push r25
 1192 0438 8F93      		push r24
 1193 043a 0E94 0000 		call snprintf_P
 1195               	.LM141:
 1196 043e 60E0      		ldi r22,lo8(0)
 1197 0440 70E0      		ldi r23,hi8(0)
 1198 0442 80E0      		ldi r24,lo8(0)
 1199 0444 90E0      		ldi r25,hi8(0)
 1200 0446 0E94 0000 		call UART0_Send_Message_String
 1201 044a 8DB7      		in r24,__SP_L__
 1202 044c 9EB7      		in r25,__SP_H__
 1203 044e 0896      		adiw r24,8
 1204 0450 0FB6      		in __tmp_reg__,__SREG__
 1205 0452 F894      		cli
 1206 0454 9EBF      		out __SP_H__,r25
 1207 0456 0FBE      		out __SREG__,__tmp_reg__
 1208 0458 8DBF      		out __SP_L__,r24
 1209               	/* epilogue: frame size=0 */
 1210 045a 0895      		ret
 1211               	/* epilogue end (size=1) */
 1212               	/* function keep_alive size 51 (50) */
 1214               	.Lscope15:
 1215               		.data
 1216               	.LC2:
 1217 0011 6170 692E 		.string	"api.c"
 1217      6300 
 1218               		.text
 1222               	.global	getNumericLength
 1224               	getNumericLength:
1843:api.c         **** 
1844:api.c         **** /*
1845:api.c         ****  *this function toggles endlessly ! PINA3
1846:api.c         ****  */
1847:api.c         **** 
1848:api.c         **** #warning TODO finish this function (pin_number and timeout/duration)
1849:api.c         **** void toggle_pin( unsigned char pin_number )
1850:api.c         **** {
1851:api.c         ****    long int i, c, d;
1852:api.c         ****    _delay_ms(10);
1853:api.c         **** 
1854:api.c         ****    for ( i = 0; i <= 50 ; i++ )
1855:api.c         ****    {
1856:api.c         ****       _delay_ms(10);
1857:api.c         ****       d = d + i * c;
1858:api.c         ****       c = d + i;
1859:api.c         ****    }
1860:api.c         ****    /*toggle FrontLED*/
1861:api.c         ****    PINA = 0x3;
1862:api.c         **** }//END of toggle_pin function
1863:api.c         **** 
1864:api.c         **** 
1865:api.c         **** /*
1866:api.c         ****  * adds to the normal receive header created internally the additional command key word of sub comm
1867:api.c         ****  * input: uart container
1868:api.c         ****  *  - key index number of primary command, or -1 for current
1869:api.c         ****  *  - command Keyword of sub command
1870:api.c         ****  */
1871:api.c         **** 
1872:api.c         **** void createExtendedSubCommandReceiveResponseHeader(struct uartStruct * ptr_uartStruct,
1873:api.c         ****                                                    int8_t keyNumber, int8_t index,  const prog_char
1874:api.c         **** {
1875:api.c         ****    /* make sure keyNumber is shown */
1876:api.c         ****    int8_t keywordIndex = ptr_uartStruct->commandKeywordIndex;
1877:api.c         ****    if (0 <= keyNumber) {ptr_uartStruct->commandKeywordIndex = keyNumber;}
1878:api.c         **** 
1879:api.c         ****    createReceiveHeader(ptr_uartStruct, uart_message_string, BUFFER_SIZE);
1880:api.c         ****    /* reset index to original value */
1881:api.c         ****    ptr_uartStruct->commandKeywordIndex = keywordIndex;
1882:api.c         **** 
1883:api.c         ****    strncat_P(uart_message_string, (const char*) ( pgm_read_word( &(commandKeywords[index])) ), BUFF
1884:api.c         ****    strncat_P(uart_message_string, PSTR(" "), BUFFER_SIZE - 1);
1885:api.c         **** }
1886:api.c         **** 
1887:api.c         **** 
1888:api.c         **** /*
1889:api.c         ****  * getNumericLength(const char *string, const uint16_t maxLenght)
1890:api.c         ****  *
1891:api.c         ****  * return number of leading characters of string
1892:api.c         ****  * being an digit (0x/0X of hex numbers are ignored) up to the maximum maxLength-1
1893:api.c         ****  */
1894:api.c         **** 
1895:api.c         **** uint16_t getNumericLength(const char string[], const uint16_t maxLength)
1896:api.c         **** {
 1226               	.LM142:
 1227               	/* prologue: frame size=0 */
 1228 045c AF92      		push r10
 1229 045e BF92      		push r11
 1230 0460 CF92      		push r12
 1231 0462 DF92      		push r13
 1232 0464 EF92      		push r14
 1233 0466 FF92      		push r15
 1234 0468 0F93      		push r16
 1235 046a 1F93      		push r17
 1236 046c CF93      		push r28
 1237 046e DF93      		push r29
 1238               	/* prologue end (size=10) */
 1239 0470 6C01      		movw r12,r24
 1240 0472 5B01      		movw r10,r22
1897:api.c         ****     /* check if argument contains of digits */
1898:api.c         ****     uint16_t index = 0;
1899:api.c         ****     if (
1900:api.c         ****              0 == strncmp_P( string, PSTR("0x"),2) ||
 1242               	.LM143:
 1243 0474 42E0      		ldi r20,lo8(2)
 1244 0476 50E0      		ldi r21,hi8(2)
 1245 0478 60E0      		ldi r22,lo8(__c.3751)
 1246 047a 70E0      		ldi r23,hi8(__c.3751)
 1247 047c 0E94 0000 		call strncmp_P
 1248 0480 892B      		or r24,r25
 1249 0482 01F0      		breq .+2
 1250 0484 00C0      		rjmp .L145
 1251               	.L122:
 1253               	.LM144:
 1254 0486 C2E0      		ldi r28,lo8(2)
 1255 0488 D0E0      		ldi r29,hi8(2)
 1256 048a 03E0      		ldi r16,lo8(3)
 1257 048c 10E0      		ldi r17,hi8(3)
 1258               	.L125:
1901:api.c         ****              0 == strncmp_P( string, PSTR("0X"),2)
1902:api.c         ****         )
1903:api.c         ****     {
1904:api.c         ****        index = 2;
1905:api.c         ****     }
1906:api.c         **** 
1907:api.c         ****     /* calculate length of argument and check if all of them are hex numbers */
1908:api.c         ****     while (index < maxLength && isxdigit(string[index])) {index++;}
 1260               	.LM145:
 1261 048e CA15      		cp r28,r10
 1262 0490 DB05      		cpc r29,r11
 1263 0492 00F4      		brsh .L126
 1264 0494 8601      		movw r16,r12
 1265 0496 0C0F      		add r16,r28
 1266 0498 1D1F      		adc r17,r29
 1267 049a 7501      		movw r14,r10
 1268 049c 00C0      		rjmp .L128
 1269               	.L129:
 1270 049e 2196      		adiw r28,1
 1271 04a0 0F5F      		subi r16,lo8(-(1))
 1272 04a2 1F4F      		sbci r17,hi8(-(1))
 1273 04a4 EC16      		cp r14,r28
 1274 04a6 FD06      		cpc r15,r29
 1275 04a8 01F0      		breq .L144
 1276               	.L128:
 1277 04aa F801      		movw r30,r16
 1278 04ac 8081      		ld r24,Z
 1279 04ae 9927      		clr r25
 1280 04b0 0E94 0000 		call isxdigit
 1281 04b4 892B      		or r24,r25
 1282 04b6 01F4      		brne .L129
 1283               	.L144:
 1284 04b8 8E01      		movw r16,r28
 1285 04ba 0F5F      		subi r16,lo8(-(1))
 1286 04bc 1F4F      		sbci r17,hi8(-(1))
 1287               	.L126:
1909:api.c         ****     if ( eventDebug <= debug && ( ( debugMask >> debugApi ) & 1 ) )
 1289               	.LM146:
 1290 04be 8091 0000 		lds r24,debug
 1291 04c2 8230      		cpi r24,lo8(2)
 1292 04c4 00F0      		brlo .L132
 1293 04c6 8091 0000 		lds r24,debugMask
 1294 04ca 9091 0000 		lds r25,(debugMask)+1
 1295 04ce A091 0000 		lds r26,(debugMask)+2
 1296 04d2 B091 0000 		lds r27,(debugMask)+3
 1297 04d6 81FD      		sbrc r24,1
 1298 04d8 00C0      		rjmp .L146
 1299               	.L132:
1910:api.c         ****     {
1911:api.c         ****        snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) getNumericLength: fou
1912:api.c         ****        UART0_Send_Message_String(NULL,0);
1913:api.c         ****     }
1914:api.c         **** 
1915:api.c         ****     if (index+1 < maxLength)
 1301               	.LM147:
 1302 04da 0A15      		cp r16,r10
 1303 04dc 1B05      		cpc r17,r11
 1304 04de 00F0      		brlo .+2
 1305 04e0 00C0      		rjmp .L135
1916:api.c         ****     {
1917:api.c         ****        if   ( ! ( isspace(string[index+1]) || ('\0' == string[index+1] ) ) )
 1307               	.LM148:
 1308 04e2 CC0E      		add r12,r28
 1309 04e4 DD1E      		adc r13,r29
 1310 04e6 F601      		movw r30,r12
 1311 04e8 F180      		ldd r15,Z+1
 1312 04ea 0F2D      		mov r16,r15
 1313 04ec 1127      		clr r17
 1314 04ee C801      		movw r24,r16
 1315 04f0 0E94 0000 		call isspace
 1316 04f4 892B      		or r24,r25
 1317 04f6 01F0      		breq .+2
 1318 04f8 00C0      		rjmp .L135
 1319 04fa FF20      		tst r15
 1320 04fc 01F4      		brne .+2
 1321 04fe 00C0      		rjmp .L135
1918:api.c         ****        {
1919:api.c         ****           if ( eventDebug <= debug && ( ( debugMask >> debugApi ) & 1 ) )
 1323               	.LM149:
 1324 0500 8091 0000 		lds r24,debug
 1325 0504 8230      		cpi r24,lo8(2)
 1326 0506 00F0      		brlo .L139
 1327 0508 8091 0000 		lds r24,debugMask
 1328 050c 9091 0000 		lds r25,(debugMask)+1
 1329 0510 A091 0000 		lds r26,(debugMask)+2
 1330 0514 B091 0000 		lds r27,(debugMask)+3
 1331 0518 81FD      		sbrc r24,1
 1332 051a 00C0      		rjmp .L147
 1333               	.L139:
1920:api.c         ****           {
1921:api.c         ****              snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("DEBUG (%4i, %s) getNumericLengt
1922:api.c         ****                         __LINE__, __FILE__, string[index+1], string[index+1]);
1923:api.c         ****              UART0_Send_Message_String(NULL,0);
 1335               	.LM150:
 1336 051c C0E0      		ldi r28,lo8(0)
 1337 051e D0E0      		ldi r29,hi8(0)
 1338 0520 00C0      		rjmp .L135
 1339               	.L145:
 1341               	.LM151:
 1342 0522 42E0      		ldi r20,lo8(2)
 1343 0524 50E0      		ldi r21,hi8(2)
 1344 0526 60E0      		ldi r22,lo8(__c.3753)
 1345 0528 70E0      		ldi r23,hi8(__c.3753)
 1346 052a C601      		movw r24,r12
 1347 052c 0E94 0000 		call strncmp_P
 1348 0530 892B      		or r24,r25
 1349 0532 01F4      		brne .+2
 1350 0534 00C0      		rjmp .L122
 1352               	.LM152:
 1353 0536 C0E0      		ldi r28,lo8(0)
 1354 0538 D0E0      		ldi r29,hi8(0)
 1355 053a 01E0      		ldi r16,lo8(1)
 1356 053c 10E0      		ldi r17,hi8(1)
 1357 053e 00C0      		rjmp .L125
 1358               	.L146:
 1360               	.LM153:
 1361 0540 DF93      		push r29
 1362 0542 CF93      		push r28
 1363 0544 80E0      		ldi r24,lo8(.LC2)
 1364 0546 90E0      		ldi r25,hi8(.LC2)
 1365 0548 9F93      		push r25
 1366 054a 8F93      		push r24
 1367 054c 87E7      		ldi r24,lo8(1911)
 1368 054e 97E0      		ldi r25,hi8(1911)
 1369 0550 9F93      		push r25
 1370 0552 8F93      		push r24
 1371 0554 80E0      		ldi r24,lo8(__c.3758)
 1372 0556 90E0      		ldi r25,hi8(__c.3758)
 1373 0558 9F93      		push r25
 1374 055a 8F93      		push r24
 1375 055c 8EE7      		ldi r24,lo8(126)
 1376 055e 90E0      		ldi r25,hi8(126)
 1377 0560 9F93      		push r25
 1378 0562 8F93      		push r24
 1379 0564 80E0      		ldi r24,lo8(uart_message_string)
 1380 0566 90E0      		ldi r25,hi8(uart_message_string)
 1381 0568 9F93      		push r25
 1382 056a 8F93      		push r24
 1383 056c 0E94 0000 		call snprintf_P
 1385               	.LM154:
 1386 0570 60E0      		ldi r22,lo8(0)
 1387 0572 70E0      		ldi r23,hi8(0)
 1388 0574 80E0      		ldi r24,lo8(0)
 1389 0576 90E0      		ldi r25,hi8(0)
 1390 0578 0E94 0000 		call UART0_Send_Message_String
 1391 057c 8DB7      		in r24,__SP_L__
 1392 057e 9EB7      		in r25,__SP_H__
 1393 0580 0C96      		adiw r24,12
 1394 0582 0FB6      		in __tmp_reg__,__SREG__
 1395 0584 F894      		cli
 1396 0586 9EBF      		out __SP_H__,r25
 1397 0588 0FBE      		out __SREG__,__tmp_reg__
 1398 058a 8DBF      		out __SP_L__,r24
 1399 058c 00C0      		rjmp .L132
 1400               	.L147:
 1402               	.LM155:
 1403 058e 1F93      		push r17
 1404 0590 0F93      		push r16
 1405 0592 1F93      		push r17
 1406 0594 0F93      		push r16
 1407 0596 80E0      		ldi r24,lo8(.LC2)
 1408 0598 90E0      		ldi r25,hi8(.LC2)
 1409 059a 9F93      		push r25
 1410 059c 8F93      		push r24
 1411 059e 82E8      		ldi r24,lo8(1922)
 1412 05a0 97E0      		ldi r25,hi8(1922)
 1413 05a2 9F93      		push r25
 1414 05a4 8F93      		push r24
 1415 05a6 80E0      		ldi r24,lo8(__c.3760)
 1416 05a8 90E0      		ldi r25,hi8(__c.3760)
 1417 05aa 9F93      		push r25
 1418 05ac 8F93      		push r24
 1419 05ae 8EE7      		ldi r24,lo8(126)
 1420 05b0 90E0      		ldi r25,hi8(126)
 1421 05b2 9F93      		push r25
 1422 05b4 8F93      		push r24
 1423 05b6 80E0      		ldi r24,lo8(uart_message_string)
 1424 05b8 90E0      		ldi r25,hi8(uart_message_string)
 1425 05ba 9F93      		push r25
 1426 05bc 8F93      		push r24
 1427 05be 0E94 0000 		call snprintf_P
 1429               	.LM156:
 1430 05c2 60E0      		ldi r22,lo8(0)
 1431 05c4 70E0      		ldi r23,hi8(0)
 1432 05c6 80E0      		ldi r24,lo8(0)
 1433 05c8 90E0      		ldi r25,hi8(0)
 1434 05ca 0E94 0000 		call UART0_Send_Message_String
 1435 05ce C0E0      		ldi r28,lo8(0)
 1436 05d0 D0E0      		ldi r29,hi8(0)
 1437 05d2 8DB7      		in r24,__SP_L__
 1438 05d4 9EB7      		in r25,__SP_H__
 1439 05d6 0E96      		adiw r24,14
 1440 05d8 0FB6      		in __tmp_reg__,__SREG__
 1441 05da F894      		cli
 1442 05dc 9EBF      		out __SP_H__,r25
 1443 05de 0FBE      		out __SREG__,__tmp_reg__
 1444 05e0 8DBF      		out __SP_L__,r24
 1445               	.L135:
1924:api.c         ****           }
1925:api.c         ****           index = 0; /* numeric value is not separated from next word nor isn't followed by '\0', s
1926:api.c         ****        }
1927:api.c         ****     }
1928:api.c         **** 
1929:api.c         ****     return index;
1930:api.c         **** }
 1447               	.LM157:
 1448 05e2 CE01      		movw r24,r28
 1449               	/* epilogue: frame size=0 */
 1450 05e4 DF91      		pop r29
 1451 05e6 CF91      		pop r28
 1452 05e8 1F91      		pop r17
 1453 05ea 0F91      		pop r16
 1454 05ec FF90      		pop r15
 1455 05ee EF90      		pop r14
 1456 05f0 DF90      		pop r13
 1457 05f2 CF90      		pop r12
 1458 05f4 BF90      		pop r11
 1459 05f6 AF90      		pop r10
 1460 05f8 0895      		ret
 1461               	/* epilogue end (size=11) */
 1462               	/* function getNumericLength size 207 (186) */
 1467               	.Lscope16:
 1472               	.global	createReceiveHeader
 1474               	createReceiveHeader:
 1476               	.LM158:
 1477               	/* prologue: frame size=0 */
 1478 05fa EF92      		push r14
 1479 05fc FF92      		push r15
 1480 05fe 0F93      		push r16
 1481 0600 1F93      		push r17
 1482 0602 CF93      		push r28
 1483 0604 DF93      		push r29
 1484               	/* prologue end (size=6) */
 1485 0606 8C01      		movw r16,r24
 1486 0608 EB01      		movw r28,r22
 1488               	.LM159:
 1489 060a 892B      		or r24,r25
 1490 060c 01F0      		breq .L157
 1491               	.L149:
 1493               	.LM160:
 1494 060e 2097      		sbiw r28,0
 1495 0610 01F0      		breq .L158
 1496               	.L151:
 1498               	.LM161:
 1499 0612 4115      		cp r20,__zero_reg__
 1500 0614 5105      		cpc r21,__zero_reg__
 1501 0616 01F0      		breq .L159
 1502 0618 7A01      		movw r14,r20
 1503 061a 0894      		sec
 1504 061c E108      		sbc r14,__zero_reg__
 1505 061e F108      		sbc r15,__zero_reg__
 1506 0620 00C0      		rjmp .L155
 1507               	.L159:
 1508 0622 4FE7      		ldi r20,lo8(127)
 1509 0624 50E0      		ldi r21,hi8(127)
 1510 0626 6EE7      		ldi r22,lo8(126)
 1511 0628 E62E      		mov r14,r22
 1512 062a F12C      		mov r15,__zero_reg__
 1513 062c 00C0      		rjmp .L155
 1514               	.L158:
 1516               	.LM162:
 1517 062e C0E0      		ldi r28,lo8(uart_message_string)
 1518 0630 D0E0      		ldi r29,hi8(uart_message_string)
 1519 0632 00C0      		rjmp .L151
 1520               	.L157:
 1522               	.LM163:
 1523 0634 0091 0000 		lds r16,ptr_uartStruct
 1524 0638 1091 0000 		lds r17,(ptr_uartStruct)+1
 1525 063c 00C0      		rjmp .L149
 1526               	.L155:
 1528               	.LM164:
 1529 063e BA01      		movw r22,r20
 1530 0640 CE01      		movw r24,r28
 1531 0642 0E94 0000 		call clearString
 1532               	.LBB10:
 1534               	.LM165:
 1535 0646 80E0      		ldi r24,lo8(responseKeywords)
 1536 0648 90E0      		ldi r25,hi8(responseKeywords)
 1537 064a FC01      		movw r30,r24
 1538               	/* #APP */
 1539 064c C895      		lpm
 1540 064e 202D      		mov r18, r0
 1541 0650 3196      		adiw r30, 1
 1542 0652 C895      		lpm
 1543 0654 302D      		mov r19, r0
 1544               		
 1545               	/* #NOAPP */
 1546               	.LBE10:
 1547 0656 A701      		movw r20,r14
 1548 0658 B901      		movw r22,r18
 1549 065a CE01      		movw r24,r28
 1550 065c 0E94 0000 		call strncat_P
 1552               	.LM166:
 1553 0660 A701      		movw r20,r14
 1554 0662 60E0      		ldi r22,lo8(__c.3688)
 1555 0664 70E0      		ldi r23,hi8(__c.3688)
 1556 0666 CE01      		movw r24,r28
 1557 0668 0E94 0000 		call strncat_P
 1558               	.LBB11:
 1560               	.LM167:
 1561 066c F801      		movw r30,r16
 1562 066e 828D      		ldd r24,Z+26
 1563 0670 E82F      		mov r30,r24
 1564 0672 FF27      		clr r31
 1565 0674 E7FD      		sbrc r30,7
 1566 0676 F095      		com r31
 1567 0678 EE0F      		lsl r30
 1568 067a FF1F      		rol r31
 1569 067c E050      		subi r30,lo8(-(commandKeywords))
 1570 067e F040      		sbci r31,hi8(-(commandKeywords))
 1571               	/* #APP */
 1572 0680 C895      		lpm
 1573 0682 602D      		mov r22, r0
 1574 0684 3196      		adiw r30, 1
 1575 0686 C895      		lpm
 1576 0688 702D      		mov r23, r0
 1577               		
 1578               	/* #NOAPP */
 1579               	.LBE11:
 1580 068a A701      		movw r20,r14
 1581 068c CE01      		movw r24,r28
 1582 068e 0E94 0000 		call strncat_P
 1584               	.LM168:
 1585 0692 A701      		movw r20,r14
 1586 0694 60E0      		ldi r22,lo8(__c.3693)
 1587 0696 70E0      		ldi r23,hi8(__c.3693)
 1588 0698 CE01      		movw r24,r28
 1589 069a 0E94 0000 		call strncat_P
 1591               	.LM169:
 1592 069e 80E0      		ldi r24,lo8(0)
 1593 06a0 90E0      		ldi r25,hi8(0)
 1594               	/* epilogue: frame size=0 */
 1595 06a2 DF91      		pop r29
 1596 06a4 CF91      		pop r28
 1597 06a6 1F91      		pop r17
 1598 06a8 0F91      		pop r16
 1599 06aa FF90      		pop r15
 1600 06ac EF90      		pop r14
 1601 06ae 0895      		ret
 1602               	/* epilogue end (size=7) */
 1603               	/* function createReceiveHeader size 105 (92) */
 1613               	.Lscope17:
 1619               	.global	createExtendedSubCommandReceiveResponseHeader
 1621               	createExtendedSubCommandReceiveResponseHeader:
 1623               	.LM170:
 1624               	/* prologue: frame size=0 */
 1625 06b0 EF92      		push r14
 1626 06b2 FF92      		push r15
 1627 06b4 0F93      		push r16
 1628 06b6 1F93      		push r17
 1629 06b8 CF93      		push r28
 1630 06ba DF93      		push r29
 1631               	/* prologue end (size=6) */
 1632 06bc EC01      		movw r28,r24
 1633 06be E42E      		mov r14,r20
 1634 06c0 8901      		movw r16,r18
 1636               	.LM171:
 1637 06c2 FA8C      		ldd r15,Y+26
 1639               	.LM172:
 1640 06c4 67FF      		sbrs r22,7
 1642               	.LM173:
 1643 06c6 6A8F      		std Y+26,r22
 1644               	.L161:
 1646               	.LM174:
 1647 06c8 4FE7      		ldi r20,lo8(127)
 1648 06ca 50E0      		ldi r21,hi8(127)
 1649 06cc 60E0      		ldi r22,lo8(uart_message_string)
 1650 06ce 70E0      		ldi r23,hi8(uart_message_string)
 1651 06d0 CE01      		movw r24,r28
 1652 06d2 0E94 0000 		call createReceiveHeader
 1654               	.LM175:
 1655 06d6 FA8E      		std Y+26,r15
 1656               	.LBB12:
 1658               	.LM176:
 1659 06d8 EE2D      		mov r30,r14
 1660 06da FF27      		clr r31
 1661 06dc E7FD      		sbrc r30,7
 1662 06de F095      		com r31
 1663 06e0 EE0F      		lsl r30
 1664 06e2 FF1F      		rol r31
 1665 06e4 E00F      		add r30,r16
 1666 06e6 F11F      		adc r31,r17
 1667               	/* #APP */
 1668 06e8 C895      		lpm
 1669 06ea 602D      		mov r22, r0
 1670 06ec 3196      		adiw r30, 1
 1671 06ee C895      		lpm
 1672 06f0 702D      		mov r23, r0
 1673               		
 1674               	/* #NOAPP */
 1675               	.LBE12:
 1676 06f2 4EE7      		ldi r20,lo8(126)
 1677 06f4 50E0      		ldi r21,hi8(126)
 1678 06f6 80E0      		ldi r24,lo8(uart_message_string)
 1679 06f8 90E0      		ldi r25,hi8(uart_message_string)
 1680 06fa 0E94 0000 		call strncat_P
 1682               	.LM177:
 1683 06fe 4EE7      		ldi r20,lo8(126)
 1684 0700 50E0      		ldi r21,hi8(126)
 1685 0702 60E0      		ldi r22,lo8(__c.3738)
 1686 0704 70E0      		ldi r23,hi8(__c.3738)
 1687 0706 80E0      		ldi r24,lo8(uart_message_string)
 1688 0708 90E0      		ldi r25,hi8(uart_message_string)
 1689 070a 0E94 0000 		call strncat_P
 1690               	/* epilogue: frame size=0 */
 1691 070e DF91      		pop r29
 1692 0710 CF91      		pop r28
 1693 0712 1F91      		pop r17
 1694 0714 0F91      		pop r16
 1695 0716 FF90      		pop r15
 1696 0718 EF90      		pop r14
 1697 071a 0895      		ret
 1698               	/* epilogue end (size=7) */
 1699               	/* function createExtendedSubCommandReceiveResponseHeader size 62 (49) */
 1708               	.Lscope18:
 1711               	.global	Parse_Keyword
 1713               	Parse_Keyword:
 1715               	.LM178:
 1716               	/* prologue: frame size=0 */
 1717 071c 0F93      		push r16
 1718 071e 1F93      		push r17
 1719 0720 CF93      		push r28
 1720 0722 DF93      		push r29
 1721               	/* prologue end (size=4) */
 1722 0724 EC01      		movw r28,r24
 1724               	.LM179:
 1725 0726 892B      		or r24,r25
 1726 0728 01F4      		brne .L188
 1727               	.L165:
 1729               	.LM180:
 1730 072a 8DE9      		ldi r24,lo8(-99)
 1731 072c 9FEF      		ldi r25,hi8(-99)
 1732 072e 00C0      		rjmp .L180
 1733               	.L188:
 1735               	.LM181:
 1736 0730 8881      		ld r24,Y
 1737 0732 8823      		tst r24
 1738 0734 01F0      		breq .L165
 1740               	.LM182:
 1741 0736 0091 0000 		lds r16,debug
 1742 073a 0230      		cpi r16,lo8(2)
 1743 073c 00F0      		brlo .L168
 1744 073e 8091 0000 		lds r24,debugMask
 1745 0742 9091 0000 		lds r25,(debugMask)+1
 1746 0746 A091 0000 		lds r26,(debugMask)+2
 1747 074a B091 0000 		lds r27,(debugMask)+3
 1748 074e 87FD      		sbrc r24,7
 1749 0750 00C0      		rjmp .L189
 1750               	.L168:
 1752               	.LM183:
 1753 0752 1092 0000 		sts keywordNumber.3144,__zero_reg__
 1754 0756 E0E0      		ldi r30,lo8(0)
 1755 0758 00C0      		rjmp .L171
 1756               	.L181:
 1758               	.LM184:
 1759 075a E091 0000 		lds r30,keywordNumber.3144
 1760               	.L173:
 1762               	.LM185:
 1763 075e EF5F      		subi r30,lo8(-(1))
 1765               	.LM186:
 1766 0760 E233      		cpi r30,lo8(50)
 1767 0762 04F0      		brlt .+2
 1768 0764 00C0      		rjmp .L190
 1770               	.LM187:
 1771 0766 E930      		cpi r30,lo8(9)
 1772 0768 01F0      		breq .L173
 1773 076a E093 0000 		sts keywordNumber.3144,r30
 1774 076e 0091 0000 		lds r16,debug
 1775               	.L171:
 1776               	.LBB13:
 1778               	.LM188:
 1779 0772 FF27      		clr r31
 1780 0774 E7FD      		sbrc r30,7
 1781 0776 F095      		com r31
 1782 0778 EE0F      		lsl r30
 1783 077a FF1F      		rol r31
 1784 077c E050      		subi r30,lo8(-(commandKeywords))
 1785 077e F040      		sbci r31,hi8(-(commandKeywords))
 1786               	/* #APP */
 1787 0780 C895      		lpm
 1788 0782 602D      		mov r22, r0
 1789 0784 3196      		adiw r30, 1
 1790 0786 C895      		lpm
 1791 0788 702D      		mov r23, r0
 1792               		
 1793               	/* #NOAPP */
 1794               	.LBE13:
 1795 078a 49E1      		ldi r20,lo8(25)
 1796 078c 50E0      		ldi r21,hi8(25)
 1797 078e CE01      		movw r24,r28
 1798 0790 0E94 0000 		call strncmp_P
 1799 0794 892B      		or r24,r25
 1800 0796 01F4      		brne .+2
 1801 0798 00C0      		rjmp .L191
 1803               	.LM189:
 1804 079a 0330      		cpi r16,lo8(3)
 1805 079c 00F0      		brlo .L181
 1806 079e 8091 0000 		lds r24,debugMask
 1807 07a2 9091 0000 		lds r25,(debugMask)+1
 1808 07a6 A091 0000 		lds r26,(debugMask)+2
 1809 07aa B091 0000 		lds r27,(debugMask)+3
 1810 07ae 87FF      		sbrs r24,7
 1811 07b0 00C0      		rjmp .L181
 1813               	.LM190:
 1814 07b2 DF93      		push r29
 1815 07b4 CF93      		push r28
 1816 07b6 80E0      		ldi r24,lo8(.LC2)
 1817 07b8 90E0      		ldi r25,hi8(.LC2)
 1818 07ba 9F93      		push r25
 1819 07bc 8F93      		push r24
 1820 07be 8AE1      		ldi r24,lo8(794)
 1821 07c0 93E0      		ldi r25,hi8(794)
 1822 07c2 9F93      		push r25
 1823 07c4 8F93      		push r24
 1824 07c6 80E0      		ldi r24,lo8(__c.3156)
 1825 07c8 90E0      		ldi r25,hi8(__c.3156)
 1826 07ca 9F93      		push r25
 1827 07cc 8F93      		push r24
 1828 07ce 8EE7      		ldi r24,lo8(126)
 1829 07d0 90E0      		ldi r25,hi8(126)
 1830 07d2 9F93      		push r25
 1831 07d4 8F93      		push r24
 1832 07d6 00E0      		ldi r16,lo8(uart_message_string)
 1833 07d8 10E0      		ldi r17,hi8(uart_message_string)
 1834 07da 1F93      		push r17
 1835 07dc 0F93      		push r16
 1836 07de 0E94 0000 		call snprintf_P
 1837               	.LBB14:
 1839               	.LM191:
 1840 07e2 E091 0000 		lds r30,keywordNumber.3144
 1841 07e6 FF27      		clr r31
 1842 07e8 E7FD      		sbrc r30,7
 1843 07ea F095      		com r31
 1844 07ec EE0F      		lsl r30
 1845 07ee FF1F      		rol r31
 1846 07f0 E050      		subi r30,lo8(-(commandKeywords))
 1847 07f2 F040      		sbci r31,hi8(-(commandKeywords))
 1848               	/* #APP */
 1849 07f4 C895      		lpm
 1850 07f6 602D      		mov r22, r0
 1851 07f8 3196      		adiw r30, 1
 1852 07fa C895      		lpm
 1853 07fc 702D      		mov r23, r0
 1854               		
 1855               	/* #NOAPP */
 1856               	.LBE14:
 1857 07fe 4EE7      		ldi r20,lo8(126)
 1858 0800 50E0      		ldi r21,hi8(126)
 1859 0802 C801      		movw r24,r16
 1860 0804 0E94 0000 		call strncat_P
 1862               	.LM192:
 1863 0808 60E0      		ldi r22,lo8(0)
 1864 080a 70E0      		ldi r23,hi8(0)
 1865 080c 80E0      		ldi r24,lo8(0)
 1866 080e 90E0      		ldi r25,hi8(0)
 1867 0810 0E94 0000 		call UART0_Send_Message_String
 1868 0814 8DB7      		in r24,__SP_L__
 1869 0816 9EB7      		in r25,__SP_H__
 1870 0818 0C96      		adiw r24,12
 1871 081a 0FB6      		in __tmp_reg__,__SREG__
 1872 081c F894      		cli
 1873 081e 9EBF      		out __SP_H__,r25
 1874 0820 0FBE      		out __SREG__,__tmp_reg__
 1875 0822 8DBF      		out __SP_L__,r24
 1876 0824 00C0      		rjmp .L181
 1877               	.L190:
 1879               	.LM193:
 1880 0826 E093 0000 		sts keywordNumber.3144,r30
 1881 082a 8FEF      		ldi r24,lo8(-1)
 1882 082c 9FEF      		ldi r25,hi8(-1)
 1883 082e 00C0      		rjmp .L180
 1884               	.L191:
 1886               	.LM194:
 1887 0830 0230      		cpi r16,lo8(2)
 1888 0832 00F0      		brlo .L177
 1889 0834 8091 0000 		lds r24,debugMask
 1890 0838 9091 0000 		lds r25,(debugMask)+1
 1891 083c A091 0000 		lds r26,(debugMask)+2
 1892 0840 B091 0000 		lds r27,(debugMask)+3
 1893 0844 87FD      		sbrc r24,7
 1894 0846 00C0      		rjmp .L192
 1895               	.L177:
 1897               	.LM195:
 1898 0848 8091 0000 		lds r24,keywordNumber.3144
 1899 084c 9927      		clr r25
 1900 084e 87FD      		sbrc r24,7
 1901 0850 9095      		com r25
 1902 0852 00C0      		rjmp .L180
 1903               	.L189:
 1905               	.LM196:
 1906 0854 DF93      		push r29
 1907 0856 CF93      		push r28
 1908 0858 80E0      		ldi r24,lo8(.LC2)
 1909 085a 90E0      		ldi r25,hi8(.LC2)
 1910 085c 9F93      		push r25
 1911 085e 8F93      		push r24
 1912 0860 81E0      		ldi r24,lo8(769)
 1913 0862 93E0      		ldi r25,hi8(769)
 1914 0864 9F93      		push r25
 1915 0866 8F93      		push r24
 1916 0868 80E0      		ldi r24,lo8(__c.3145)
 1917 086a 90E0      		ldi r25,hi8(__c.3145)
 1918 086c 9F93      		push r25
 1919 086e 8F93      		push r24
 1920 0870 8EE7      		ldi r24,lo8(126)
 1921 0872 90E0      		ldi r25,hi8(126)
 1922 0874 9F93      		push r25
 1923 0876 8F93      		push r24
 1924 0878 80E0      		ldi r24,lo8(uart_message_string)
 1925 087a 90E0      		ldi r25,hi8(uart_message_string)
 1926 087c 9F93      		push r25
 1927 087e 8F93      		push r24
 1928 0880 0E94 0000 		call snprintf_P
 1930               	.LM197:
 1931 0884 60E0      		ldi r22,lo8(0)
 1932 0886 70E0      		ldi r23,hi8(0)
 1933 0888 80E0      		ldi r24,lo8(0)
 1934 088a 90E0      		ldi r25,hi8(0)
 1935 088c 0E94 0000 		call UART0_Send_Message_String
 1936 0890 8DB7      		in r24,__SP_L__
 1937 0892 9EB7      		in r25,__SP_H__
 1938 0894 0C96      		adiw r24,12
 1939 0896 0FB6      		in __tmp_reg__,__SREG__
 1940 0898 F894      		cli
 1941 089a 9EBF      		out __SP_H__,r25
 1942 089c 0FBE      		out __SREG__,__tmp_reg__
 1943 089e 8DBF      		out __SP_L__,r24
 1944 08a0 0091 0000 		lds r16,debug
 1945 08a4 00C0      		rjmp .L168
 1946               	.L192:
 1948               	.LM198:
 1949 08a6 DF93      		push r29
 1950 08a8 CF93      		push r28
 1951 08aa 80E0      		ldi r24,lo8(.LC2)
 1952 08ac 90E0      		ldi r25,hi8(.LC2)
 1953 08ae 9F93      		push r25
 1954 08b0 8F93      		push r24
 1955 08b2 8EE0      		ldi r24,lo8(782)
 1956 08b4 93E0      		ldi r25,hi8(782)
 1957 08b6 9F93      		push r25
 1958 08b8 8F93      		push r24
 1959 08ba 80E0      		ldi r24,lo8(__c.3151)
 1960 08bc 90E0      		ldi r25,hi8(__c.3151)
 1961 08be 9F93      		push r25
 1962 08c0 8F93      		push r24
 1963 08c2 8EE7      		ldi r24,lo8(126)
 1964 08c4 90E0      		ldi r25,hi8(126)
 1965 08c6 9F93      		push r25
 1966 08c8 8F93      		push r24
 1967 08ca 00E0      		ldi r16,lo8(uart_message_string)
 1968 08cc 10E0      		ldi r17,hi8(uart_message_string)
 1969 08ce 1F93      		push r17
 1970 08d0 0F93      		push r16
 1971 08d2 0E94 0000 		call snprintf_P
 1972               	.LBB15:
 1974               	.LM199:
 1975 08d6 E091 0000 		lds r30,keywordNumber.3144
 1976 08da FF27      		clr r31
 1977 08dc E7FD      		sbrc r30,7
 1978 08de F095      		com r31
 1979 08e0 EE0F      		lsl r30
 1980 08e2 FF1F      		rol r31
 1981 08e4 E050      		subi r30,lo8(-(commandKeywords))
 1982 08e6 F040      		sbci r31,hi8(-(commandKeywords))
 1983               	/* #APP */
 1984 08e8 C895      		lpm
 1985 08ea 602D      		mov r22, r0
 1986 08ec 3196      		adiw r30, 1
 1987 08ee C895      		lpm
 1988 08f0 702D      		mov r23, r0
 1989               		
 1990               	/* #NOAPP */
 1991               	.LBE15:
 1992 08f2 4EE7      		ldi r20,lo8(126)
 1993 08f4 50E0      		ldi r21,hi8(126)
 1994 08f6 C801      		movw r24,r16
 1995 08f8 0E94 0000 		call strncat_P
 1997               	.LM200:
 1998 08fc 60E0      		ldi r22,lo8(0)
 1999 08fe 70E0      		ldi r23,hi8(0)
 2000 0900 80E0      		ldi r24,lo8(0)
 2001 0902 90E0      		ldi r25,hi8(0)
 2002 0904 0E94 0000 		call UART0_Send_Message_String
 2003 0908 8DB7      		in r24,__SP_L__
 2004 090a 9EB7      		in r25,__SP_H__
 2005 090c 0C96      		adiw r24,12
 2006 090e 0FB6      		in __tmp_reg__,__SREG__
 2007 0910 F894      		cli
 2008 0912 9EBF      		out __SP_H__,r25
 2009 0914 0FBE      		out __SREG__,__tmp_reg__
 2010 0916 8DBF      		out __SP_L__,r24
 2011 0918 00C0      		rjmp .L177
 2012               	.L180:
 2013               	/* epilogue: frame size=0 */
 2014 091a DF91      		pop r29
 2015 091c CF91      		pop r28
 2016 091e 1F91      		pop r17
 2017 0920 0F91      		pop r16
 2018 0922 0895      		ret
 2019               	/* epilogue end (size=5) */
 2020               	/* function Parse_Keyword size 281 (272) */
 2037               	.Lscope19:
 2038               		.data
 2039               	.LC3:
 2040 0017 2000      		.string	" "
 2041               	.LC4:
 2042 0019 00        		.string	""
 2043               		.text
 2050               	.global	CommunicationError
 2052               	CommunicationError:
 2054               	.LM201:
 2055               	/* prologue: frame size=4 */
 2056 0924 3F92      		push r3
 2057 0926 4F92      		push r4
 2058 0928 5F92      		push r5
 2059 092a 6F92      		push r6
 2060 092c 7F92      		push r7
 2061 092e 8F92      		push r8
 2062 0930 9F92      		push r9
 2063 0932 AF92      		push r10
 2064 0934 BF92      		push r11
 2065 0936 CF92      		push r12
 2066 0938 DF92      		push r13
 2067 093a EF92      		push r14
 2068 093c FF92      		push r15
 2069 093e 0F93      		push r16
 2070 0940 1F93      		push r17
 2071 0942 CF93      		push r28
 2072 0944 DF93      		push r29
 2073 0946 CDB7      		in r28,__SP_L__
 2074 0948 DEB7      		in r29,__SP_H__
 2075 094a 2497      		sbiw r28,4
 2076 094c 0FB6      		in __tmp_reg__,__SREG__
 2077 094e F894      		cli
 2078 0950 DEBF      		out __SP_H__,r29
 2079 0952 0FBE      		out __SREG__,__tmp_reg__
 2080 0954 CDBF      		out __SP_L__,r28
 2081               	/* prologue end (size=25) */
 2082 0956 F82E      		mov r15,r24
 2083 0958 5B01      		movw r10,r22
 2084 095a E42E      		mov r14,r20
 2085 095c 3901      		movw r6,r18
 2086 095e 2801      		movw r4,r16
 2088               	.LM202:
 2089 0960 24E0      		ldi r18,lo8(4)
 2090 0962 2817      		cp r18,r24
 2091 0964 00F0      		brlo .L194
 2093               	.LM203:
 2094 0966 882E      		mov r8,r24
 2095 0968 9924      		clr r9
 2096 096a 8401      		movw r16,r8
 2097 096c 33E0      		ldi r19,lo8(3)
 2098 096e 3817      		cp r19,r24
 2099 0970 00F4      		brsh .+2
 2100 0972 00C0      		rjmp .L255
 2102               	.LM204:
 2103 0974 77FD      		sbrc r23,7
 2104 0976 00C0      		rjmp .L198
 2106               	.LM205:
 2107 0978 81E2      		ldi r24,lo8(33)
 2108 097a 8A83      		std Y+2,r24
 2110               	.LM206:
 2111 097c 8AE0      		ldi r24,lo8(10)
 2112 097e 8B83      		std Y+3,r24
 2114               	.LM207:
 2115 0980 8BE0      		ldi r24,lo8(11)
 2116 0982 8983      		std Y+1,r24
 2118               	.LM208:
 2119 0984 83E0      		ldi r24,lo8(3)
 2120 0986 8C83      		std Y+4,r24
 2122               	.LM209:
 2123 0988 FE01      		movw r30,r28
 2124 098a E80D      		add r30,r8
 2125 098c F91D      		adc r31,r9
 2126 098e 8181      		ldd r24,Z+1
 2127 0990 9927      		clr r25
 2128 0992 6817      		cp r22,r24
 2129 0994 7907      		cpc r23,r25
 2130 0996 04F4      		brge .L198
 2132               	.LM210:
 2133 0998 3324      		clr r3
 2134 099a 00C0      		rjmp .L212
 2135               	.L194:
 2137               	.LM211:
 2138 099c 74E0      		ldi r23,lo8(4)
 2139 099e F72E      		mov r15,r23
 2140 09a0 64E0      		ldi r22,lo8(4)
 2141 09a2 862E      		mov r8,r22
 2142 09a4 912C      		mov r9,__zero_reg__
 2143               	.L198:
 2145               	.LM212:
 2146 09a6 6114      		cp r6,__zero_reg__
 2147 09a8 7104      		cpc r7,__zero_reg__
 2148 09aa 01F4      		brne .+2
 2149 09ac 00C0      		rjmp .L256
 2150               	.L206:
 2152               	.LM213:
 2153 09ae 51E0      		ldi r21,lo8(1)
 2154 09b0 352E      		mov r3,r21
 2155 09b2 0F2D      		mov r16,r15
 2156 09b4 1127      		clr r17
 2157               	.L212:
 2159               	.LM214:
 2160 09b6 40E0      		ldi r20,lo8(uart_message_string)
 2161 09b8 C42E      		mov r12,r20
 2162 09ba 40E0      		ldi r20,hi8(uart_message_string)
 2163 09bc D42E      		mov r13,r20
 2164 09be 6FE7      		ldi r22,lo8(127)
 2165 09c0 70E0      		ldi r23,hi8(127)
 2166 09c2 C601      		movw r24,r12
 2167 09c4 0E94 0000 		call clearString
 2168               	.LBB16:
 2170               	.LM215:
 2171 09c8 F801      		movw r30,r16
 2172 09ca EE0F      		lsl r30
 2173 09cc FF1F      		rol r31
 2174 09ce E050      		subi r30,lo8(-(errorTypes))
 2175 09d0 F040      		sbci r31,hi8(-(errorTypes))
 2176               	/* #APP */
 2177 09d2 C895      		lpm
 2178 09d4 602D      		mov r22, r0
 2179 09d6 3196      		adiw r30, 1
 2180 09d8 C895      		lpm
 2181 09da 702D      		mov r23, r0
 2182               		
 2183               	/* #NOAPP */
 2184               	.LBE16:
 2185 09dc 4EE7      		ldi r20,lo8(126)
 2186 09de 50E0      		ldi r21,hi8(126)
 2187 09e0 C601      		movw r24,r12
 2188 09e2 0E94 0000 		call strncat_P
 2190               	.LM216:
 2191 09e6 F1E0      		ldi r31,lo8(1)
 2192 09e8 EF16      		cp r14,r31
 2193 09ea 01F4      		brne .+2
 2194 09ec 00C0      		rjmp .L257
 2195               	.L213:
 2197               	.LM217:
 2198 09ee 3320      		tst r3
 2199 09f0 01F0      		breq .L258
 2200               	.L225:
 2202               	.LM218:
 2203 09f2 6114      		cp r6,__zero_reg__
 2204 09f4 7104      		cpc r7,__zero_reg__
 2205 09f6 01F4      		brne .+2
 2206 09f8 00C0      		rjmp .L259
 2207               	.L235:
 2209               	.LM219:
 2210 09fa 21E0      		ldi r18,lo8(1)
 2211 09fc 3216      		cp r3,r18
 2212 09fe 01F4      		brne .+2
 2213 0a00 00C0      		rjmp .L260
 2215               	.LM220:
 2216 0a02 4EE7      		ldi r20,lo8(126)
 2217 0a04 50E0      		ldi r21,hi8(126)
 2218 0a06 60E0      		ldi r22,lo8(__c.3565)
 2219 0a08 70E0      		ldi r23,hi8(__c.3565)
 2220 0a0a 80E0      		ldi r24,lo8(uart_message_string)
 2221 0a0c 90E0      		ldi r25,hi8(uart_message_string)
 2222 0a0e 0E94 0000 		call strncat_P
 2223               	.L240:
 2225               	.LM221:
 2226 0a12 98E1      		ldi r25,lo8(-1000)
 2227 0a14 4916      		cp r4,r25
 2228 0a16 9CEF      		ldi r25,hi8(-1000)
 2229 0a18 5906      		cpc r5,r25
 2230 0a1a 04F0      		brlt .+2
 2231 0a1c 00C0      		rjmp .L241
 2233               	.LM222:
 2234 0a1e 4EE7      		ldi r20,lo8(126)
 2235 0a20 50E0      		ldi r21,hi8(126)
 2236 0a22 60E0      		ldi r22,lo8(message)
 2237 0a24 70E0      		ldi r23,hi8(message)
 2238 0a26 80E0      		ldi r24,lo8(uart_message_string)
 2239 0a28 90E0      		ldi r25,hi8(uart_message_string)
 2240 0a2a 0E94 0000 		call strncat
 2241               	.L237:
 2243               	.LM223:
 2244 0a2e 60E0      		ldi r22,lo8(0)
 2245 0a30 70E0      		ldi r23,hi8(0)
 2246 0a32 80E0      		ldi r24,lo8(0)
 2247 0a34 90E0      		ldi r25,hi8(0)
 2248 0a36 0E94 0000 		call UART0_Send_Message_String
 2249 0a3a 80E0      		ldi r24,lo8(0)
 2250 0a3c 90E0      		ldi r25,hi8(0)
 2251 0a3e 00C0      		rjmp .L205
 2252               	.L258:
 2254               	.LM224:
 2255 0a40 91E0      		ldi r25,lo8(1)
 2256 0a42 F916      		cp r15,r25
 2257 0a44 01F4      		brne .+2
 2258 0a46 00C0      		rjmp .L229
 2259 0a48 F916      		cp r15,r25
 2260 0a4a 00F4      		brsh .+2
 2261 0a4c 00C0      		rjmp .L228
 2262 0a4e E2E0      		ldi r30,lo8(2)
 2263 0a50 FE16      		cp r15,r30
 2264 0a52 01F4      		brne .+2
 2265 0a54 00C0      		rjmp .L230
 2266 0a56 F3E0      		ldi r31,lo8(3)
 2267 0a58 FF16      		cp r15,r31
 2268 0a5a 01F4      		brne .+2
 2269 0a5c 00C0      		rjmp .L261
 2271               	.LM225:
 2272 0a5e 8091 0000 		lds r24,debug
 2273 0a62 8230      		cpi r24,lo8(2)
 2274 0a64 00F4      		brsh .+2
 2275 0a66 00C0      		rjmp .L201
 2276 0a68 20E0      		ldi r18,lo8(message)
 2277 0a6a 30E0      		ldi r19,hi8(message)
 2278 0a6c F901      		movw r30,r18
 2279               	.L233:
 2280               	.LBB17:
 2282               	.LM226:
 2283 0a6e 1192      		st Z+,__zero_reg__
 2285               	.LM227:
 2286 0a70 80E0      		ldi r24,hi8(message+127)
 2287 0a72 E030      		cpi r30,lo8(message+127)
 2288 0a74 F807      		cpc r31,r24
 2289 0a76 01F4      		brne .L233
 2290               	.LBE17:
 2292               	.LM228:
 2293 0a78 9F92      		push r9
 2294 0a7a 8F92      		push r8
 2295 0a7c 80E0      		ldi r24,lo8(.LC2)
 2296 0a7e 90E0      		ldi r25,hi8(.LC2)
 2297 0a80 9F93      		push r25
 2298 0a82 8F93      		push r24
 2299 0a84 86E3      		ldi r24,lo8(1590)
 2300 0a86 96E0      		ldi r25,hi8(1590)
 2301 0a88 9F93      		push r25
 2302 0a8a 8F93      		push r24
 2303 0a8c 80E0      		ldi r24,lo8(__c.3561)
 2304 0a8e 90E0      		ldi r25,hi8(__c.3561)
 2305 0a90 9F93      		push r25
 2306 0a92 8F93      		push r24
 2307 0a94 8EE7      		ldi r24,lo8(126)
 2308 0a96 90E0      		ldi r25,hi8(126)
 2309 0a98 9F93      		push r25
 2310 0a9a 8F93      		push r24
 2311 0a9c 3F93      		push r19
 2312 0a9e 2F93      		push r18
 2313 0aa0 0E94 0000 		call snprintf_P
 2315               	.LM229:
 2316 0aa4 6FE7      		ldi r22,lo8(127)
 2317 0aa6 70E0      		ldi r23,hi8(127)
 2318 0aa8 80E0      		ldi r24,lo8(message)
 2319 0aaa 90E0      		ldi r25,hi8(message)
 2320 0aac 0E94 0000 		call UART0_Send_Message_String
 2321 0ab0 81E0      		ldi r24,lo8(1)
 2322 0ab2 90E0      		ldi r25,hi8(1)
 2323 0ab4 EDB7      		in r30,__SP_L__
 2324 0ab6 FEB7      		in r31,__SP_H__
 2325 0ab8 3C96      		adiw r30,12
 2326 0aba 0FB6      		in __tmp_reg__,__SREG__
 2327 0abc F894      		cli
 2328 0abe FEBF      		out __SP_H__,r31
 2329 0ac0 0FBE      		out __SREG__,__tmp_reg__
 2330 0ac2 EDBF      		out __SP_L__,r30
 2331 0ac4 00C0      		rjmp .L205
 2332               	.L255:
 2334               	.LM230:
 2335 0ac6 8217      		cp r24,r18
 2336 0ac8 01F4      		brne .+2
 2337 0aca 00C0      		rjmp .L198
 2339               	.LM231:
 2340 0acc 8091 0000 		lds r24,debug
 2341 0ad0 8230      		cpi r24,lo8(2)
 2342 0ad2 00F4      		brsh .+2
 2343 0ad4 00C0      		rjmp .L201
 2344 0ad6 20E0      		ldi r18,lo8(message)
 2345 0ad8 30E0      		ldi r19,hi8(message)
 2346 0ada F901      		movw r30,r18
 2347               	.L203:
 2348               	.LBB18:
 2350               	.LM232:
 2351 0adc 1192      		st Z+,__zero_reg__
 2353               	.LM233:
 2354 0ade 80E0      		ldi r24,hi8(message+127)
 2355 0ae0 E030      		cpi r30,lo8(message+127)
 2356 0ae2 F807      		cpc r31,r24
 2357 0ae4 01F4      		brne .L203
 2358               	.LBE18:
 2360               	.LM234:
 2361 0ae6 80E0      		ldi r24,lo8(.LC2)
 2362 0ae8 90E0      		ldi r25,hi8(.LC2)
 2363 0aea 9F93      		push r25
 2364 0aec 8F93      		push r24
 2365 0aee 83EE      		ldi r24,lo8(1507)
 2366 0af0 95E0      		ldi r25,hi8(1507)
 2367 0af2 9F93      		push r25
 2368 0af4 8F93      		push r24
 2369 0af6 80E0      		ldi r24,lo8(__c.3506)
 2370 0af8 90E0      		ldi r25,hi8(__c.3506)
 2371               	.L254:
 2373               	.LM235:
 2374 0afa 9F93      		push r25
 2375 0afc 8F93      		push r24
 2376 0afe 8EE7      		ldi r24,lo8(126)
 2377 0b00 90E0      		ldi r25,hi8(126)
 2378 0b02 9F93      		push r25
 2379 0b04 8F93      		push r24
 2380 0b06 3F93      		push r19
 2381 0b08 2F93      		push r18
 2382 0b0a 0E94 0000 		call snprintf_P
 2384               	.LM236:
 2385 0b0e 6FE7      		ldi r22,lo8(127)
 2386 0b10 70E0      		ldi r23,hi8(127)
 2387 0b12 80E0      		ldi r24,lo8(message)
 2388 0b14 90E0      		ldi r25,hi8(message)
 2389 0b16 0E94 0000 		call UART0_Send_Message_String
 2390 0b1a 81E0      		ldi r24,lo8(1)
 2391 0b1c 90E0      		ldi r25,hi8(1)
 2392 0b1e EDB7      		in r30,__SP_L__
 2393 0b20 FEB7      		in r31,__SP_H__
 2394 0b22 3A96      		adiw r30,10
 2395 0b24 0FB6      		in __tmp_reg__,__SREG__
 2396 0b26 F894      		cli
 2397 0b28 FEBF      		out __SP_H__,r31
 2398 0b2a 0FBE      		out __SREG__,__tmp_reg__
 2399 0b2c EDBF      		out __SP_L__,r30
 2400 0b2e 00C0      		rjmp .L205
 2401               	.L241:
 2403               	.LM237:
 2404 0b30 4EE7      		ldi r20,lo8(126)
 2405 0b32 50E0      		ldi r21,hi8(126)
 2406 0b34 B301      		movw r22,r6
 2407 0b36 80E0      		ldi r24,lo8(uart_message_string)
 2408 0b38 90E0      		ldi r25,hi8(uart_message_string)
 2409 0b3a 0E94 0000 		call strncat_P
 2410 0b3e 00C0      		rjmp .L237
 2411               	.L257:
 2413               	.LM238:
 2414 0b40 8091 0000 		lds r24,decrypt_uartString
 2415 0b44 8823      		tst r24
 2416 0b46 01F0      		breq .+2
 2417 0b48 00C0      		rjmp .L262
 2418               	.LBB19:
 2420               	.LM239:
 2421 0b4a 4EE7      		ldi r20,lo8(126)
 2422 0b4c 50E0      		ldi r21,hi8(126)
 2423 0b4e 60E0      		ldi r22,lo8(__c.3522)
 2424 0b50 70E0      		ldi r23,hi8(__c.3522)
 2425 0b52 C601      		movw r24,r12
 2426 0b54 0E94 0000 		call strncat_P
 2428               	.LM240:
 2429 0b58 40E0      		ldi r20,lo8(setParameter)
 2430 0b5a 50E0      		ldi r21,hi8(setParameter)
 2431 0b5c 10E0      		ldi r17,lo8(0)
 2432               	.L217:
 2433 0b5e 212F      		mov r18,r17
 2434 0b60 3327      		clr r19
 2435 0b62 89E1      		ldi r24,lo8(25)
 2436 0b64 90E0      		ldi r25,hi8(25)
 2437 0b66 289F      		mul r18,r24
 2438 0b68 F001      		movw r30,r0
 2439 0b6a 299F      		mul r18,r25
 2440 0b6c F00D      		add r31,r0
 2441 0b6e 389F      		mul r19,r24
 2442 0b70 F00D      		add r31,r0
 2443 0b72 1124      		clr r1
 2444 0b74 E050      		subi r30,lo8(-(setParameter))
 2445 0b76 F040      		sbci r31,hi8(-(setParameter))
 2446 0b78 8081      		ld r24,Z
 2447 0b7a 8823      		tst r24
 2448 0b7c 01F4      		brne .+2
 2449 0b7e 00C0      		rjmp .L221
 2451               	.LM241:
 2452 0b80 1123      		tst r17
 2453 0b82 01F4      		brne .+2
 2454 0b84 00C0      		rjmp .L219
 2455 0b86 5F93      		push r21
 2456 0b88 4F93      		push r20
 2457 0b8a 80E0      		ldi r24,lo8(.LC3)
 2458 0b8c 90E0      		ldi r25,hi8(.LC3)
 2459 0b8e 9F93      		push r25
 2460 0b90 8F93      		push r24
 2461 0b92 DF92      		push r13
 2462 0b94 CF92      		push r12
 2463 0b96 80E0      		ldi r24,lo8(__c.3524)
 2464 0b98 90E0      		ldi r25,hi8(__c.3524)
 2465 0b9a 9F93      		push r25
 2466 0b9c 8F93      		push r24
 2467 0b9e 8EE7      		ldi r24,lo8(126)
 2468 0ba0 90E0      		ldi r25,hi8(126)
 2469 0ba2 9F93      		push r25
 2470 0ba4 8F93      		push r24
 2471 0ba6 DF92      		push r13
 2472 0ba8 CF92      		push r12
 2473 0baa 0E94 0000 		call snprintf_P
 2475               	.LM242:
 2476 0bae 1F5F      		subi r17,lo8(-(1))
 2478               	.LM243:
 2479 0bb0 2DB7      		in r18,__SP_L__
 2480 0bb2 3EB7      		in r19,__SP_H__
 2481 0bb4 245F      		subi r18,lo8(-(12))
 2482 0bb6 3F4F      		sbci r19,hi8(-(12))
 2483 0bb8 0FB6      		in __tmp_reg__,__SREG__
 2484 0bba F894      		cli
 2485 0bbc 3EBF      		out __SP_H__,r19
 2486 0bbe 0FBE      		out __SREG__,__tmp_reg__
 2487 0bc0 2DBF      		out __SP_L__,r18
 2488 0bc2 1D30      		cpi r17,lo8(13)
 2489 0bc4 00F0      		brlo .+2
 2490 0bc6 00C0      		rjmp .L221
 2491 0bc8 89E1      		ldi r24,lo8(25)
 2492 0bca 189F      		mul r17,r24
 2493 0bcc C001      		movw r24,r0
 2494 0bce 1124      		clr r1
 2495               	.L223:
 2496 0bd0 8050      		subi r24,lo8(-(setParameter))
 2497 0bd2 9040      		sbci r25,hi8(-(setParameter))
 2498 0bd4 01F4      		brne .+2
 2499 0bd6 00C0      		rjmp .L221
 2500 0bd8 AC01      		movw r20,r24
 2501 0bda 00C0      		rjmp .L217
 2502               	.L260:
 2503               	.LBE19:
 2505               	.LM244:
 2506 0bdc 5F92      		push r5
 2507 0bde 4F92      		push r4
 2508 0be0 DF92      		push r13
 2509 0be2 CF92      		push r12
 2510 0be4 80E0      		ldi r24,lo8(__c.3563)
 2511 0be6 90E0      		ldi r25,hi8(__c.3563)
 2512 0be8 9F93      		push r25
 2513 0bea 8F93      		push r24
 2514 0bec 8EE7      		ldi r24,lo8(126)
 2515 0bee 90E0      		ldi r25,hi8(126)
 2516 0bf0 9F93      		push r25
 2517 0bf2 8F93      		push r24
 2518 0bf4 DF92      		push r13
 2519 0bf6 CF92      		push r12
 2520 0bf8 0E94 0000 		call snprintf_P
 2521 0bfc 8DB7      		in r24,__SP_L__
 2522 0bfe 9EB7      		in r25,__SP_H__
 2523 0c00 0A96      		adiw r24,10
 2524 0c02 0FB6      		in __tmp_reg__,__SREG__
 2525 0c04 F894      		cli
 2526 0c06 9EBF      		out __SP_H__,r25
 2527 0c08 0FBE      		out __SREG__,__tmp_reg__
 2528 0c0a 8DBF      		out __SP_L__,r24
 2529 0c0c 00C0      		rjmp .L240
 2530               	.L228:
 2532               	.LM245:
 2533 0c0e 8501      		movw r16,r10
 2534 0c10 000F      		lsl r16
 2535 0c12 111F      		rol r17
 2536 0c14 F801      		movw r30,r16
 2537 0c16 E050      		subi r30,lo8(-(general_error_number))
 2538 0c18 F040      		sbci r31,hi8(-(general_error_number))
 2539 0c1a 8081      		ld r24,Z
 2540 0c1c 9181      		ldd r25,Z+1
 2541 0c1e 9F93      		push r25
 2542 0c20 8F93      		push r24
 2543 0c22 DF92      		push r13
 2544 0c24 CF92      		push r12
 2545 0c26 80E0      		ldi r24,lo8(__c.3532)
 2546 0c28 90E0      		ldi r25,hi8(__c.3532)
 2547 0c2a 9F93      		push r25
 2548 0c2c 8F93      		push r24
 2549 0c2e 8EE7      		ldi r24,lo8(126)
 2550 0c30 90E0      		ldi r25,hi8(126)
 2551 0c32 9F93      		push r25
 2552 0c34 8F93      		push r24
 2553 0c36 DF92      		push r13
 2554 0c38 CF92      		push r12
 2555 0c3a 0E94 0000 		call snprintf_P
 2556               	.LBB20:
 2558               	.LM246:
 2559 0c3e 0050      		subi r16,lo8(-(general_error))
 2560 0c40 1040      		sbci r17,hi8(-(general_error))
 2561 0c42 F801      		movw r30,r16
 2562               	/* #APP */
 2563 0c44 C895      		lpm
 2564 0c46 602D      		mov r22, r0
 2565 0c48 3196      		adiw r30, 1
 2566 0c4a C895      		lpm
 2567 0c4c 702D      		mov r23, r0
 2568               		
 2569               	/* #NOAPP */
 2570               	.L253:
 2571               	.LBE20:
 2573               	.LM247:
 2574 0c4e 4EE7      		ldi r20,lo8(126)
 2575 0c50 50E0      		ldi r21,hi8(126)
 2576 0c52 80E0      		ldi r24,lo8(uart_message_string)
 2577 0c54 90E0      		ldi r25,hi8(uart_message_string)
 2578 0c56 0E94 0000 		call strncat_P
 2580               	.LM248:
 2581 0c5a 2DB7      		in r18,__SP_L__
 2582 0c5c 3EB7      		in r19,__SP_H__
 2583 0c5e 265F      		subi r18,lo8(-(10))
 2584 0c60 3F4F      		sbci r19,hi8(-(10))
 2585 0c62 0FB6      		in __tmp_reg__,__SREG__
 2586 0c64 F894      		cli
 2587 0c66 3EBF      		out __SP_H__,r19
 2588 0c68 0FBE      		out __SREG__,__tmp_reg__
 2589 0c6a 2DBF      		out __SP_L__,r18
 2591               	.LM249:
 2592 0c6c 6114      		cp r6,__zero_reg__
 2593 0c6e 7104      		cpc r7,__zero_reg__
 2594 0c70 01F0      		breq .+2
 2595 0c72 00C0      		rjmp .L235
 2596               	.L259:
 2597 0c74 F8E1      		ldi r31,lo8(-1000)
 2598 0c76 4F16      		cp r4,r31
 2599 0c78 FCEF      		ldi r31,hi8(-1000)
 2600 0c7a 5F06      		cpc r5,r31
 2601 0c7c 04F0      		brlt .+2
 2602 0c7e 00C0      		rjmp .L237
 2603 0c80 00C0      		rjmp .L235
 2604               	.L262:
 2606               	.LM250:
 2607 0c82 4EE7      		ldi r20,lo8(126)
 2608 0c84 50E0      		ldi r21,hi8(126)
 2609 0c86 60E0      		ldi r22,lo8(__c.3517)
 2610 0c88 70E0      		ldi r23,hi8(__c.3517)
 2611 0c8a C601      		movw r24,r12
 2612 0c8c 0E94 0000 		call strncat_P
 2614               	.LM251:
 2615 0c90 4EE7      		ldi r20,lo8(126)
 2616 0c92 50E0      		ldi r21,hi8(126)
 2617 0c94 60E0      		ldi r22,lo8(decrypt_uartString)
 2618 0c96 70E0      		ldi r23,hi8(decrypt_uartString)
 2619 0c98 C601      		movw r24,r12
 2620 0c9a 0E94 0000 		call strncat
 2622               	.LM252:
 2623 0c9e 4EE7      		ldi r20,lo8(126)
 2624 0ca0 50E0      		ldi r21,hi8(126)
 2625 0ca2 60E0      		ldi r22,lo8(__c.3519)
 2626 0ca4 70E0      		ldi r23,hi8(__c.3519)
 2627 0ca6 C601      		movw r24,r12
 2628 0ca8 0E94 0000 		call strncat_P
 2629 0cac 00C0      		rjmp .L213
 2630               	.L219:
 2631               	.LBB21:
 2633               	.LM253:
 2634 0cae 5F93      		push r21
 2635 0cb0 4F93      		push r20
 2636 0cb2 80E0      		ldi r24,lo8(.LC4)
 2637 0cb4 90E0      		ldi r25,hi8(.LC4)
 2638 0cb6 9F93      		push r25
 2639 0cb8 8F93      		push r24
 2640 0cba DF92      		push r13
 2641 0cbc CF92      		push r12
 2642 0cbe 80E0      		ldi r24,lo8(__c.3524)
 2643 0cc0 90E0      		ldi r25,hi8(__c.3524)
 2644 0cc2 9F93      		push r25
 2645 0cc4 8F93      		push r24
 2646 0cc6 8EE7      		ldi r24,lo8(126)
 2647 0cc8 90E0      		ldi r25,hi8(126)
 2648 0cca 9F93      		push r25
 2649 0ccc 8F93      		push r24
 2650 0cce DF92      		push r13
 2651 0cd0 CF92      		push r12
 2652 0cd2 0E94 0000 		call snprintf_P
 2653 0cd6 11E0      		ldi r17,lo8(1)
 2654 0cd8 89E1      		ldi r24,lo8(25)
 2655 0cda 90E0      		ldi r25,hi8(25)
 2656 0cdc EDB7      		in r30,__SP_L__
 2657 0cde FEB7      		in r31,__SP_H__
 2658 0ce0 3C96      		adiw r30,12
 2659 0ce2 0FB6      		in __tmp_reg__,__SREG__
 2660 0ce4 F894      		cli
 2661 0ce6 FEBF      		out __SP_H__,r31
 2662 0ce8 0FBE      		out __SREG__,__tmp_reg__
 2663 0cea EDBF      		out __SP_L__,r30
 2664 0cec 00C0      		rjmp .L223
 2665               	.L256:
 2666               	.LBE21:
 2668               	.LM254:
 2669 0cee F8E1      		ldi r31,lo8(-1000)
 2670 0cf0 4F16      		cp r4,r31
 2671 0cf2 FCEF      		ldi r31,hi8(-1000)
 2672 0cf4 5F06      		cpc r5,r31
 2673 0cf6 04F4      		brge .+2
 2674 0cf8 00C0      		rjmp .L206
 2676               	.LM255:
 2677 0cfa 8091 0000 		lds r24,debug
 2678 0cfe 8230      		cpi r24,lo8(2)
 2679 0d00 00F4      		brsh .+2
 2680 0d02 00C0      		rjmp .L201
 2681 0d04 20E0      		ldi r18,lo8(message)
 2682 0d06 30E0      		ldi r19,hi8(message)
 2683 0d08 F901      		movw r30,r18
 2684               	.L210:
 2685               	.LBB22:
 2687               	.LM256:
 2688 0d0a 1192      		st Z+,__zero_reg__
 2690               	.LM257:
 2691 0d0c 80E0      		ldi r24,hi8(message+127)
 2692 0d0e E030      		cpi r30,lo8(message+127)
 2693 0d10 F807      		cpc r31,r24
 2694 0d12 01F4      		brne .L210
 2695               	.LBE22:
 2697               	.LM258:
 2698 0d14 80E0      		ldi r24,lo8(.LC2)
 2699 0d16 90E0      		ldi r25,hi8(.LC2)
 2700 0d18 9F93      		push r25
 2701 0d1a 8F93      		push r24
 2702 0d1c 83EF      		ldi r24,lo8(1523)
 2703 0d1e 95E0      		ldi r25,hi8(1523)
 2704 0d20 9F93      		push r25
 2705 0d22 8F93      		push r24
 2706 0d24 80E0      		ldi r24,lo8(__c.3512)
 2707 0d26 90E0      		ldi r25,hi8(__c.3512)
 2708 0d28 00C0      		rjmp .L254
 2709               	.L221:
 2710               	.LBB23:
 2712               	.LM259:
 2713 0d2a DF92      		push r13
 2714 0d2c CF92      		push r12
 2715 0d2e 80E0      		ldi r24,lo8(__c.3529)
 2716 0d30 90E0      		ldi r25,hi8(__c.3529)
 2717 0d32 9F93      		push r25
 2718 0d34 8F93      		push r24
 2719 0d36 8EE7      		ldi r24,lo8(126)
 2720 0d38 90E0      		ldi r25,hi8(126)
 2721 0d3a 9F93      		push r25
 2722 0d3c 8F93      		push r24
 2723 0d3e DF92      		push r13
 2724 0d40 CF92      		push r12
 2725 0d42 0E94 0000 		call snprintf_P
 2726 0d46 8DB7      		in r24,__SP_L__
 2727 0d48 9EB7      		in r25,__SP_H__
 2728 0d4a 0896      		adiw r24,8
 2729 0d4c 0FB6      		in __tmp_reg__,__SREG__
 2730 0d4e F894      		cli
 2731 0d50 9EBF      		out __SP_H__,r25
 2732 0d52 0FBE      		out __SREG__,__tmp_reg__
 2733 0d54 8DBF      		out __SP_L__,r24
 2734 0d56 00C0      		rjmp .L213
 2735               	.L229:
 2736               	.LBE23:
 2738               	.LM260:
 2739 0d58 F501      		movw r30,r10
 2740 0d5a E050      		subi r30,lo8(-(serial_error_number))
 2741 0d5c F040      		sbci r31,hi8(-(serial_error_number))
 2742 0d5e 8081      		ld r24,Z
 2743 0d60 9927      		clr r25
 2744 0d62 9F93      		push r25
 2745 0d64 8F93      		push r24
 2746 0d66 DF92      		push r13
 2747 0d68 CF92      		push r12
 2748 0d6a 80E0      		ldi r24,lo8(__c.3539)
 2749 0d6c 90E0      		ldi r25,hi8(__c.3539)
 2750 0d6e 9F93      		push r25
 2751 0d70 8F93      		push r24
 2752 0d72 8EE7      		ldi r24,lo8(126)
 2753 0d74 90E0      		ldi r25,hi8(126)
 2754 0d76 9F93      		push r25
 2755 0d78 8F93      		push r24
 2756 0d7a DF92      		push r13
 2757 0d7c CF92      		push r12
 2758 0d7e 0E94 0000 		call snprintf_P
 2759               	.LBB24:
 2761               	.LM261:
 2762 0d82 F501      		movw r30,r10
 2763 0d84 EE0F      		lsl r30
 2764 0d86 FF1F      		rol r31
 2765 0d88 E050      		subi r30,lo8(-(serial_error))
 2766 0d8a F040      		sbci r31,hi8(-(serial_error))
 2767               	/* #APP */
 2768 0d8c C895      		lpm
 2769 0d8e 602D      		mov r22, r0
 2770 0d90 3196      		adiw r30, 1
 2771 0d92 C895      		lpm
 2772 0d94 702D      		mov r23, r0
 2773               		
 2774               	/* #NOAPP */
 2775               	.LBE24:
 2776 0d96 4EE7      		ldi r20,lo8(126)
 2777 0d98 50E0      		ldi r21,hi8(126)
 2778 0d9a 80E0      		ldi r24,lo8(uart_message_string)
 2779 0d9c 90E0      		ldi r25,hi8(uart_message_string)
 2780 0d9e 0E94 0000 		call strncat_P
 2782               	.LM262:
 2783 0da2 8DB7      		in r24,__SP_L__
 2784 0da4 9EB7      		in r25,__SP_H__
 2785 0da6 0A96      		adiw r24,10
 2786 0da8 0FB6      		in __tmp_reg__,__SREG__
 2787 0daa F894      		cli
 2788 0dac 9EBF      		out __SP_H__,r25
 2789 0dae 0FBE      		out __SREG__,__tmp_reg__
 2790 0db0 8DBF      		out __SP_L__,r24
 2791 0db2 00C0      		rjmp .L225
 2792               	.L230:
 2794               	.LM263:
 2795 0db4 F501      		movw r30,r10
 2796 0db6 E050      		subi r30,lo8(-(can_error_number))
 2797 0db8 F040      		sbci r31,hi8(-(can_error_number))
 2798 0dba 8081      		ld r24,Z
 2799 0dbc 9927      		clr r25
 2800 0dbe 9F93      		push r25
 2801 0dc0 8F93      		push r24
 2802 0dc2 DF92      		push r13
 2803 0dc4 CF92      		push r12
 2804 0dc6 80E0      		ldi r24,lo8(__c.3551)
 2805 0dc8 90E0      		ldi r25,hi8(__c.3551)
 2806 0dca 9F93      		push r25
 2807 0dcc 8F93      		push r24
 2808 0dce 8EE7      		ldi r24,lo8(126)
 2809 0dd0 90E0      		ldi r25,hi8(126)
 2810 0dd2 9F93      		push r25
 2811 0dd4 8F93      		push r24
 2812 0dd6 DF92      		push r13
 2813 0dd8 CF92      		push r12
 2814 0dda 0E94 0000 		call snprintf_P
 2815               	.LBB25:
 2817               	.LM264:
 2818 0dde F501      		movw r30,r10
 2819 0de0 EE0F      		lsl r30
 2820 0de2 FF1F      		rol r31
 2821 0de4 E050      		subi r30,lo8(-(can_error))
 2822 0de6 F040      		sbci r31,hi8(-(can_error))
 2823               	/* #APP */
 2824 0de8 C895      		lpm
 2825 0dea 602D      		mov r22, r0
 2826 0dec 3196      		adiw r30, 1
 2827 0dee C895      		lpm
 2828 0df0 702D      		mov r23, r0
 2829               		
 2830               	/* #NOAPP */
 2831 0df2 00C0      		rjmp .L253
 2832               	.L201:
 2833               	.LBE25:
 2835               	.LM265:
 2836 0df4 81E0      		ldi r24,lo8(1)
 2837 0df6 90E0      		ldi r25,hi8(1)
 2838 0df8 00C0      		rjmp .L205
 2839               	.L261:
 2841               	.LM266:
 2842 0dfa F501      		movw r30,r10
 2843 0dfc E050      		subi r30,lo8(-(mob_error_number))
 2844 0dfe F040      		sbci r31,hi8(-(mob_error_number))
 2845 0e00 8081      		ld r24,Z
 2846 0e02 9927      		clr r25
 2847 0e04 9F93      		push r25
 2848 0e06 8F93      		push r24
 2849 0e08 DF92      		push r13
 2850 0e0a CF92      		push r12
 2851 0e0c 80E0      		ldi r24,lo8(__c.3545)
 2852 0e0e 90E0      		ldi r25,hi8(__c.3545)
 2853 0e10 9F93      		push r25
 2854 0e12 8F93      		push r24
 2855 0e14 8EE7      		ldi r24,lo8(126)
 2856 0e16 90E0      		ldi r25,hi8(126)
 2857 0e18 9F93      		push r25
 2858 0e1a 8F93      		push r24
 2859 0e1c DF92      		push r13
 2860 0e1e CF92      		push r12
 2861 0e20 0E94 0000 		call snprintf_P
 2862               	.LBB26:
 2864               	.LM267:
 2865 0e24 F501      		movw r30,r10
 2866 0e26 EE0F      		lsl r30
 2867 0e28 FF1F      		rol r31
 2868 0e2a E050      		subi r30,lo8(-(mob_error))
 2869 0e2c F040      		sbci r31,hi8(-(mob_error))
 2870               	/* #APP */
 2871 0e2e C895      		lpm
 2872 0e30 602D      		mov r22, r0
 2873 0e32 3196      		adiw r30, 1
 2874 0e34 C895      		lpm
 2875 0e36 702D      		mov r23, r0
 2876               		
 2877               	/* #NOAPP */
 2878               	.LBE26:
 2879 0e38 4EE7      		ldi r20,lo8(126)
 2880 0e3a 50E0      		ldi r21,hi8(126)
 2881 0e3c 80E0      		ldi r24,lo8(uart_message_string)
 2882 0e3e 90E0      		ldi r25,hi8(uart_message_string)
 2883 0e40 0E94 0000 		call strncat_P
 2885               	.LM268:
 2886 0e44 EDB7      		in r30,__SP_L__
 2887 0e46 FEB7      		in r31,__SP_H__
 2888 0e48 3A96      		adiw r30,10
 2889 0e4a 0FB6      		in __tmp_reg__,__SREG__
 2890 0e4c F894      		cli
 2891 0e4e FEBF      		out __SP_H__,r31
 2892 0e50 0FBE      		out __SREG__,__tmp_reg__
 2893 0e52 EDBF      		out __SP_L__,r30
 2894 0e54 00C0      		rjmp .L225
 2895               	.L205:
 2896               	/* epilogue: frame size=4 */
 2897 0e56 2496      		adiw r28,4
 2898 0e58 0FB6      		in __tmp_reg__,__SREG__
 2899 0e5a F894      		cli
 2900 0e5c DEBF      		out __SP_H__,r29
 2901 0e5e 0FBE      		out __SREG__,__tmp_reg__
 2902 0e60 CDBF      		out __SP_L__,r28
 2903 0e62 DF91      		pop r29
 2904 0e64 CF91      		pop r28
 2905 0e66 1F91      		pop r17
 2906 0e68 0F91      		pop r16
 2907 0e6a FF90      		pop r15
 2908 0e6c EF90      		pop r14
 2909 0e6e DF90      		pop r13
 2910 0e70 CF90      		pop r12
 2911 0e72 BF90      		pop r11
 2912 0e74 AF90      		pop r10
 2913 0e76 9F90      		pop r9
 2914 0e78 8F90      		pop r8
 2915 0e7a 7F90      		pop r7
 2916 0e7c 6F90      		pop r6
 2917 0e7e 5F90      		pop r5
 2918 0e80 4F90      		pop r4
 2919 0e82 3F90      		pop r3
 2920 0e84 0895      		ret
 2921               	/* epilogue end (size=24) */
 2922               	/* function CommunicationError size 725 (676) */
 2957               	.Lscope20:
 2959               	.global	Initialization
 2961               	Initialization:
 2963               	.LM269:
 2964               	/* prologue: frame size=0 */
 2965 0e86 EF92      		push r14
 2966 0e88 FF92      		push r15
 2967 0e8a 0F93      		push r16
 2968 0e8c 1F93      		push r17
 2969               	/* prologue end (size=4) */
 2971               	.LM270:
 2972               	/* #APP */
 2973 0e8e F894      		cli
 2975               	.LM271:
 2976               	/* #NOAPP */
 2977 0e90 0E94 0000 		call UART0_Init
 2979               	.LM272:
 2980 0e94 0E94 0000 		call Init_Port
 2982               	.LM273:
 2983 0e98 60E9      		ldi r22,lo8(250000)
 2984 0e9a 70ED      		ldi r23,hi8(250000)
 2985 0e9c 83E0      		ldi r24,hlo8(250000)
 2986 0e9e 90E0      		ldi r25,hhi8(250000)
 2987 0ea0 0E94 0000 		call CAN_Init
 2988 0ea4 8093 0000 		sts can_init,r24
 2990               	.LM274:
 2991 0ea8 8F3F      		cpi r24,lo8(-1)
 2992 0eaa 01F4      		brne .+2
 2993 0eac 00C0      		rjmp .L278
 2995               	.LM275:
 2996 0eae 0E94 0000 		call Timer0_Init
 2997 0eb2 8093 0000 		sts timer0_init,r24
 2999               	.LM276:
 3000 0eb6 8130      		cpi r24,lo8(1)
 3001 0eb8 01F0      		breq .+2
 3002 0eba 00C0      		rjmp .L279
 3004               	.LM277:
 3005 0ebc 0E94 0000 		call Timer0A_Init
 3006 0ec0 8093 0000 		sts timer0A_init,r24
 3008               	.LM278:
 3009 0ec4 8130      		cpi r24,lo8(1)
 3010 0ec6 01F0      		breq .+2
 3011 0ec8 00C0      		rjmp .L280
 3013               	.LM279:
 3014               	/* #APP */
 3015 0eca 7894      		sei
 3017               	.LM280:
 3018               	/* #NOAPP */
 3019 0ecc 64E0      		ldi r22,lo8(4)
 3020 0ece 70E0      		ldi r23,hi8(4)
 3021 0ed0 80E0      		ldi r24,lo8(currentResponseKeyword)
 3022 0ed2 90E0      		ldi r25,hi8(currentResponseKeyword)
 3023 0ed4 0E94 0000 		call clearString
 3024               	.LBB27:
 3026               	.LM281:
 3027 0ed8 80E0      		ldi r24,lo8(responseKeywords)
 3028 0eda 90E0      		ldi r25,hi8(responseKeywords)
 3029 0edc FC01      		movw r30,r24
 3030               	/* #APP */
 3031 0ede C895      		lpm
 3032 0ee0 202D      		mov r18, r0
 3033 0ee2 3196      		adiw r30, 1
 3034 0ee4 C895      		lpm
 3035 0ee6 302D      		mov r19, r0
 3036               		
 3037               	/* #NOAPP */
 3038               	.LBE27:
 3039 0ee8 43E0      		ldi r20,lo8(3)
 3040 0eea 50E0      		ldi r21,hi8(3)
 3041 0eec B901      		movw r22,r18
 3042 0eee 80E0      		ldi r24,lo8(currentResponseKeyword)
 3043 0ef0 90E0      		ldi r25,hi8(currentResponseKeyword)
 3044 0ef2 0E94 0000 		call strncat_P
 3046               	.LM282:
 3047 0ef6 0E94 0000 		call relayThresholdInBoundPolarityInit
 3049               	.LM283:
 3050 0efa 8823      		tst r24
 3051 0efc 01F0      		breq .L270
 3053               	.LM284:
 3054 0efe 8091 0000 		lds r24,relayThresholdEnable_flag
 3055 0f02 8823      		tst r24
 3056 0f04 01F4      		brne .+2
 3057 0f06 00C0      		rjmp .L276
 3058 0f08 8091 0000 		lds r24,relayThresholds_valid
 3059 0f0c 8823      		tst r24
 3060 0f0e 01F4      		brne .+2
 3061 0f10 00C0      		rjmp .L276
 3062 0f12 8091 0000 		lds r24,relayThresholds_valid+1
 3063 0f16 8823      		tst r24
 3064 0f18 01F4      		brne .+2
 3065 0f1a 00C0      		rjmp .L276
 3066 0f1c 00C0      		rjmp .L282
 3067               	.L270:
 3069               	.LM285:
 3070 0f1e 80E0      		ldi r24,lo8(__c.3624)
 3071 0f20 90E0      		ldi r25,hi8(__c.3624)
 3072 0f22 9F93      		push r25
 3073 0f24 8F93      		push r24
 3074 0f26 8FE7      		ldi r24,lo8(127)
 3075 0f28 90E0      		ldi r25,hi8(127)
 3076 0f2a 9F93      		push r25
 3077 0f2c 8F93      		push r24
 3078 0f2e E0E0      		ldi r30,lo8(message)
 3079 0f30 EE2E      		mov r14,r30
 3080 0f32 E0E0      		ldi r30,hi8(message)
 3081 0f34 FE2E      		mov r15,r30
 3082 0f36 FF92      		push r15
 3083 0f38 EF92      		push r14
 3084 0f3a 0E94 0000 		call snprintf_P
 3086               	.LM286:
 3087 0f3e 07E1      		ldi r16,lo8(-1001)
 3088 0f40 1CEF      		ldi r17,hi8(-1001)
 3089 0f42 9701      		movw r18,r14
 3090 0f44 41E0      		ldi r20,lo8(1)
 3091 0f46 6FEF      		ldi r22,lo8(-1)
 3092 0f48 7FEF      		ldi r23,hi8(-1)
 3093 0f4a 81E0      		ldi r24,lo8(1)
 3094 0f4c 0E94 0000 		call CommunicationError
 3095 0f50 8DB7      		in r24,__SP_L__
 3096 0f52 9EB7      		in r25,__SP_H__
 3097 0f54 0696      		adiw r24,6
 3098 0f56 0FB6      		in __tmp_reg__,__SREG__
 3099 0f58 F894      		cli
 3100 0f5a 9EBF      		out __SP_H__,r25
 3101 0f5c 0FBE      		out __SREG__,__tmp_reg__
 3102 0f5e 8DBF      		out __SP_L__,r24
 3103 0f60 00C0      		rjmp .L276
 3104               	.L282:
 3106               	.LM287:
 3107 0f62 0E94 0000 		call relayThresholdInit
 3108 0f66 00C0      		rjmp .L276
 3109               	.L278:
 3111               	.LM288:
 3112 0f68 00E0      		ldi r16,lo8(0)
 3113 0f6a 10E0      		ldi r17,hi8(0)
 3114 0f6c 20E0      		ldi r18,lo8(0)
 3115 0f6e 30E0      		ldi r19,hi8(0)
 3116 0f70 40E0      		ldi r20,lo8(0)
 3117 0f72 68E0      		ldi r22,lo8(8)
 3118 0f74 70E0      		ldi r23,hi8(8)
 3119 0f76 82E0      		ldi r24,lo8(2)
 3120 0f78 0E94 0000 		call CommunicationError
 3121 0f7c 8093 0000 		sts can_errorCode,r24
 3123               	.LM289:
 3124 0f80 80E0      		ldi r24,lo8(0)
 3125 0f82 90E0      		ldi r25,hi8(0)
 3126 0f84 0E94 0000 		call exit
 3127               	.L279:
 3129               	.LM290:
 3130 0f88 00E0      		ldi r16,lo8(0)
 3131 0f8a 10E0      		ldi r17,hi8(0)
 3132 0f8c 20E0      		ldi r18,lo8(0)
 3133 0f8e 30E0      		ldi r19,hi8(0)
 3134 0f90 40E0      		ldi r20,lo8(0)
 3135 0f92 60E0      		ldi r22,lo8(0)
 3136 0f94 70E0      		ldi r23,hi8(0)
 3137               	.L277:
 3139               	.LM291:
 3140 0f96 80E0      		ldi r24,lo8(0)
 3141 0f98 0E94 0000 		call CommunicationError
 3142 0f9c 8093 0000 		sts general_errorCode,r24
 3144               	.LM292:
 3145 0fa0 80E0      		ldi r24,lo8(0)
 3146 0fa2 90E0      		ldi r25,hi8(0)
 3147 0fa4 0E94 0000 		call exit
 3148               	.L280:
 3150               	.LM293:
 3151 0fa8 00E0      		ldi r16,lo8(0)
 3152 0faa 10E0      		ldi r17,hi8(0)
 3153 0fac 20E0      		ldi r18,lo8(0)
 3154 0fae 30E0      		ldi r19,hi8(0)
 3155 0fb0 40E0      		ldi r20,lo8(0)
 3156 0fb2 61E0      		ldi r22,lo8(1)
 3157 0fb4 70E0      		ldi r23,hi8(1)
 3158 0fb6 00C0      		rjmp .L277
 3159               	.L276:
 3160               	/* epilogue: frame size=0 */
 3161 0fb8 1F91      		pop r17
 3162 0fba 0F91      		pop r16
 3163 0fbc FF90      		pop r15
 3164 0fbe EF90      		pop r14
 3165 0fc0 0895      		ret
 3166               	/* epilogue end (size=5) */
 3167               	/* function Initialization size 167 (158) */
 3173               	.Lscope21:
 3176               	.global	Check_Error
 3178               	Check_Error:
 3180               	.LM294:
 3181               	/* prologue: frame size=0 */
 3182 0fc2 8F92      		push r8
 3183 0fc4 9F92      		push r9
 3184 0fc6 AF92      		push r10
 3185 0fc8 BF92      		push r11
 3186 0fca CF92      		push r12
 3187 0fcc DF92      		push r13
 3188 0fce FF92      		push r15
 3189 0fd0 0F93      		push r16
 3190 0fd2 1F93      		push r17
 3191 0fd4 CF93      		push r28
 3192 0fd6 DF93      		push r29
 3193               	/* prologue end (size=11) */
 3194 0fd8 6C01      		movw r12,r24
 3196               	.LM295:
 3197 0fda 1092 0000 		sts error.3234,__zero_reg__
 3199               	.LM296:
 3200 0fde FC01      		movw r30,r24
 3201 0fe0 828D      		ldd r24,Z+26
 3202 0fe2 87FD      		sbrc r24,7
 3203 0fe4 00C0      		rjmp .L326
 3205               	.LM297:
 3206 0fe6 11E0      		ldi r17,lo8(1)
 3207 0fe8 812E      		mov r8,r17
 3208 0fea 912C      		mov r9,__zero_reg__
 3209 0fec B0E0      		ldi r27,lo8(ptr_setParameter+2)
 3210 0fee AB2E      		mov r10,r27
 3211 0ff0 B0E0      		ldi r27,hi8(ptr_setParameter+2)
 3212 0ff2 BB2E      		mov r11,r27
 3213               	.L287:
 3214               	.LBB28:
 3216               	.LM298:
 3217 0ff4 D501      		movw r26,r10
 3218 0ff6 ED91      		ld r30,X+
 3219 0ff8 FC91      		ld r31,X
 3220 0ffa 8081      		ld r24,Z
 3221 0ffc 8823      		tst r24
 3222 0ffe 01F0      		breq .+2
 3223 1000 00C0      		rjmp .L327
 3225               	.LM299:
 3226 1002 F601      		movw r30,r12
 3227 1004 828D      		ldd r24,Z+26
 3228 1006 8330      		cpi r24,lo8(3)
 3229 1008 00F4      		brsh .L290
 3230 100a A1E0      		ldi r26,lo8(1)
 3231 100c FA2E      		mov r15,r26
 3232               	.L325:
 3233               	.LBB29:
 3235               	.LM300:
 3236 100e F3E0      		ldi r31,lo8(3)
 3237 1010 FF16      		cp r15,r31
 3238 1012 01F4      		brne .+2
 3239 1014 00C0      		rjmp .L296
 3240 1016 FF15      		cp r31,r15
 3241 1018 00F0      		brlo .L299
 3242 101a 21E0      		ldi r18,lo8(1)
 3243 101c F216      		cp r15,r18
 3244 101e 01F4      		brne .+2
 3245 1020 00C0      		rjmp .L294
 3246 1022 82E0      		ldi r24,lo8(2)
 3247 1024 F816      		cp r15,r24
 3248 1026 01F4      		brne .+2
 3249 1028 00C0      		rjmp .L328
 3250               	.L293:
 3252               	.LM301:
 3253 102a F394      		inc r15
 3254 102c FCE0      		ldi r31,lo8(12)
 3255 102e FF15      		cp r31,r15
 3256 1030 00F4      		brsh .L325
 3257               	.L290:
 3258               	.LBE29:
 3260               	.LM302:
 3261 1032 8091 0000 		lds r24,error.3234
 3262 1036 8130      		cpi r24,lo8(1)
 3263 1038 01F4      		brne .+2
 3264 103a 00C0      		rjmp .L286
 3266               	.LM303:
 3267 103c 0894      		sec
 3268 103e 811C      		adc r8,__zero_reg__
 3269 1040 911C      		adc r9,__zero_reg__
 3270 1042 82E0      		ldi r24,lo8(2)
 3271 1044 90E0      		ldi r25,hi8(2)
 3272 1046 A80E      		add r10,r24
 3273 1048 B91E      		adc r11,r25
 3275               	.LM304:
 3276 104a 9DE0      		ldi r25,lo8(13)
 3277 104c 8916      		cp r8,r25
 3278 104e 9104      		cpc r9,__zero_reg__
 3279 1050 01F4      		brne .L287
 3280 1052 80E0      		ldi r24,lo8(0)
 3281 1054 90E0      		ldi r25,hi8(0)
 3282 1056 00C0      		rjmp .L313
 3283               	.L299:
 3284               	.LBB30:
 3286               	.LM305:
 3287 1058 94E0      		ldi r25,lo8(4)
 3288 105a F916      		cp r15,r25
 3289 105c 01F4      		brne .+2
 3290 105e 00C0      		rjmp .L297
 3291 1060 ACE0      		ldi r26,lo8(12)
 3292 1062 AF15      		cp r26,r15
 3293 1064 00F0      		brlo .L293
 3294               	.LBB31:
 3296               	.LM306:
 3297 1066 F601      		movw r30,r12
 3298 1068 8285      		ldd r24,Z+10
 3299 106a 9385      		ldd r25,Z+11
 3300 106c 8F3F      		cpi r24,255
 3301 106e 9105      		cpc r25,__zero_reg__
 3302 1070 01F0      		breq .+4
 3303 1072 00F0      		brlo .+2
 3304 1074 00C0      		rjmp .L329
 3305               	.LBE31:
 3307               	.LM307:
 3308 1076 F601      		movw r30,r12
 3309 1078 61E0      		ldi r22,lo8(1)
 3310 107a 70E0      		ldi r23,hi8(1)
 3311 107c 00C0      		rjmp .L308
 3312               	.L309:
 3313               	.LBB32:
 3315               	.LM308:
 3316 107e 6F5F      		subi r22,lo8(-(1))
 3317 1080 7F4F      		sbci r23,hi8(-(1))
 3318 1082 3296      		adiw r30,2
 3320               	.LM309:
 3321 1084 6830      		cpi r22,8
 3322 1086 7105      		cpc r23,__zero_reg__
 3323 1088 01F0      		breq .L293
 3324               	.L308:
 3325               	.LBE32:
 3327               	.LM310:
 3328 108a EB01      		movw r28,r22
 3329               	.LBB33:
 3331               	.LM311:
 3332 108c 8485      		ldd r24,Z+12
 3333 108e 9585      		ldd r25,Z+13
 3334 1090 8F3F      		cpi r24,255
 3335 1092 9105      		cpc r25,__zero_reg__
 3336 1094 01F0      		breq .L309
 3337 1096 00F0      		brlo .L309
 3338 1098 6B5F      		subi r22,lo8(-(5))
 3339 109a 7F4F      		sbci r23,hi8(-(5))
 3340               	.L302:
 3342               	.LM312:
 3343 109c 00E0      		ldi r16,lo8(0)
 3344 109e 10E0      		ldi r17,hi8(0)
 3345 10a0 20E0      		ldi r18,lo8(0)
 3346 10a2 30E0      		ldi r19,hi8(0)
 3347 10a4 40E0      		ldi r20,lo8(0)
 3348 10a6 81E0      		ldi r24,lo8(1)
 3349 10a8 0E94 0000 		call CommunicationError
 3350 10ac 8093 0000 		sts uart_errorCode,r24
 3352               	.LM313:
 3353 10b0 CC0F      		lsl r28
 3354 10b2 DD1F      		rol r29
 3355 10b4 CC0D      		add r28,r12
 3356 10b6 DD1D      		adc r29,r13
 3357 10b8 1B86      		std Y+11,__zero_reg__
 3358 10ba 1A86      		std Y+10,__zero_reg__
 3360               	.LM314:
 3361 10bc 81E0      		ldi r24,lo8(1)
 3362 10be 8093 0000 		sts error.3234,r24
 3363 10c2 00C0      		rjmp .L293
 3364               	.L296:
 3365               	.LBE33:
 3367               	.LM315:
 3368 10c4 F601      		movw r30,r12
 3369 10c6 8085      		ldd r24,Z+8
 3370 10c8 8230      		cpi r24,lo8(2)
 3371 10ca 00F0      		brlo .L303
 3373               	.LM316:
 3374 10cc 00E0      		ldi r16,lo8(0)
 3375 10ce 10E0      		ldi r17,hi8(0)
 3376 10d0 20E0      		ldi r18,lo8(0)
 3377 10d2 30E0      		ldi r19,hi8(0)
 3378 10d4 40E0      		ldi r20,lo8(0)
 3379 10d6 63E0      		ldi r22,lo8(3)
 3380 10d8 70E0      		ldi r23,hi8(3)
 3381               	.L324:
 3383               	.LM317:
 3384 10da 81E0      		ldi r24,lo8(1)
 3385 10dc 0E94 0000 		call CommunicationError
 3386 10e0 8093 0000 		sts uart_errorCode,r24
 3388               	.LM318:
 3389 10e4 81E0      		ldi r24,lo8(1)
 3390 10e6 8093 0000 		sts error.3234,r24
 3391               	.L303:
 3393               	.LM319:
 3394 10ea F394      		inc r15
 3395 10ec 00C0      		rjmp .L325
 3396               	.L297:
 3398               	.LM320:
 3399 10ee F601      		movw r30,r12
 3400 10f0 8185      		ldd r24,Z+9
 3401 10f2 8930      		cpi r24,lo8(9)
 3402 10f4 00F0      		brlo .L303
 3404               	.LM321:
 3405 10f6 00E0      		ldi r16,lo8(0)
 3406 10f8 10E0      		ldi r17,hi8(0)
 3407 10fa 20E0      		ldi r18,lo8(0)
 3408 10fc 30E0      		ldi r19,hi8(0)
 3409 10fe 40E0      		ldi r20,lo8(0)
 3410 1100 64E0      		ldi r22,lo8(4)
 3411 1102 70E0      		ldi r23,hi8(4)
 3412 1104 00C0      		rjmp .L324
 3413               	.L294:
 3415               	.LM322:
 3416 1106 F601      		movw r30,r12
 3417 1108 8081      		ld r24,Z
 3418 110a 9181      		ldd r25,Z+1
 3419 110c A281      		ldd r26,Z+2
 3420 110e B381      		ldd r27,Z+3
 3421 1110 8050      		subi r24,lo8(134217728)
 3422 1112 9040      		sbci r25,hi8(134217728)
 3423 1114 A040      		sbci r26,hlo8(134217728)
 3424 1116 B840      		sbci r27,hhi8(134217728)
 3425 1118 00F0      		brlo .L303
 3427               	.LM323:
 3428 111a 00E0      		ldi r16,lo8(0)
 3429 111c 10E0      		ldi r17,hi8(0)
 3430 111e 20E0      		ldi r18,lo8(0)
 3431 1120 30E0      		ldi r19,hi8(0)
 3432 1122 40E0      		ldi r20,lo8(0)
 3433 1124 61E0      		ldi r22,lo8(1)
 3434 1126 70E0      		ldi r23,hi8(1)
 3435 1128 81E0      		ldi r24,lo8(1)
 3436 112a 0E94 0000 		call CommunicationError
 3437 112e 8093 0000 		sts uart_errorCode,r24
 3439               	.LM324:
 3440 1132 F092 0000 		sts error.3234,r15
 3442               	.LM325:
 3443 1136 F394      		inc r15
 3444 1138 00C0      		rjmp .L325
 3445               	.L328:
 3447               	.LM326:
 3448 113a F601      		movw r30,r12
 3449 113c 8481      		ldd r24,Z+4
 3450 113e 9581      		ldd r25,Z+5
 3451 1140 A681      		ldd r26,Z+6
 3452 1142 B781      		ldd r27,Z+7
 3453 1144 8050      		subi r24,lo8(134217728)
 3454 1146 9040      		sbci r25,hi8(134217728)
 3455 1148 A040      		sbci r26,hlo8(134217728)
 3456 114a B840      		sbci r27,hhi8(134217728)
 3457 114c 00F0      		brlo .L303
 3459               	.LM327:
 3460 114e 00E0      		ldi r16,lo8(0)
 3461 1150 10E0      		ldi r17,hi8(0)
 3462 1152 20E0      		ldi r18,lo8(0)
 3463 1154 30E0      		ldi r19,hi8(0)
 3464 1156 40E0      		ldi r20,lo8(0)
 3465 1158 62E0      		ldi r22,lo8(2)
 3466 115a 70E0      		ldi r23,hi8(2)
 3467 115c 00C0      		rjmp .L324
 3468               	.L327:
 3469               	.LBE30:
 3471               	.LM328:
 3472 115e EEE0      		ldi r30,lo8(14)
 3473 1160 F0E0      		ldi r31,hi8(14)
 3474 1162 8E0E      		add r8,r30
 3475 1164 9F1E      		adc r9,r31
 3476 1166 00E0      		ldi r16,lo8(0)
 3477 1168 10E0      		ldi r17,hi8(0)
 3478 116a 20E0      		ldi r18,lo8(0)
 3479 116c 30E0      		ldi r19,hi8(0)
 3480 116e 40E0      		ldi r20,lo8(0)
 3481 1170 B401      		movw r22,r8
 3482               	.L323:
 3483 1172 81E0      		ldi r24,lo8(1)
 3484 1174 0E94 0000 		call CommunicationError
 3485 1178 8093 0000 		sts uart_errorCode,r24
 3487               	.LM329:
 3488 117c 81E0      		ldi r24,lo8(1)
 3489 117e 8093 0000 		sts error.3234,r24
 3490               	.L286:
 3491               	.LBE28:
 3493               	.LM330:
 3494 1182 C601      		movw r24,r12
 3495 1184 0E94 0000 		call Reset_UartStruct
 3497               	.LM331:
 3498 1188 0E94 0000 		call Reset_SetParameter
 3499 118c 81E0      		ldi r24,lo8(1)
 3500 118e 90E0      		ldi r25,hi8(1)
 3501 1190 00C0      		rjmp .L313
 3502               	.L329:
 3503               	.LBB34:
 3504               	.LBB35:
 3505               	.LBB36:
 3507               	.LM332:
 3508 1192 C0E0      		ldi r28,lo8(0)
 3509 1194 D0E0      		ldi r29,hi8(0)
 3510 1196 65E0      		ldi r22,lo8(5)
 3511 1198 70E0      		ldi r23,hi8(5)
 3512 119a 00C0      		rjmp .L302
 3513               	.L326:
 3514               	.LBE36:
 3515               	.LBE35:
 3516               	.LBE34:
 3518               	.LM333:
 3519 119c 00E0      		ldi r16,lo8(0)
 3520 119e 10E0      		ldi r17,hi8(0)
 3521 11a0 20E0      		ldi r18,lo8(0)
 3522 11a2 30E0      		ldi r19,hi8(0)
 3523 11a4 40E0      		ldi r20,lo8(0)
 3524 11a6 60E0      		ldi r22,lo8(0)
 3525 11a8 70E0      		ldi r23,hi8(0)
 3526 11aa 00C0      		rjmp .L323
 3527               	.L313:
 3528               	/* epilogue: frame size=0 */
 3529 11ac DF91      		pop r29
 3530 11ae CF91      		pop r28
 3531 11b0 1F91      		pop r17
 3532 11b2 0F91      		pop r16
 3533 11b4 FF90      		pop r15
 3534 11b6 DF90      		pop r13
 3535 11b8 CF90      		pop r12
 3536 11ba BF90      		pop r11
 3537 11bc AF90      		pop r10
 3538 11be 9F90      		pop r9
 3539 11c0 8F90      		pop r8
 3540 11c2 0895      		ret
 3541               	/* epilogue end (size=12) */
 3542               	/* function Check_Error size 263 (240) */
 3556               	.Lscope22:
 3560               	.global	UART0_Send_Message_String_woLF
 3562               	UART0_Send_Message_String_woLF:
 3564               	.LM334:
 3565               	/* prologue: frame size=0 */
 3566 11c4 AF92      		push r10
 3567 11c6 BF92      		push r11
 3568 11c8 CF92      		push r12
 3569 11ca DF92      		push r13
 3570 11cc EF92      		push r14
 3571 11ce FF92      		push r15
 3572 11d0 0F93      		push r16
 3573 11d2 1F93      		push r17
 3574 11d4 CF93      		push r28
 3575 11d6 DF93      		push r29
 3576               	/* prologue end (size=10) */
 3577 11d8 8C01      		movw r16,r24
 3578 11da 6A01      		movw r12,r20
 3579 11dc 7B01      		movw r14,r22
 3580 11de C0E0      		ldi r28,lo8(0)
 3581 11e0 D0E0      		ldi r29,hi8(0)
 3582 11e2 5C01      		movw r10,r24
 3583 11e4 00C0      		rjmp .L331
 3584               	.L336:
 3585               	.LBB37:
 3587               	.LM335:
 3588 11e6 CE01      		movw r24,r28
 3589 11e8 AA27      		clr r26
 3590 11ea BB27      		clr r27
 3591 11ec 8C15      		cp r24,r12
 3592 11ee 9D05      		cpc r25,r13
 3593 11f0 AE05      		cpc r26,r14
 3594 11f2 BF05      		cpc r27,r15
 3595 11f4 00F4      		brsh .L333
 3597               	.LM336:
 3598 11f6 F501      		movw r30,r10
 3599 11f8 8191      		ld r24,Z+
 3600 11fa 5F01      		movw r10,r30
 3601 11fc 0E94 0000 		call UART0_Transmit
 3603               	.LM337:
 3604 1200 2196      		adiw r28,1
 3605               	.L331:
 3606 1202 F801      		movw r30,r16
 3607 1204 0190      		ld __tmp_reg__,Z+
 3608 1206 0020      		tst __tmp_reg__
 3609 1208 01F4      		brne .-6
 3610 120a 3197      		sbiw r30,1
 3611 120c E01B      		sub r30,r16
 3612 120e F10B      		sbc r31,r17
 3613 1210 CE17      		cp r28,r30
 3614 1212 DF07      		cpc r29,r31
 3615 1214 00F0      		brlo .L336
 3616               	.L333:
 3617               	.LBE37:
 3619               	.LM338:
 3620 1216 B601      		movw r22,r12
 3621 1218 C801      		movw r24,r16
 3622 121a 0E94 0000 		call clearString
 3624               	.LM339:
 3625 121e 80E0      		ldi r24,lo8(0)
 3626 1220 90E0      		ldi r25,hi8(0)
 3627               	/* epilogue: frame size=0 */
 3628 1222 DF91      		pop r29
 3629 1224 CF91      		pop r28
 3630 1226 1F91      		pop r17
 3631 1228 0F91      		pop r16
 3632 122a FF90      		pop r15
 3633 122c EF90      		pop r14
 3634 122e DF90      		pop r13
 3635 1230 CF90      		pop r12
 3636 1232 BF90      		pop r11
 3637 1234 AF90      		pop r10
 3638 1236 0895      		ret
 3639               	/* epilogue end (size=11) */
 3640               	/* function UART0_Send_Message_String_woLF size 58 (37) */
 3645               	.Lscope23:
 3647               	.global	__vector_18
 3649               	__vector_18:
 3651               	.LM340:
 3652               	/* prologue: frame size=0 */
 3653 1238 1F92      		push __zero_reg__
 3654 123a 0F92      		push __tmp_reg__
 3655 123c 0FB6      		in __tmp_reg__,__SREG__
 3656 123e 0F92      		push __tmp_reg__
 3657 1240 1124      		clr __zero_reg__
 3658 1242 1F93      		push r17
 3659 1244 2F93      		push r18
 3660 1246 3F93      		push r19
 3661 1248 4F93      		push r20
 3662 124a 5F93      		push r21
 3663 124c 6F93      		push r22
 3664 124e 7F93      		push r23
 3665 1250 8F93      		push r24
 3666 1252 9F93      		push r25
 3667 1254 AF93      		push r26
 3668 1256 BF93      		push r27
 3669 1258 EF93      		push r30
 3670 125a FF93      		push r31
 3671               	/* prologue end (size=18) */
 3673               	.LM341:
 3674 125c 1091 ED00 		lds r17,237
 3676               	.LM342:
 3677 1260 8091 EC00 		lds r24,236
 3678 1264 807F      		andi r24,lo8(-16)
 3679 1266 803F      		cpi r24,lo8(-16)
 3680 1268 01F4      		brne .+2
 3681 126a 00C0      		rjmp .L338
 3683               	.LM343:
 3684 126c 8091 EC00 		lds r24,236
 3685 1270 9927      		clr r25
 3686 1272 9295      		swap r25
 3687 1274 8295      		swap r24
 3688 1276 8F70      		andi r24,0x0f
 3689 1278 8927      		eor r24,r25
 3690 127a 9F70      		andi r25,0x0f
 3691 127c 8927      		eor r24,r25
 3692 127e 8093 0000 		sts mob,r24
 3694               	.LM344:
 3695 1282 8091 EC00 		lds r24,236
 3696 1286 807F      		andi r24,lo8(-16)
 3697 1288 8093 ED00 		sts 237,r24
 3699               	.LM345:
 3700 128c 0E94 0000 		call Get_CanError
 3701 1290 8130      		cpi r24,lo8(1)
 3702 1292 01F0      		breq .L352
 3704               	.LM346:
 3705 1294 8091 EE00 		lds r24,238
 3706 1298 86FF      		sbrs r24,6
 3707 129a 00C0      		rjmp .L343
 3709               	.LM347:
 3710 129c 8091 EE00 		lds r24,238
 3711 12a0 8F7B      		andi r24,lo8(-65)
 3712 12a2 8093 EE00 		sts 238,r24
 3713               	.L352:
 3715               	.LM348:
 3716 12a6 80E4      		ldi r24,lo8(64)
 3717 12a8 8093 EF00 		sts 239,r24
 3718               	.L342:
 3720               	.LM349:
 3721 12ac 1093 ED00 		sts 237,r17
 3722 12b0 00C0      		rjmp .L350
 3723               	.L343:
 3725               	.LM350:
 3726 12b2 8091 EE00 		lds r24,238
 3727 12b6 85FF      		sbrs r24,5
 3728 12b8 00C0      		rjmp .L342
 3730               	.LM351:
 3731 12ba 8091 EF00 		lds r24,239
 3732 12be E091 0000 		lds r30,ptr_canStruct
 3733 12c2 F091 0000 		lds r31,(ptr_canStruct)+1
 3734 12c6 8F70      		andi r24,lo8(15)
 3735 12c8 8187      		std Z+9,r24
 3736               	.LBB38:
 3738               	.LM352:
 3739 12ca E091 0000 		lds r30,ptr_canStruct
 3740 12ce F091 0000 		lds r31,(ptr_canStruct)+1
 3741 12d2 8185      		ldd r24,Z+9
 3742 12d4 8823      		tst r24
 3743 12d6 01F0      		breq .L346
 3744 12d8 90E0      		ldi r25,lo8(0)
 3745               	.L348:
 3747               	.LM353:
 3748 12da 8091 FA00 		lds r24,250
 3749 12de E90F      		add r30,r25
 3750 12e0 F11D      		adc r31,__zero_reg__
 3751 12e2 8287      		std Z+10,r24
 3753               	.LM354:
 3754 12e4 9F5F      		subi r25,lo8(-(1))
 3755 12e6 E091 0000 		lds r30,ptr_canStruct
 3756 12ea F091 0000 		lds r31,(ptr_canStruct)+1
 3757 12ee 8185      		ldd r24,Z+9
 3758 12f0 9817      		cp r25,r24
 3759 12f2 00F0      		brlo .L348
 3760               	.L346:
 3761               	.LBE38:
 3763               	.LM355:
 3764 12f4 1082      		st Z,__zero_reg__
 3765 12f6 1182      		std Z+1,__zero_reg__
 3766 12f8 1282      		std Z+2,__zero_reg__
 3767 12fa 1382      		std Z+3,__zero_reg__
 3769               	.LM356:
 3770 12fc 2091 F200 		lds r18,242
 3771 1300 2295      		swap r18
 3772 1302 2695      		lsr r18
 3773 1304 2770      		andi r18,0x7
 3774 1306 3327      		clr r19
 3775 1308 4427      		clr r20
 3776 130a 5527      		clr r21
 3777 130c 2083      		st Z,r18
 3778 130e 3183      		std Z+1,r19
 3779 1310 4283      		std Z+2,r20
 3780 1312 5383      		std Z+3,r21
 3782               	.LM357:
 3783 1314 8091 F300 		lds r24,243
 3784 1318 9927      		clr r25
 3785 131a 880F      		lsl r24
 3786 131c 991F      		rol r25
 3787 131e 880F      		lsl r24
 3788 1320 991F      		rol r25
 3789 1322 880F      		lsl r24
 3790 1324 991F      		rol r25
 3791 1326 AA27      		clr r26
 3792 1328 97FD      		sbrc r25,7
 3793 132a A095      		com r26
 3794 132c BA2F      		mov r27,r26
 3795 132e 282B      		or r18,r24
 3796 1330 392B      		or r19,r25
 3797 1332 4A2B      		or r20,r26
 3798 1334 5B2B      		or r21,r27
 3799 1336 2083      		st Z,r18
 3800 1338 3183      		std Z+1,r19
 3801 133a 4283      		std Z+2,r20
 3802 133c 5383      		std Z+3,r21
 3804               	.LM358:
 3805 133e 8091 0000 		lds r24,mob
 3806 1342 8087      		std Z+8,r24
 3808               	.LM359:
 3809 1344 8091 EE00 		lds r24,238
 3810 1348 8F7D      		andi r24,lo8(-33)
 3811 134a 8093 EE00 		sts 238,r24
 3813               	.LM360:
 3814 134e 80E8      		ldi r24,lo8(-128)
 3815 1350 8093 EF00 		sts 239,r24
 3817               	.LM361:
 3818 1354 81E0      		ldi r24,lo8(1)
 3819 1356 8093 0000 		sts canReady,r24
 3820 135a 00C0      		rjmp .L342
 3821               	.L338:
 3823               	.LM362:
 3824 135c 0E94 0000 		call Get_BusState
 3826               	.LM363:
 3827 1360 8091 DA00 		lds r24,218
 3828 1364 8093 DA00 		sts 218,r24
 3829               	.L350:
 3830               	/* epilogue: frame size=0 */
 3831 1368 FF91      		pop r31
 3832 136a EF91      		pop r30
 3833 136c BF91      		pop r27
 3834 136e AF91      		pop r26
 3835 1370 9F91      		pop r25
 3836 1372 8F91      		pop r24
 3837 1374 7F91      		pop r23
 3838 1376 6F91      		pop r22
 3839 1378 5F91      		pop r21
 3840 137a 4F91      		pop r20
 3841 137c 3F91      		pop r19
 3842 137e 2F91      		pop r18
 3843 1380 1F91      		pop r17
 3844 1382 0F90      		pop __tmp_reg__
 3845 1384 0FBE      		out __SREG__,__tmp_reg__
 3846 1386 0F90      		pop __tmp_reg__
 3847 1388 1F90      		pop __zero_reg__
 3848 138a 1895      		reti
 3849               	/* epilogue end (size=18) */
 3850               	/* function __vector_18 size 170 (134) */
 3858               	.Lscope24:
 3861               	.global	Convert_UartData_to_UartStruct
 3863               	Convert_UartData_to_UartStruct:
 3865               	.LM364:
 3866               	/* prologue: frame size=0 */
 3867 138c CF92      		push r12
 3868 138e DF92      		push r13
 3869 1390 EF92      		push r14
 3870 1392 FF92      		push r15
 3871 1394 0F93      		push r16
 3872 1396 1F93      		push r17
 3873               	/* prologue end (size=6) */
 3875               	.LM365:
 3876 1398 C090 0000 		lds r12,ptr_uartStruct
 3877 139c D090 0000 		lds r13,(ptr_uartStruct)+1
 3878 13a0 E0E0      		ldi r30,lo8(setParameter+25)
 3879 13a2 EE2E      		mov r14,r30
 3880 13a4 E0E0      		ldi r30,hi8(setParameter+25)
 3881 13a6 FE2E      		mov r15,r30
 3882 13a8 00E0      		ldi r16,lo8(ptr_setParameter+2)
 3883 13aa 10E0      		ldi r17,hi8(ptr_setParameter+2)
 3884 13ac 40E1      		ldi r20,lo8(16)
 3885 13ae 50E0      		ldi r21,hi8(16)
 3886 13b0 B801      		movw r22,r16
 3887 13b2 C701      		movw r24,r14
 3888 13b4 0E94 0000 		call strtoul
 3889 13b8 F601      		movw r30,r12
 3890 13ba 6083      		st Z,r22
 3891 13bc 7183      		std Z+1,r23
 3892 13be 8283      		std Z+2,r24
 3893 13c0 9383      		std Z+3,r25
 3895               	.LM366:
 3896 13c2 C090 0000 		lds r12,ptr_uartStruct
 3897 13c6 D090 0000 		lds r13,(ptr_uartStruct)+1
 3898 13ca 0E5F      		subi r16,lo8(-(2))
 3899 13cc 1F4F      		sbci r17,hi8(-(2))
 3900 13ce 40E1      		ldi r20,lo8(16)
 3901 13d0 50E0      		ldi r21,hi8(16)
 3902 13d2 B801      		movw r22,r16
 3903 13d4 C701      		movw r24,r14
 3904 13d6 4996      		adiw r24,25
 3905 13d8 0E94 0000 		call strtoul
 3906 13dc F601      		movw r30,r12
 3907 13de 6483      		std Z+4,r22
 3908 13e0 7583      		std Z+5,r23
 3909 13e2 8683      		std Z+6,r24
 3910 13e4 9783      		std Z+7,r25
 3912               	.LM367:
 3913 13e6 C090 0000 		lds r12,ptr_uartStruct
 3914 13ea D090 0000 		lds r13,(ptr_uartStruct)+1
 3915 13ee 0E5F      		subi r16,lo8(-(2))
 3916 13f0 1F4F      		sbci r17,hi8(-(2))
 3917 13f2 40E1      		ldi r20,lo8(16)
 3918 13f4 50E0      		ldi r21,hi8(16)
 3919 13f6 B801      		movw r22,r16
 3920 13f8 C701      		movw r24,r14
 3921 13fa C296      		adiw r24,50
 3922 13fc 0E94 0000 		call strtoul
 3923 1400 F601      		movw r30,r12
 3924 1402 6087      		std Z+8,r22
 3926               	.LM368:
 3927 1404 E090 0000 		lds r14,ptr_uartStruct
 3928 1408 F090 0000 		lds r15,(ptr_uartStruct)+1
 3929 140c 0E5F      		subi r16,lo8(-(2))
 3930 140e 1F4F      		sbci r17,hi8(-(2))
 3931 1410 40E1      		ldi r20,lo8(16)
 3932 1412 50E0      		ldi r21,hi8(16)
 3933 1414 B801      		movw r22,r16
 3934 1416 80E0      		ldi r24,lo8(setParameter+100)
 3935 1418 90E0      		ldi r25,hi8(setParameter+100)
 3936 141a 0E94 0000 		call strtoul
 3937 141e F701      		movw r30,r14
 3938 1420 6187      		std Z+9,r22
 3940               	.LM369:
 3941 1422 E090 0000 		lds r14,ptr_uartStruct
 3942 1426 F090 0000 		lds r15,(ptr_uartStruct)+1
 3943 142a 0E5F      		subi r16,lo8(-(2))
 3944 142c 1F4F      		sbci r17,hi8(-(2))
 3945 142e 40E1      		ldi r20,lo8(16)
 3946 1430 50E0      		ldi r21,hi8(16)
 3947 1432 B801      		movw r22,r16
 3948 1434 80E0      		ldi r24,lo8(setParameter+125)
 3949 1436 90E0      		ldi r25,hi8(setParameter+125)
 3950 1438 0E94 0000 		call strtoul
 3951 143c F701      		movw r30,r14
 3952 143e 7387      		std Z+11,r23
 3953 1440 6287      		std Z+10,r22
 3955               	.LM370:
 3956 1442 E090 0000 		lds r14,ptr_uartStruct
 3957 1446 F090 0000 		lds r15,(ptr_uartStruct)+1
 3958 144a 0E5F      		subi r16,lo8(-(2))
 3959 144c 1F4F      		sbci r17,hi8(-(2))
 3960 144e 40E1      		ldi r20,lo8(16)
 3961 1450 50E0      		ldi r21,hi8(16)
 3962 1452 B801      		movw r22,r16
 3963 1454 80E0      		ldi r24,lo8(setParameter+150)
 3964 1456 90E0      		ldi r25,hi8(setParameter+150)
 3965 1458 0E94 0000 		call strtoul
 3966 145c F701      		movw r30,r14
 3967 145e 7587      		std Z+13,r23
 3968 1460 6487      		std Z+12,r22
 3970               	.LM371:
 3971 1462 E090 0000 		lds r14,ptr_uartStruct
 3972 1466 F090 0000 		lds r15,(ptr_uartStruct)+1
 3973 146a 0E5F      		subi r16,lo8(-(2))
 3974 146c 1F4F      		sbci r17,hi8(-(2))
 3975 146e 40E1      		ldi r20,lo8(16)
 3976 1470 50E0      		ldi r21,hi8(16)
 3977 1472 B801      		movw r22,r16
 3978 1474 80E0      		ldi r24,lo8(setParameter+175)
 3979 1476 90E0      		ldi r25,hi8(setParameter+175)
 3980 1478 0E94 0000 		call strtoul
 3981 147c F701      		movw r30,r14
 3982 147e 7787      		std Z+15,r23
 3983 1480 6687      		std Z+14,r22
 3985               	.LM372:
 3986 1482 E090 0000 		lds r14,ptr_uartStruct
 3987 1486 F090 0000 		lds r15,(ptr_uartStruct)+1
 3988 148a 0E5F      		subi r16,lo8(-(2))
 3989 148c 1F4F      		sbci r17,hi8(-(2))
 3990 148e 40E1      		ldi r20,lo8(16)
 3991 1490 50E0      		ldi r21,hi8(16)
 3992 1492 B801      		movw r22,r16
 3993 1494 80E0      		ldi r24,lo8(setParameter+200)
 3994 1496 90E0      		ldi r25,hi8(setParameter+200)
 3995 1498 0E94 0000 		call strtoul
 3996 149c F701      		movw r30,r14
 3997 149e 718B      		std Z+17,r23
 3998 14a0 608B      		std Z+16,r22
 4000               	.LM373:
 4001 14a2 E090 0000 		lds r14,ptr_uartStruct
 4002 14a6 F090 0000 		lds r15,(ptr_uartStruct)+1
 4003 14aa 0E5F      		subi r16,lo8(-(2))
 4004 14ac 1F4F      		sbci r17,hi8(-(2))
 4005 14ae 40E1      		ldi r20,lo8(16)
 4006 14b0 50E0      		ldi r21,hi8(16)
 4007 14b2 B801      		movw r22,r16
 4008 14b4 80E0      		ldi r24,lo8(setParameter+225)
 4009 14b6 90E0      		ldi r25,hi8(setParameter+225)
 4010 14b8 0E94 0000 		call strtoul
 4011 14bc F701      		movw r30,r14
 4012 14be 738B      		std Z+19,r23
 4013 14c0 628B      		std Z+18,r22
 4015               	.LM374:
 4016 14c2 E090 0000 		lds r14,ptr_uartStruct
 4017 14c6 F090 0000 		lds r15,(ptr_uartStruct)+1
 4018 14ca 0E5F      		subi r16,lo8(-(2))
 4019 14cc 1F4F      		sbci r17,hi8(-(2))
 4020 14ce 40E1      		ldi r20,lo8(16)
 4021 14d0 50E0      		ldi r21,hi8(16)
 4022 14d2 B801      		movw r22,r16
 4023 14d4 80E0      		ldi r24,lo8(setParameter+250)
 4024 14d6 90E0      		ldi r25,hi8(setParameter+250)
 4025 14d8 0E94 0000 		call strtoul
 4026 14dc F701      		movw r30,r14
 4027 14de 758B      		std Z+21,r23
 4028 14e0 648B      		std Z+20,r22
 4030               	.LM375:
 4031 14e2 E090 0000 		lds r14,ptr_uartStruct
 4032 14e6 F090 0000 		lds r15,(ptr_uartStruct)+1
 4033 14ea 0E5F      		subi r16,lo8(-(2))
 4034 14ec 1F4F      		sbci r17,hi8(-(2))
 4035 14ee 40E1      		ldi r20,lo8(16)
 4036 14f0 50E0      		ldi r21,hi8(16)
 4037 14f2 B801      		movw r22,r16
 4038 14f4 80E0      		ldi r24,lo8(setParameter+275)
 4039 14f6 90E0      		ldi r25,hi8(setParameter+275)
 4040 14f8 0E94 0000 		call strtoul
 4041 14fc F701      		movw r30,r14
 4042 14fe 778B      		std Z+23,r23
 4043 1500 668B      		std Z+22,r22
 4045               	.LM376:
 4046 1502 E090 0000 		lds r14,ptr_uartStruct
 4047 1506 F090 0000 		lds r15,(ptr_uartStruct)+1
 4048 150a 0E5F      		subi r16,lo8(-(2))
 4049 150c 1F4F      		sbci r17,hi8(-(2))
 4050 150e 40E1      		ldi r20,lo8(16)
 4051 1510 50E0      		ldi r21,hi8(16)
 4052 1512 B801      		movw r22,r16
 4053 1514 80E0      		ldi r24,lo8(setParameter+300)
 4054 1516 90E0      		ldi r25,hi8(setParameter+300)
 4055 1518 0E94 0000 		call strtoul
 4056 151c F701      		movw r30,r14
 4057 151e 718F      		std Z+25,r23
 4058 1520 608F      		std Z+24,r22
 4059               	/* epilogue: frame size=0 */
 4060 1522 1F91      		pop r17
 4061 1524 0F91      		pop r16
 4062 1526 FF90      		pop r15
 4063 1528 EF90      		pop r14
 4064 152a DF90      		pop r13
 4065 152c CF90      		pop r12
 4066 152e 0895      		ret
 4067               	/* epilogue end (size=7) */
 4068               	/* function Convert_UartData_to_UartStruct size 210 (197) */
 4070               	.Lscope25:
 4073               	.global	Choose_Function
 4075               	Choose_Function:
 4077               	.LM377:
 4078               	/* prologue: frame size=0 */
 4079 1530 CF93      		push r28
 4080 1532 DF93      		push r29
 4081               	/* prologue end (size=2) */
 4082 1534 EC01      		movw r28,r24
 4084               	.LM378:
 4085 1536 8A8D      		ldd r24,Y+26
 4086 1538 E82F      		mov r30,r24
 4087 153a FF27      		clr r31
 4088 153c E7FD      		sbrc r30,7
 4089 153e F095      		com r31
 4090 1540 E233      		cpi r30,50
 4091 1542 F105      		cpc r31,__zero_reg__
 4092 1544 00F4      		brsh .L356
 4094               	.LM379:
 4095 1546 E050      		subi r30,lo8(-(gs(.L383)))
 4096 1548 F040      		sbci r31,hi8(-(gs(.L383)))
 4097 154a EE0F      		lsl r30
 4098 154c FF1F      		rol r31
 4099 154e 0590      		lpm __tmp_reg__,Z+
 4100 1550 F491      		lpm r31,Z
 4101 1552 E02D      		mov r30,__tmp_reg__
 4102 1554 0994      		ijmp
 4103               		.data
 4104               		.section .progmem.gcc_sw_table, "a", @progbits
 4105               		.p2align 1
 4106               	.L383:
 4107               		.data
 4108               		.section .progmem.gcc_sw_table, "a", @progbits
 4109               		.p2align 1
 4110 0000 0000      		.word gs(.L357)
 4111 0002 0000      		.word gs(.L357)
 4112 0004 0000      		.word gs(.L357)
 4113 0006 0000      		.word gs(.L391)
 4114 0008 0000      		.word gs(.L359)
 4115 000a 0000      		.word gs(.L360)
 4116 000c 0000      		.word gs(.L361)
 4117 000e 0000      		.word gs(.L362)
 4118 0010 0000      		.word gs(.L363)
 4119 0012 0000      		.word gs(.L356)
 4120 0014 0000      		.word gs(.L364)
 4121 0016 0000      		.word gs(.L365)
 4122 0018 0000      		.word gs(.L366)
 4123 001a 0000      		.word gs(.L367)
 4124 001c 0000      		.word gs(.L368)
 4125 001e 0000      		.word gs(.L369)
 4126 0020 0000      		.word gs(.L391)
 4127 0022 0000      		.word gs(.L391)
 4128 0024 0000      		.word gs(.L391)
 4129 0026 0000      		.word gs(.L391)
 4130 0028 0000      		.word gs(.L391)
 4131 002a 0000      		.word gs(.L370)
 4132 002c 0000      		.word gs(.L371)
 4133 002e 0000      		.word gs(.L372)
 4134 0030 0000      		.word gs(.L373)
 4135 0032 0000      		.word gs(.L391)
 4136 0034 0000      		.word gs(.L374)
 4137 0036 0000      		.word gs(.L356)
 4138 0038 0000      		.word gs(.L375)
 4139 003a 0000      		.word gs(.L376)
 4140 003c 0000      		.word gs(.L377)
 4141 003e 0000      		.word gs(.L391)
 4142 0040 0000      		.word gs(.L391)
 4143 0042 0000      		.word gs(.L391)
 4144 0044 0000      		.word gs(.L391)
 4145 0046 0000      		.word gs(.L391)
 4146 0048 0000      		.word gs(.L391)
 4147 004a 0000      		.word gs(.L378)
 4148 004c 0000      		.word gs(.L391)
 4149 004e 0000      		.word gs(.L356)
 4150 0050 0000      		.word gs(.L379)
 4151 0052 0000      		.word gs(.L380)
 4152 0054 0000      		.word gs(.L381)
 4153 0056 0000      		.word gs(.L382)
 4154 0058 0000      		.word gs(.L391)
 4155 005a 0000      		.word gs(.L391)
 4156 005c 0000      		.word gs(.L391)
 4157 005e 0000      		.word gs(.L391)
 4158 0060 0000      		.word gs(.L391)
 4159 0062 0000      		.word gs(.L391)
 4160               		.text
 4161               	.L357:
 4163               	.LM380:
 4164 1556 80E0      		ldi r24,lo8(setParameter)
 4165 1558 90E0      		ldi r25,hi8(setParameter)
 4166 155a 0E94 0000 		call Convert_UartData_to_UartStruct
 4168               	.LM381:
 4169 155e CE01      		movw r24,r28
 4170 1560 0E94 0000 		call Check_Parameter_CanFormat
 4171 1564 8130      		cpi r24,lo8(1)
 4172 1566 01F4      		brne .L392
 4174               	.LM382:
 4175 1568 8A8D      		ldd r24,Y+26
 4176 156a 8130      		cpi r24,lo8(1)
 4177 156c 01F4      		brne .+2
 4178 156e 00C0      		rjmp .L387
 4179 1570 8230      		cpi r24,lo8(2)
 4180 1572 01F4      		brne .+2
 4181 1574 00C0      		rjmp .L388
 4182 1576 8823      		tst r24
 4183 1578 01F0      		breq .+2
 4184 157a 00C0      		rjmp .L391
 4186               	.LM383:
 4187 157c 8885      		ldd r24,Y+8
 4188 157e 8823      		tst r24
 4189 1580 01F0      		breq .+2
 4190 1582 00C0      		rjmp .L389
 4192               	.LM384:
 4193 1584 CE01      		movw r24,r28
 4194 1586 0E94 0000 		call Send_Message
 4195 158a 00C0      		rjmp .L391
 4196               	.L356:
 4198               	.LM385:
 4199 158c 8FEF      		ldi r24,lo8(-1)
 4200 158e 8A8F      		std Y+26,r24
 4201               	.L392:
 4203               	.LM386:
 4204 1590 CE01      		movw r24,r28
 4205 1592 0E94 0000 		call Check_Error
 4206 1596 00C0      		rjmp .L391
 4207               	.L359:
 4209               	.LM387:
 4210 1598 CE01      		movw r24,r28
 4211 159a 0E94 0000 		call writeRegister
 4212 159e 00C0      		rjmp .L391
 4213               	.L361:
 4215               	.LM388:
 4216 15a0 CE01      		movw r24,r28
 4217 15a2 0E94 0000 		call atmelReadADCs
 4218 15a6 00C0      		rjmp .L391
 4219               	.L362:
 4221               	.LM389:
 4222 15a8 CE01      		movw r24,r28
 4223 15aa 0E94 0000 		call owiReadADCs
 4224 15ae 00C0      		rjmp .L391
 4225               	.L363:
 4227               	.LM390:
 4228 15b0 CE01      		movw r24,r28
 4229 15b2 0E94 0000 		call owiDualSwitches
 4230 15b6 00C0      		rjmp .L391
 4231               	.L364:
 4233               	.LM391:
 4234 15b8 CE01      		movw r24,r28
 4235 15ba 0E94 0000 		call owiShowDevicesID
 4236 15be 00C0      		rjmp .L391
 4237               	.L365:
 4239               	.LM392:
 4240 15c0 CE01      		movw r24,r28
 4241 15c2 0E94 0000 		call read_status_simpleSwitches
 4242 15c6 00C0      		rjmp .L391
 4243               	.L366:
 4245               	.LM393:
 4246 15c8 0E94 0000 		call Initialization
 4247 15cc 00C0      		rjmp .L391
 4248               	.L360:
 4250               	.LM394:
 4251 15ce CE01      		movw r24,r28
 4252 15d0 0E94 0000 		call readRegister
 4253 15d4 00C0      		rjmp .L391
 4254               	.L367:
 4256               	.LM395:
 4257 15d6 CE01      		movw r24,r28
 4258 15d8 0E94 0000 		call keep_alive
 4259 15dc 00C0      		rjmp .L391
 4260               	.L368:
 4262               	.LM396:
 4263 15de CE01      		movw r24,r28
 4264 15e0 0E94 0000 		call owiTemperatureSensors
 4265 15e4 00C0      		rjmp .L391
 4266               	.L369:
 4268               	.LM397:
 4269 15e6 CE01      		movw r24,r28
 4270 15e8 0E94 0000 		call setOneWireBusMask
 4271 15ec 00C0      		rjmp .L391
 4272               	.L370:
 4274               	.LM398:
 4275 15ee CE01      		movw r24,r28
 4276 15f0 0E94 0000 		call readModifyDebugLevel
 4277 15f4 00C0      		rjmp .L391
 4278               	.L371:
 4280               	.LM399:
 4281 15f6 CE01      		movw r24,r28
 4282 15f8 0E94 0000 		call readModifyDebugMask
 4283 15fc 00C0      		rjmp .L391
 4284               	.L372:
 4286               	.LM400:
 4287 15fe CE01      		movw r24,r28
 4288 1600 0E94 0000 		call modifyJTAG
 4289 1604 00C0      		rjmp .L391
 4290               	.L373:
 4292               	.LM401:
 4293 1606 CE01      		movw r24,r28
 4294 1608 0E94 0000 		call help
 4295 160c 00C0      		rjmp .L391
 4296               	.L374:
 4298               	.LM402:
 4299 160e CE01      		movw r24,r28
 4300 1610 0E94 0000 		call getOneWireBusMask
 4301 1614 00C0      		rjmp .L391
 4302               	.L375:
 4304               	.LM403:
 4305 1616 CE01      		movw r24,r28
 4306 1618 0E94 0000 		call readModifyDebugLevelAndMask
 4307 161c 00C0      		rjmp .L391
 4308               	.L376:
 4310               	.LM404:
 4311 161e 81E0      		ldi r24,lo8(1)
 4312 1620 0E94 0000 		call owiTemperatureFindParasiticlyPoweredDevices
 4313 1624 00C0      		rjmp .L391
 4314               	.L377:
 4316               	.LM405:
 4317 1626 CE01      		movw r24,r28
 4318 1628 0E94 0000 		call show
 4319 162c 00C0      		rjmp .L391
 4320               	.L378:
 4322               	.LM406:
 4323 162e CE01      		movw r24,r28
 4324 1630 0E94 0000 		call owiApi
 4325 1634 00C0      		rjmp .L391
 4326               	.L379:
 4328               	.LM407:
 4329 1636 CE01      		movw r24,r28
 4330 1638 0E94 0000 		call relayThreshold
 4331 163c 00C0      		rjmp .L391
 4332               	.L380:
 4334               	.LM408:
 4335 163e 109A      		sbi 34-0x20,0
 4336 1640 00C0      		rjmp .L391
 4337               	.L381:
 4339               	.LM409:
 4340 1642 1098      		cbi 34-0x20,0
 4341 1644 00C0      		rjmp .L391
 4342               	.L382:
 4344               	.LM410:
 4345 1646 009A      		sbi 32-0x20,0
 4346 1648 00C0      		rjmp .L391
 4347               	.L387:
 4349               	.LM411:
 4350 164a CE01      		movw r24,r28
 4351 164c 0E94 0000 		call Subscribe_Message
 4352 1650 00C0      		rjmp .L391
 4353               	.L388:
 4355               	.LM412:
 4356 1652 CE01      		movw r24,r28
 4357 1654 0E94 0000 		call Unsubscribe_Message
 4358 1658 00C0      		rjmp .L391
 4359               	.L389:
 4361               	.LM413:
 4362 165a CE01      		movw r24,r28
 4363 165c 0E94 0000 		call Receive_Message
 4364               	.L391:
 4365               	/* epilogue: frame size=0 */
 4366 1660 DF91      		pop r29
 4367 1662 CF91      		pop r28
 4368 1664 0895      		ret
 4369               	/* epilogue end (size=3) */
 4370               	/* function Choose_Function size 205 (200) */
 4372               	.Lscope26:
 4374               	.global	Decrypt_Uart_String
 4376               	Decrypt_Uart_String:
 4378               	.LM414:
 4379               	/* prologue: frame size=2 */
 4380 1666 CF92      		push r12
 4381 1668 DF92      		push r13
 4382 166a EF92      		push r14
 4383 166c FF92      		push r15
 4384 166e 0F93      		push r16
 4385 1670 1F93      		push r17
 4386 1672 CF93      		push r28
 4387 1674 DF93      		push r29
 4388 1676 CDB7      		in r28,__SP_L__
 4389 1678 DEB7      		in r29,__SP_H__
 4390 167a 2297      		sbiw r28,2
 4391 167c 0FB6      		in __tmp_reg__,__SREG__
 4392 167e F894      		cli
 4393 1680 DEBF      		out __SP_H__,r29
 4394 1682 0FBE      		out __SREG__,__tmp_reg__
 4395 1684 CDBF      		out __SP_L__,r28
 4396               	/* prologue end (size=16) */
 4398               	.LM415:
 4399 1686 A0E0      		ldi r26,lo8(decrypt_uartString)
 4400 1688 EA2E      		mov r14,r26
 4401 168a A0E0      		ldi r26,hi8(decrypt_uartString)
 4402 168c FA2E      		mov r15,r26
 4403 168e F701      		movw r30,r14
 4404 1690 0190      		ld __tmp_reg__,Z+
 4405 1692 0020      		tst __tmp_reg__
 4406 1694 01F4      		brne .-6
 4407 1696 3197      		sbiw r30,1
 4408 1698 EE19      		sub r30,r14
 4409 169a FF09      		sbc r31,r15
 4410 169c F197      		sbiw r30,49
 4411 169e 00F0      		brlo .L394
 4413               	.LM416:
 4414 16a0 00E0      		ldi r16,lo8(0)
 4415 16a2 10E0      		ldi r17,hi8(0)
 4416 16a4 20E0      		ldi r18,lo8(0)
 4417 16a6 30E0      		ldi r19,hi8(0)
 4418 16a8 40E0      		ldi r20,lo8(0)
 4419 16aa 6DE0      		ldi r22,lo8(13)
 4420 16ac 70E0      		ldi r23,hi8(13)
 4421 16ae 81E0      		ldi r24,lo8(1)
 4422 16b0 0E94 0000 		call CommunicationError
 4423 16b4 8093 0000 		sts uart_errorCode,r24
 4425               	.LM417:
 4426 16b8 6FE7      		ldi r22,lo8(127)
 4427 16ba 70E0      		ldi r23,hi8(127)
 4428 16bc C701      		movw r24,r14
 4429 16be 0E94 0000 		call clearString
 4430 16c2 00C0      		rjmp .L396
 4431               	.L394:
 4433               	.LM418:
 4434 16c4 1A82      		std Y+2,__zero_reg__
 4435 16c6 1982      		std Y+1,__zero_reg__
 4437               	.LM419:
 4438 16c8 6E01      		movw r12,r28
 4439 16ca 0894      		sec
 4440 16cc C11C      		adc r12,__zero_reg__
 4441 16ce D11C      		adc r13,__zero_reg__
 4442 16d0 A601      		movw r20,r12
 4443 16d2 60E0      		ldi r22,lo8(.LC3)
 4444 16d4 70E0      		ldi r23,hi8(.LC3)
 4445 16d6 C701      		movw r24,r14
 4446 16d8 0E94 0000 		call strtok_r
 4447 16dc DC01      		movw r26,r24
 4449               	.LM420:
 4450 16de 892B      		or r24,r25
 4451 16e0 01F4      		brne .+2
 4452 16e2 00C0      		rjmp .L415
 4453 16e4 00E0      		ldi r16,lo8(setParameter)
 4454 16e6 10E0      		ldi r17,hi8(setParameter)
 4455 16e8 FF24      		clr r15
 4456 16ea 00C0      		rjmp .L400
 4457               	.L417:
 4459               	.LM421:
 4460 16ec 075E      		subi r16,lo8(-(25))
 4461 16ee 1F4F      		sbci r17,hi8(-(25))
 4463               	.LM422:
 4464 16f0 1097      		sbiw r26,0
 4465 16f2 01F0      		breq .L416
 4466               	.L400:
 4468               	.LM423:
 4469 16f4 FD01      		movw r30,r26
 4470 16f6 0190      		ld __tmp_reg__,Z+
 4471 16f8 0020      		tst __tmp_reg__
 4472 16fa 01F4      		brne .-6
 4473 16fc 3197      		sbiw r30,1
 4474 16fe EA1B      		sub r30,r26
 4475 1700 FB0B      		sbc r31,r27
 4476 1702 7A97      		sbiw r30,26
 4477 1704 00F4      		brsh .L410
 4479               	.LM424:
 4480 1706 49E1      		ldi r20,lo8(25)
 4481 1708 50E0      		ldi r21,hi8(25)
 4482 170a BD01      		movw r22,r26
 4483 170c C801      		movw r24,r16
 4484 170e 0E94 0000 		call strncpy
 4486               	.LM425:
 4487 1712 A601      		movw r20,r12
 4488 1714 60E0      		ldi r22,lo8(.LC3)
 4489 1716 70E0      		ldi r23,hi8(.LC3)
 4490 1718 80E0      		ldi r24,lo8(0)
 4491 171a 90E0      		ldi r25,hi8(0)
 4492 171c 0E94 0000 		call strtok_r
 4493 1720 DC01      		movw r26,r24
 4495               	.LM426:
 4496 1722 F394      		inc r15
 4498               	.LM427:
 4499 1724 8EE0      		ldi r24,lo8(14)
 4500 1726 F816      		cp r15,r24
 4501 1728 01F4      		brne .L417
 4503               	.LM428:
 4504 172a 00E0      		ldi r16,lo8(0)
 4505 172c 10E0      		ldi r17,hi8(0)
 4506 172e 20E0      		ldi r18,lo8(0)
 4507 1730 30E0      		ldi r19,hi8(0)
 4508 1732 40E0      		ldi r20,lo8(0)
 4509 1734 60E2      		ldi r22,lo8(32)
 4510 1736 70E0      		ldi r23,hi8(32)
 4511               	.L414:
 4512 1738 81E0      		ldi r24,lo8(1)
 4513 173a 0E94 0000 		call CommunicationError
 4514 173e 8093 0000 		sts uart_errorCode,r24
 4516               	.LM429:
 4517 1742 6FE7      		ldi r22,lo8(127)
 4518 1744 70E0      		ldi r23,hi8(127)
 4519 1746 80E0      		ldi r24,lo8(decrypt_uartString)
 4520 1748 90E0      		ldi r25,hi8(decrypt_uartString)
 4521 174a 0E94 0000 		call clearString
 4522 174e 00C0      		rjmp .L396
 4523               	.L410:
 4525               	.LM430:
 4526 1750 00E0      		ldi r16,lo8(0)
 4527 1752 10E0      		ldi r17,hi8(0)
 4528 1754 20E0      		ldi r18,lo8(0)
 4529 1756 30E0      		ldi r19,hi8(0)
 4530 1758 40E0      		ldi r20,lo8(0)
 4531 175a 6DE0      		ldi r22,lo8(13)
 4532 175c 70E0      		ldi r23,hi8(13)
 4533 175e 00C0      		rjmp .L414
 4534               	.L416:
 4536               	.LM431:
 4537 1760 0F2D      		mov r16,r15
 4538 1762 1127      		clr r17
 4539 1764 07FD      		sbrc r16,7
 4540 1766 1095      		com r17
 4541               	.L399:
 4543               	.LM432:
 4544 1768 8091 0000 		lds r24,debug
 4545 176c 8230      		cpi r24,lo8(2)
 4546 176e 00F0      		brlo .L406
 4547 1770 8091 0000 		lds r24,debugMask
 4548 1774 9091 0000 		lds r25,(debugMask)+1
 4549 1778 A091 0000 		lds r26,(debugMask)+2
 4550 177c B091 0000 		lds r27,(debugMask)+3
 4551 1780 FAE0      		ldi r31,10
 4552 1782 B695      	1:	lsr r27
 4553 1784 A795      		ror r26
 4554 1786 9795      		ror r25
 4555 1788 8795      		ror r24
 4556 178a FA95      		dec r31
 4557 178c 01F4      		brne 1b
 4558 178e 80FD      		sbrc r24,0
 4559 1790 00C0      		rjmp .L418
 4560               	.L406:
 4562               	.LM433:
 4563 1792 6FE7      		ldi r22,lo8(127)
 4564 1794 70E0      		ldi r23,hi8(127)
 4565 1796 80E0      		ldi r24,lo8(decrypt_uartString)
 4566 1798 90E0      		ldi r25,hi8(decrypt_uartString)
 4567 179a 0E94 0000 		call clearString
 4568 179e 00C0      		rjmp .L396
 4569               	.L415:
 4571               	.LM434:
 4572 17a0 FF24      		clr r15
 4573 17a2 00E0      		ldi r16,lo8(0)
 4574 17a4 10E0      		ldi r17,hi8(0)
 4575 17a6 00C0      		rjmp .L399
 4576               	.L418:
 4578               	.LM435:
 4579 17a8 8F2D      		mov r24,r15
 4580 17aa 9927      		clr r25
 4581 17ac 0197      		sbiw r24,1
 4582 17ae 9F93      		push r25
 4583 17b0 8F93      		push r24
 4584 17b2 80E0      		ldi r24,lo8(.LC2)
 4585 17b4 90E0      		ldi r25,hi8(.LC2)
 4586 17b6 9F93      		push r25
 4587 17b8 8F93      		push r24
 4588 17ba 89EC      		ldi r24,lo8(713)
 4589 17bc 92E0      		ldi r25,hi8(713)
 4590 17be 9F93      		push r25
 4591 17c0 8F93      		push r24
 4592 17c2 80E0      		ldi r24,lo8(__c.3056)
 4593 17c4 90E0      		ldi r25,hi8(__c.3056)
 4594 17c6 9F93      		push r25
 4595 17c8 8F93      		push r24
 4596 17ca 8EE7      		ldi r24,lo8(126)
 4597 17cc 90E0      		ldi r25,hi8(126)
 4598 17ce 9F93      		push r25
 4599 17d0 8F93      		push r24
 4600 17d2 80E0      		ldi r24,lo8(uart_message_string)
 4601 17d4 90E0      		ldi r25,hi8(uart_message_string)
 4602 17d6 9F93      		push r25
 4603 17d8 8F93      		push r24
 4604 17da 0E94 0000 		call snprintf_P
 4606               	.LM436:
 4607 17de 60E0      		ldi r22,lo8(0)
 4608 17e0 70E0      		ldi r23,hi8(0)
 4609 17e2 80E0      		ldi r24,lo8(0)
 4610 17e4 90E0      		ldi r25,hi8(0)
 4611 17e6 0E94 0000 		call UART0_Send_Message_String
 4612 17ea 8DB7      		in r24,__SP_L__
 4613 17ec 9EB7      		in r25,__SP_H__
 4614 17ee 0C96      		adiw r24,12
 4615 17f0 0FB6      		in __tmp_reg__,__SREG__
 4616 17f2 F894      		cli
 4617 17f4 9EBF      		out __SP_H__,r25
 4618 17f6 0FBE      		out __SREG__,__tmp_reg__
 4619 17f8 8DBF      		out __SP_L__,r24
 4620 17fa 00C0      		rjmp .L406
 4621               	.L396:
 4623               	.LM437:
 4624 17fc C801      		movw r24,r16
 4625               	/* epilogue: frame size=2 */
 4626 17fe 2296      		adiw r28,2
 4627 1800 0FB6      		in __tmp_reg__,__SREG__
 4628 1802 F894      		cli
 4629 1804 DEBF      		out __SP_H__,r29
 4630 1806 0FBE      		out __SREG__,__tmp_reg__
 4631 1808 CDBF      		out __SP_L__,r28
 4632 180a DF91      		pop r29
 4633 180c CF91      		pop r28
 4634 180e 1F91      		pop r17
 4635 1810 0F91      		pop r16
 4636 1812 FF90      		pop r15
 4637 1814 EF90      		pop r14
 4638 1816 DF90      		pop r13
 4639 1818 CF90      		pop r12
 4640 181a 0895      		ret
 4641               	/* epilogue end (size=15) */
 4642               	/* function Decrypt_Uart_String size 221 (190) */
 4649               	.Lscope27:
 4651               	.global	Process_Uart_Event
 4653               	Process_Uart_Event:
 4655               	.LM438:
 4656               	/* prologue: frame size=0 */
 4657 181c 0F93      		push r16
 4658 181e 1F93      		push r17
 4659 1820 CF93      		push r28
 4660 1822 DF93      		push r29
 4661               	/* prologue end (size=4) */
 4663               	.LM439:
 4664 1824 0E94 0000 		call Decrypt_Uart_String
 4666               	.LM440:
 4667 1828 1816      		cp __zero_reg__,r24
 4668 182a 04F0      		brlt .+2
 4669 182c 00C0      		rjmp .L420
 4671               	.LM441:
 4672 182e E091 0000 		lds r30,ptr_uartStruct
 4673 1832 F091 0000 		lds r31,(ptr_uartStruct)+1
 4674 1836 8150      		subi r24,lo8(-(-1))
 4675 1838 838F      		std Z+27,r24
 4677               	.LM442:
 4678 183a 0091 0000 		lds r16,ptr_uartStruct
 4679 183e 1091 0000 		lds r17,(ptr_uartStruct)+1
 4680 1842 C0E0      		ldi r28,lo8(setParameter)
 4681 1844 D0E0      		ldi r29,hi8(setParameter)
 4682 1846 CE01      		movw r24,r28
 4683 1848 0E94 0000 		call Parse_Keyword
 4684 184c F801      		movw r30,r16
 4685 184e 828F      		std Z+26,r24
 4687               	.LM443:
 4688 1850 8091 0000 		lds r24,debug
 4689 1854 8230      		cpi r24,lo8(2)
 4690 1856 00F0      		brlo .L422
 4691 1858 8091 0000 		lds r24,debugMask
 4692 185c 9091 0000 		lds r25,(debugMask)+1
 4693 1860 A091 0000 		lds r26,(debugMask)+2
 4694 1864 B091 0000 		lds r27,(debugMask)+3
 4695 1868 87FD      		sbrc r24,7
 4696 186a 00C0      		rjmp .L438
 4697               	.L422:
 4699               	.LM444:
 4700 186c E091 0000 		lds r30,ptr_uartStruct
 4701 1870 F091 0000 		lds r31,(ptr_uartStruct)+1
 4702 1874 828D      		ldd r24,Z+26
 4703 1876 87FD      		sbrc r24,7
 4704 1878 00C0      		rjmp .L439
 4706               	.LM445:
 4707 187a 8831      		cpi r24,lo8(24)
 4708 187c 01F0      		breq .L429
 4709 187e 8931      		cpi r24,lo8(25)
 4710 1880 04F4      		brge .L430
 4711 1882 8B30      		cpi r24,lo8(11)
 4712 1884 01F0      		breq .L428
 4713 1886 8C30      		cpi r24,lo8(12)
 4714 1888 04F0      		brlt .+2
 4715 188a 00C0      		rjmp .L431
 4716 188c 8750      		subi r24,lo8(-(-7))
 4717 188e 8330      		cpi r24,lo8(3)
 4718 1890 00F0      		brlo .L428
 4719               	.L427:
 4721               	.LM446:
 4722 1892 80E0      		ldi r24,lo8(setParameter)
 4723 1894 90E0      		ldi r25,hi8(setParameter)
 4724 1896 0E94 0000 		call Convert_UartData_to_UartStruct
 4726               	.LM447:
 4727 189a 8091 0000 		lds r24,ptr_uartStruct
 4728 189e 9091 0000 		lds r25,(ptr_uartStruct)+1
 4729 18a2 0E94 0000 		call Check_Parameter
 4730 18a6 8130      		cpi r24,lo8(1)
 4731 18a8 01F0      		breq .L437
 4733               	.LM448:
 4734 18aa 8091 0000 		lds r24,ptr_uartStruct
 4735 18ae 9091 0000 		lds r25,(ptr_uartStruct)+1
 4736 18b2 0E94 0000 		call Check_Error
 4737 18b6 00C0      		rjmp .L420
 4738               	.L432:
 4740               	.LM449:
 4741 18b8 8532      		cpi r24,lo8(37)
 4742 18ba 01F0      		breq .L429
 4743 18bc 8832      		cpi r24,lo8(40)
 4744 18be 01F4      		brne .L427
 4745               	.L429:
 4747               	.LM450:
 4748 18c0 CF01      		movw r24,r30
 4749 18c2 0E94 0000 		call Choose_Function
 4750 18c6 00C0      		rjmp .L420
 4751               	.L430:
 4753               	.LM451:
 4754 18c8 8332      		cpi r24,lo8(35)
 4755 18ca 01F0      		breq .L429
 4756 18cc 8432      		cpi r24,lo8(36)
 4757 18ce 04F4      		brge .L432
 4758 18d0 8E31      		cpi r24,lo8(30)
 4759 18d2 01F0      		breq .L429
 4760 18d4 8F31      		cpi r24,lo8(31)
 4761 18d6 01F4      		brne .L427
 4762               	.L428:
 4764               	.LM452:
 4765 18d8 0E94 0000 		call ConvertUartDataToOwiStruct
 4766 18dc 8823      		tst r24
 4767 18de 01F0      		breq .+2
 4768 18e0 00C0      		rjmp .L420
 4769               	.L437:
 4771               	.LM453:
 4772 18e2 8091 0000 		lds r24,ptr_uartStruct
 4773 18e6 9091 0000 		lds r25,(ptr_uartStruct)+1
 4774 18ea 0E94 0000 		call Choose_Function
 4775 18ee 00C0      		rjmp .L420
 4776               	.L438:
 4778               	.LM454:
 4779 18f0 E091 0000 		lds r30,ptr_uartStruct
 4780 18f4 F091 0000 		lds r31,(ptr_uartStruct)+1
 4781 18f8 828D      		ldd r24,Z+26
 4782 18fa 9927      		clr r25
 4783 18fc 87FD      		sbrc r24,7
 4784 18fe 9095      		com r25
 4785 1900 9F93      		push r25
 4786 1902 8F93      		push r24
 4787 1904 DF93      		push r29
 4788 1906 CF93      		push r28
 4789 1908 80E0      		ldi r24,lo8(.LC2)
 4790 190a 90E0      		ldi r25,hi8(.LC2)
 4791 190c 9F93      		push r25
 4792 190e 8F93      		push r24
 4793 1910 8BE4      		ldi r24,lo8(587)
 4794 1912 92E0      		ldi r25,hi8(587)
 4795 1914 9F93      		push r25
 4796 1916 8F93      		push r24
 4797 1918 80E0      		ldi r24,lo8(__c.3014)
 4798 191a 90E0      		ldi r25,hi8(__c.3014)
 4799 191c 9F93      		push r25
 4800 191e 8F93      		push r24
 4801 1920 8EE7      		ldi r24,lo8(126)
 4802 1922 90E0      		ldi r25,hi8(126)
 4803 1924 9F93      		push r25
 4804 1926 8F93      		push r24
 4805 1928 80E0      		ldi r24,lo8(uart_message_string)
 4806 192a 90E0      		ldi r25,hi8(uart_message_string)
 4807 192c 9F93      		push r25
 4808 192e 8F93      		push r24
 4809 1930 0E94 0000 		call snprintf_P
 4811               	.LM455:
 4812 1934 60E0      		ldi r22,lo8(0)
 4813 1936 70E0      		ldi r23,hi8(0)
 4814 1938 80E0      		ldi r24,lo8(0)
 4815 193a 90E0      		ldi r25,hi8(0)
 4816 193c 0E94 0000 		call UART0_Send_Message_String
 4817 1940 8DB7      		in r24,__SP_L__
 4818 1942 9EB7      		in r25,__SP_H__
 4819 1944 0E96      		adiw r24,14
 4820 1946 0FB6      		in __tmp_reg__,__SREG__
 4821 1948 F894      		cli
 4822 194a 9EBF      		out __SP_H__,r25
 4823 194c 0FBE      		out __SREG__,__tmp_reg__
 4824 194e 8DBF      		out __SP_L__,r24
 4825 1950 00C0      		rjmp .L422
 4826               	.L431:
 4828               	.LM456:
 4829 1952 8E30      		cpi r24,lo8(14)
 4830 1954 01F0      		breq .+2
 4831 1956 00C0      		rjmp .L427
 4832 1958 00C0      		rjmp .L428
 4833               	.L439:
 4835               	.LM457:
 4836 195a CF01      		movw r24,r30
 4837 195c 0E94 0000 		call Check_Error
 4838               	.L420:
 4840               	.LM458:
 4841 1960 0E94 0000 		call Reset_SetParameter
 4843               	.LM459:
 4844 1964 8091 0000 		lds r24,ptr_uartStruct
 4845 1968 9091 0000 		lds r25,(ptr_uartStruct)+1
 4846 196c 0E94 0000 		call Reset_UartStruct
 4848               	.LM460:
 4849 1970 6FE7      		ldi r22,lo8(127)
 4850 1972 70E0      		ldi r23,hi8(127)
 4851 1974 80E0      		ldi r24,lo8(decrypt_uartString)
 4852 1976 90E0      		ldi r25,hi8(decrypt_uartString)
 4853 1978 0E94 0000 		call clearString
 4854               	/* epilogue: frame size=0 */
 4855 197c DF91      		pop r29
 4856 197e CF91      		pop r28
 4857 1980 1F91      		pop r17
 4858 1982 0F91      		pop r16
 4859 1984 0895      		ret
 4860               	/* epilogue end (size=5) */
 4861               	/* function Process_Uart_Event size 180 (171) */
 4866               	.Lscope28:
 4869               	.global	toggle_pin
 4871               	toggle_pin:
 4873               	.LM461:
 4874               	/* prologue: frame size=0 */
 4875               	/* prologue end (size=0) */
 4876               	.LBB51:
 4877               	.LBB52:
 4878               	.LBB53:
 4879               	.LBB54:
 4881               	.Ltext1:
   1:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****    Copyright (c) 2007 Joerg Wunsch
   3:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****    All rights reserved.
   4:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
   5:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****    Redistribution and use in source and binary forms, with or without
   6:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****    modification, are permitted provided that the following conditions are met:
   7:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
   8:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****    * Redistributions of source code must retain the above copyright
   9:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****      notice, this list of conditions and the following disclaimer.
  10:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  11:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****    * Redistributions in binary form must reproduce the above copyright
  12:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****      notice, this list of conditions and the following disclaimer in
  13:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****      the documentation and/or other materials provided with the
  14:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****      distribution.
  15:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  16:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****    * Neither the name of the copyright holders nor the names of
  17:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****      contributors may be used to endorse or promote products derived
  18:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****      from this software without specific prior written permission.
  19:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  20:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  24:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****   POSSIBILITY OF SUCH DAMAGE. */
  31:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  32:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** /* $Id: delay_basic.h,v 1.1 2007/05/13 21:23:20 joerg_wunsch Exp $ */
  33:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  34:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_
  35:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1
  36:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  37:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** #include <inttypes.h>
  38:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  39:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** /** \file */
  40:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** /** \defgroup util_delay_basic <util/delay_basic.h>: Basic busy-wait delay loops
  41:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     \code
  42:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     #include <util/delay_basic.h>
  43:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     \endcode
  44:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  45:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     The functions in this header file implement simple delay loops
  46:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     that perform a busy-waiting.  They are typically used to
  47:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     facilitate short delays in the program execution.  They are
  48:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     implemented as count-down loops with a well-known CPU cycle
  49:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     count per loop iteration.  As such, no other processing can
  50:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     occur simultaneously.  It should be kept in mind that the
  51:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     functions described here do not disable interrupts.
  52:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  53:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     In general, for long delays, the use of hardware timers is
  54:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     much preferrable, as they free the CPU, and allow for
  55:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     concurrent processing of other events while the timer is
  56:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     running.  However, in particular for very short delays, the
  57:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     overhead of setting up a hardware timer is too much compared
  58:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     to the overall delay time.
  59:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  60:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     Two inline functions are provided for the actual delay algorithms.
  61:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  62:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** */
  63:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  64:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** #if !defined(__DOXYGEN__)
  65:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
  66:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
  67:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** #endif
  68:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  69:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
  70:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  71:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     Delay loop using an 8-bit counter \c __count, so up to 256
  72:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     iterations are possible.  (The value 256 would have to be passed
  73:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     as 0.)  The loop executes three CPU cycles per iteration, not
  74:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     including the overhead the compiler needs to setup the counter
  75:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     register.
  76:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  77:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
  78:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     can be achieved.
  79:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** */
  80:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** void
  81:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** _delay_loop_1(uint8_t __count)
  82:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** {
  83:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 	__asm__ volatile (
  84:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 		"1: dec %0" "\n\t"
  85:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 		"brne 1b"
  86:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 		: "=r" (__count)
  87:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 		: "0" (__count)
  88:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 	);
  89:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** }
  90:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  91:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
  92:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  93:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     Delay loop using a 16-bit counter \c __count, so up to 65536
  94:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     iterations are possible.  (The value 65536 would have to be
  95:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     passed as 0.)  The loop executes four CPU cycles per iteration,
  96:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     not including the overhead the compiler requires to setup the
  97:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     counter register pair.
  98:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 
  99:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
 100:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****     milliseconds can be achieved.
 101:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h ****  */
 102:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** void
 103:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** _delay_loop_2(uint16_t __count)
 104:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** {
 105:/opt/cross/lib/gcc/avr/4.1.2/../../../../avr/include/util/delay_basic.h **** 	__asm__ volatile (
 4883               	.LM462:
 4884 1986 88EA      		ldi r24,lo8(25000)
 4885 1988 91E6      		ldi r25,hi8(25000)
 4886               	/* #APP */
 4887 198a 0197      		1: sbiw r24,1
 4888 198c 01F4      		brne 1b
 4889               	/* #NOAPP */
 4890 198e 20E0      		ldi r18,lo8(0)
 4891 1990 30E0      		ldi r19,hi8(0)
 4892 1992 E8EA      		ldi r30,lo8(25000)
 4893 1994 F1E6      		ldi r31,hi8(25000)
 4894               	.L441:
 4895               	.LBE54:
 4896               	.LBE53:
 4897               	.LBE52:
 4898               	.LBE51:
 4899               	.LBB55:
 4900               	.LBB56:
 4901               	.LBB57:
 4902               	.LBB58:
 4904               	.LM463:
 4905 1996 CF01      		movw r24,r30
 4906               	/* #APP */
 4907 1998 0197      		1: sbiw r24,1
 4908 199a 01F4      		brne 1b
 4909               	/* #NOAPP */
 4910 199c 2F5F      		subi r18,lo8(-(1))
 4911 199e 3F4F      		sbci r19,hi8(-(1))
 4912               	.LBE58:
 4913               	.LBE57:
 4914               	.LBE56:
 4915               	.LBE55:
 4917               	.Ltext2:
 4919               	.LM464:
 4920 19a0 2333      		cpi r18,51
 4921 19a2 3105      		cpc r19,__zero_reg__
 4922 19a4 01F4      		brne .L441
 4924               	.LM465:
 4925 19a6 83E0      		ldi r24,lo8(3)
 4926 19a8 80B9      		out 32-0x20,r24
 4927               	/* epilogue: frame size=0 */
 4928 19aa 0895      		ret
 4929               	/* epilogue end (size=1) */
 4930               	/* function toggle_pin size 23 (22) */
 4938               	.Lscope29:
 4939               	.global	responseKeywords
 4940               		.section	.progmem.data,"a",@progbits
 4943               	responseKeywords:
 4944 0000 0000      		.word	responseKeyword00
 4945               	.global	commandKeywords
 4948               	commandKeywords:
 4949 0002 0000      		.word	commandKeyword00
 4950 0004 0000      		.word	commandKeyword01
 4951 0006 0000      		.word	commandKeyword02
 4952 0008 0000      		.word	commandKeyword03
 4953 000a 0000      		.word	commandKeyword04
 4954 000c 0000      		.word	commandKeyword05
 4955 000e 0000      		.word	commandKeyword06
 4956 0010 0000      		.word	commandKeyword07
 4957 0012 0000      		.word	commandKeyword08
 4958 0014 0000      		.word	commandKeyword09
 4959 0016 0000      		.word	commandKeyword10
 4960 0018 0000      		.word	commandKeyword11
 4961 001a 0000      		.word	commandKeyword12
 4962 001c 0000      		.word	commandKeyword13
 4963 001e 0000      		.word	commandKeyword14
 4964 0020 0000      		.word	commandKeyword15
 4965 0022 0000      		.word	commandKeyword16
 4966 0024 0000      		.word	commandKeyword17
 4967 0026 0000      		.word	commandKeyword18
 4968 0028 0000      		.word	commandKeyword19
 4969 002a 0000      		.word	commandKeyword20
 4970 002c 0000      		.word	commandKeyword21
 4971 002e 0000      		.word	commandKeyword22
 4972 0030 0000      		.word	commandKeyword23
 4973 0032 0000      		.word	commandKeyword24
 4974 0034 0000      		.word	commandKeyword25
 4975 0036 0000      		.word	commandKeyword26
 4976 0038 0000      		.word	commandKeyword27
 4977 003a 0000      		.word	commandKeyword28
 4978 003c 0000      		.word	commandKeyword29
 4979 003e 0000      		.word	commandKeyword30
 4980 0040 0000      		.word	commandKeyword31
 4981 0042 0000      		.word	commandKeyword32
 4982 0044 0000      		.word	commandKeyword33
 4983 0046 0000      		.word	commandKeyword34
 4984 0048 0000      		.word	commandKeyword35
 4985 004a 0000      		.word	commandKeyword36
 4986 004c 0000      		.word	commandKeyword37
 4987 004e 0000      		.word	commandKeyword38
 4988 0050 0000      		.word	commandKeyword39
 4989 0052 0000      		.word	commandKeyword40
 4990 0054 0000      		.word	commandKeyword41
 4991 0056 0000      		.word	commandKeyword42
 4992 0058 0000      		.word	commandKeyword43
 4993 005a 0000      		.word	commandKeyword44
 4994 005c 0000      		.word	commandKeyword45
 4995 005e 0000      		.word	commandKeyword46
 4996 0060 0000      		.word	commandKeyword47
 4997 0062 0000      		.word	commandKeyword48
 4998 0064 0000      		.word	commandKeyword49
 4999               	.global	commandShortDescriptions
 5002               	commandShortDescriptions:
 5003 0066 0000      		.word	commandShortDescription00
 5004 0068 0000      		.word	commandShortDescription01
 5005 006a 0000      		.word	commandShortDescription02
 5006 006c 0000      		.word	commandShortDescription03
 5007 006e 0000      		.word	commandShortDescription04
 5008 0070 0000      		.word	commandShortDescription05
 5009 0072 0000      		.word	commandShortDescription06
 5010 0074 0000      		.word	commandShortDescription07
 5011 0076 0000      		.word	commandShortDescription08
 5012 0078 0000      		.word	commandShortDescription09
 5013 007a 0000      		.word	commandShortDescription10
 5014 007c 0000      		.word	commandShortDescription11
 5015 007e 0000      		.word	commandShortDescription12
 5016 0080 0000      		.word	commandShortDescription13
 5017 0082 0000      		.word	commandShortDescription14
 5018 0084 0000      		.word	commandShortDescription15
 5019 0086 0000      		.word	commandShortDescription16
 5020 0088 0000      		.word	commandShortDescription17
 5021 008a 0000      		.word	commandShortDescription18
 5022 008c 0000      		.word	commandShortDescription19
 5023 008e 0000      		.word	commandShortDescription20
 5024 0090 0000      		.word	commandShortDescription21
 5025 0092 0000      		.word	commandShortDescription22
 5026 0094 0000      		.word	commandShortDescription23
 5027 0096 0000      		.word	commandShortDescription24
 5028 0098 0000      		.word	commandShortDescription25
 5029 009a 0000      		.word	commandShortDescription26
 5030 009c 0000      		.word	commandShortDescription27
 5031 009e 0000      		.word	commandShortDescription28
 5032 00a0 0000      		.word	commandShortDescription29
 5033 00a2 0000      		.word	commandShortDescription30
 5034 00a4 0000      		.word	commandShortDescription31
 5035 00a6 0000      		.word	commandShortDescription32
 5036 00a8 0000      		.word	commandShortDescription33
 5037 00aa 0000      		.word	commandShortDescription34
 5038 00ac 0000      		.word	commandShortDescription35
 5039 00ae 0000      		.word	commandShortDescription36
 5040 00b0 0000      		.word	commandShortDescription37
 5041 00b2 0000      		.word	commandShortDescription38
 5042 00b4 0000      		.word	commandShortDescription39
 5043 00b6 0000      		.word	commandShortDescription40
 5044 00b8 0000      		.word	commandShortDescription41
 5045 00ba 0000      		.word	commandShortDescription42
 5046 00bc 0000      		.word	commandShortDescription43
 5047 00be 0000      		.word	commandShortDescription44
 5048 00c0 0000      		.word	commandShortDescription45
 5049 00c2 0000      		.word	commandShortDescription46
 5050 00c4 0000      		.word	commandShortDescription47
 5051 00c6 0000      		.word	commandShortDescription48
 5052 00c8 0000      		.word	commandShortDescription49
 5053               	.global	commandImplementations
 5056               	commandImplementations:
 5057 00ca 0000      		.word	commandImplementation00
 5058 00cc 0000      		.word	commandImplementation01
 5059 00ce 0000      		.word	commandImplementation02
 5060 00d0 0000      		.word	commandImplementation03
 5061 00d2 0000      		.word	commandImplementation04
 5062 00d4 0000      		.word	commandImplementation05
 5063 00d6 0000      		.word	commandImplementation06
 5064 00d8 0000      		.word	commandImplementation07
 5065 00da 0000      		.word	commandImplementation08
 5066 00dc 0000      		.word	commandImplementation09
 5067 00de 0000      		.word	commandImplementation10
 5068 00e0 0000      		.word	commandImplementation11
 5069 00e2 0000      		.word	commandImplementation12
 5070 00e4 0000      		.word	commandImplementation13
 5071 00e6 0000      		.word	commandImplementation14
 5072 00e8 0000      		.word	commandImplementation15
 5073 00ea 0000      		.word	commandImplementation16
 5074 00ec 0000      		.word	commandImplementation17
 5075 00ee 0000      		.word	commandImplementation18
 5076 00f0 0000      		.word	commandImplementation19
 5077 00f2 0000      		.word	commandImplementation20
 5078 00f4 0000      		.word	commandImplementation21
 5079 00f6 0000      		.word	commandImplementation22
 5080 00f8 0000      		.word	commandImplementation23
 5081 00fa 0000      		.word	commandImplementation24
 5082 00fc 0000      		.word	commandImplementation25
 5083 00fe 0000      		.word	commandImplementation26
 5084 0100 0000      		.word	commandImplementation27
 5085 0102 0000      		.word	commandImplementation28
 5086 0104 0000      		.word	commandImplementation29
 5087 0106 0000      		.word	commandImplementation30
 5088 0108 0000      		.word	commandImplementation31
 5089 010a 0000      		.word	commandImplementation32
 5090 010c 0000      		.word	commandImplementation33
 5091 010e 0000      		.word	commandImplementation34
 5092 0110 0000      		.word	commandImplementation35
 5093 0112 0000      		.word	commandImplementation36
 5094 0114 0000      		.word	commandImplementation37
 5095 0116 0000      		.word	commandImplementation38
 5096 0118 0000      		.word	commandImplementation39
 5097 011a 0000      		.word	commandImplementation40
 5098 011c 0000      		.word	commandImplementation41
 5099 011e 0000      		.word	commandImplementation42
 5100 0120 0000      		.word	commandImplementation43
 5101 0122 0000      		.word	commandImplementation44
 5102 0124 0000      		.word	commandImplementation45
 5103 0126 0000      		.word	commandImplementation46
 5104 0128 0000      		.word	commandImplementation47
 5105 012a 0000      		.word	commandImplementation48
 5106 012c 0000      		.word	commandImplementation49
 5107               	.global	serial_error
 5110               	serial_error:
 5111 012e 0000      		.word	se00
 5112 0130 0000      		.word	se01
 5113 0132 0000      		.word	se02
 5114 0134 0000      		.word	se03
 5115 0136 0000      		.word	se04
 5116 0138 0000      		.word	se05
 5117 013a 0000      		.word	se06
 5118 013c 0000      		.word	se07
 5119 013e 0000      		.word	se08
 5120 0140 0000      		.word	se09
 5121 0142 0000      		.word	se10
 5122 0144 0000      		.word	se11
 5123 0146 0000      		.word	se12
 5124 0148 0000      		.word	se13
 5125 014a 0000      		.word	se14
 5126 014c 0000      		.word	se15
 5127 014e 0000      		.word	se16
 5128 0150 0000      		.word	se17
 5129 0152 0000      		.word	se18
 5130 0154 0000      		.word	se19
 5131 0156 0000      		.word	se20
 5132 0158 0000      		.word	se21
 5133 015a 0000      		.word	se22
 5134 015c 0000      		.word	se23
 5135 015e 0000      		.word	se24
 5136 0160 0000      		.word	se25
 5137 0162 0000      		.word	se26
 5138 0164 0000      		.word	se27
 5139 0166 0000      		.word	se28
 5140 0168 0000      		.word	se29
 5141 016a 0000      		.word	se30
 5142 016c 0000      		.word	se31
 5143 016e 0000      		.word	se32
 5144               	.global	serial_error_number
 5145               		.data
 5148               	serial_error_number:
 5149 001a 0B        		.byte	11
 5150 001b 0C        		.byte	12
 5151 001c 0D        		.byte	13
 5152 001d 0E        		.byte	14
 5153 001e 0F        		.byte	15
 5154 001f 10        		.byte	16
 5155 0020 11        		.byte	17
 5156 0021 12        		.byte	18
 5157 0022 13        		.byte	19
 5158 0023 6E        		.byte	110
 5159 0024 6F        		.byte	111
 5160 0025 70        		.byte	112
 5161 0026 71        		.byte	113
 5162 0027 72        		.byte	114
 5163 0028 73        		.byte	115
 5164 0029 74        		.byte	116
 5165 002a 75        		.byte	117
 5166 002b 76        		.byte	118
 5167 002c 77        		.byte	119
 5168 002d 78        		.byte	120
 5169 002e 79        		.byte	121
 5170 002f 7A        		.byte	122
 5171 0030 7B        		.byte	123
 5172 0031 7C        		.byte	124
 5173 0032 7D        		.byte	125
 5174 0033 7E        		.byte	126
 5175 0034 7F        		.byte	127
 5176 0035 80        		.byte	-128
 5177 0036 81        		.byte	-127
 5178 0037 82        		.byte	-126
 5179 0038 83        		.byte	-125
 5180               	.global	can_error
 5181               		.section	.progmem.data
 5184               	can_error:
 5185 0170 0000      		.word	ce00
 5186 0172 0000      		.word	ce01
 5187 0174 0000      		.word	ce02
 5188 0176 0000      		.word	ce03
 5189 0178 0000      		.word	ce04
 5190 017a 0000      		.word	ce05
 5191 017c 0000      		.word	ce06
 5192 017e 0000      		.word	ce07
 5193 0180 0000      		.word	ce08
 5194 0182 0000      		.word	ce09
 5195               	.global	can_error_number
 5196               		.data
 5199               	can_error_number:
 5200 0039 15        		.byte	21
 5201 003a 16        		.byte	22
 5202 003b 17        		.byte	23
 5203 003c 18        		.byte	24
 5204 003d 19        		.byte	25
 5205 003e 1A        		.byte	26
 5206 003f 1B        		.byte	27
 5207 0040 1C        		.byte	28
 5208 0041 1D        		.byte	29
 5209 0042 D2        		.byte	-46
 5210               	.global	mob_error
 5211               		.section	.progmem.data
 5214               	mob_error:
 5215 0184 0000      		.word	me00
 5216 0186 0000      		.word	me01
 5217 0188 0000      		.word	me02
 5218               	.global	mob_error_number
 5219               		.data
 5222               	mob_error_number:
 5223 0043 1F        		.byte	31
 5224 0044 20        		.byte	32
 5225 0045 21        		.byte	33
 5226               	.global	general_error
 5227               		.section	.progmem.data
 5230               	general_error:
 5231 018a 0000      		.word	ge00
 5232 018c 0000      		.word	ge01
 5233 018e 0000      		.word	ge02
 5234 0190 0000      		.word	ge03
 5235 0192 0000      		.word	ge04
 5236 0194 0000      		.word	ge05
 5237 0196 0000      		.word	ge06
 5238 0198 0000      		.word	ge07
 5239 019a 0000      		.word	ge08
 5240 019c 0000      		.word	ge09
 5241 019e 0000      		.word	ge10
 5242               	.global	general_error_number
 5243               		.data
 5246               	general_error_number:
 5247 0046 2800      		.word	40
 5248 0048 2900      		.word	41
 5249 004a 2A00      		.word	42
 5250 004c 2B00      		.word	43
 5251 004e 2C00      		.word	44
 5252 0050 2D00      		.word	45
 5253 0052 2E00      		.word	46
 5254 0054 2F00      		.word	47
 5255 0056 3000      		.word	48
 5256 0058 3100      		.word	49
 5257 005a 9A01      		.word	410
 5258               	.global	errorTypes
 5259               		.section	.progmem.data
 5262               	errorTypes:
 5263 01a0 0000      		.word	errorType00
 5264 01a2 0000      		.word	errorType01
 5265 01a4 0000      		.word	errorType02
 5266 01a6 0000      		.word	errorType03
 5267 01a8 0000      		.word	errorType04
 5270               	__c.3760:
 5271 01aa 4445 4255 		.ascii	"DEBUG (%4i, %s) getNumericLength: len"
 5271      4720 2825 
 5271      3469 2C20 
 5271      2573 2920 
 5271      6765 744E 
 5272 01cf 6774 6820 		.string	"gth 0 - value is followed by non-space character ASCII: %i, '%c'"
 5272      3020 2D20 
 5272      7661 6C75 
 5272      6520 6973 
 5272      2066 6F6C 
 5275               	__c.3758:
 5276 0210 4445 4255 		.string	"DEBUG (%4i, %s) getNumericLength: found length is %i"
 5276      4720 2825 
 5276      3469 2C20 
 5276      2573 2920 
 5276      6765 744E 
 5279               	__c.3753:
 5280 0245 3058 00   		.string	"0X"
 5283               	__c.3751:
 5284 0248 3078 00   		.string	"0x"
 5287               	__c.3738:
 5288 024b 2000      		.string	" "
 5291               	__c.3693:
 5292 024d 2000      		.string	" "
 5295               	__c.3688:
 5296 024f 2000      		.string	" "
 5299               	__c.3666:
 5300 0251 5245 4356 		.string	"RECV PING mechanism is %s"
 5300      2050 494E 
 5300      4720 6D65 
 5300      6368 616E 
 5300      6973 6D20 
 5303               	__c.3624:
 5304 026b 5265 6C61 		.string	"Relay Init Failed"
 5304      7920 496E 
 5304      6974 2046 
 5304      6169 6C65 
 5304      6400 
 5307               	__c.3565:
 5308 027d 202A 2A2A 		.string	" *** "
 5308      2000 
 5311               	__c.3563:
 5312 0283 2573 2025 		.string	"%s %i "
 5312      6920 00
 5315               	__c.3561:
 5316 028a 4445 42   		.ascii	"DEB"
 5317 028d 5547 2028 		.string	"UG (%4i, %s) CommunicationError wrong error type %i... returning"
 5317      2534 692C 
 5317      2025 7329 
 5317      2043 6F6D 
 5317      6D75 6E69 
 5320               	__c.3551:
 5321 02ce 2573 2025 		.string	"%s %i "
 5321      6920 00
 5324               	__c.3545:
 5325 02d5 2573 2025 		.string	"%s %i "
 5325      6920 00
 5328               	__c.3539:
 5329 02dc 2573 2025 		.string	"%s %i "
 5329      6920 00
 5332               	__c.3532:
 5333 02e3 2573 2025 		.string	"%s %i "
 5333      6920 00
 5336               	__c.3529:
 5337 02ea 2573 2220 		.string	"%s\" ---"
 5337      2D2D 2D00 
 5340               	__c.3524:
 5341 02f2 2573 2573 		.string	"%s%s%s"
 5341      2573 00
 5344               	__c.3522:
 5345 02f9 2022 00   		.string	" \""
 5348               	__c.3519:
 5349 02fc 2200      		.string	"\""
 5352               	__c.3517:
 5353 02fe 2022 00   		.string	" \""
 5356               	__c.3512:
 5357 0301 4445 42   		.ascii	"DEB"
 5358 0304 5547 2028 		.string	"UG (%4i, %s) CommunicationError alternatives: NULL ... returning"
 5358      2534 692C 
 5358      2025 7329 
 5358      2043 6F6D 
 5358      6D75 6E69 
 5361               	__c.3506:
 5362 0345 4445      		.ascii	"DE"
 5363 0347 4255 4720 		.string	"BUG (%4i, %s) CommunicationError wrong error index ... returning"
 5363      2825 3469 
 5363      2C20 2573 
 5363      2920 436F 
 5363      6D6D 756E 
 5364               		.lcomm index.3461,2
 5365               		.lcomm counter0AScheduler.3375,1
 5366               		.lcomm counter0A.3374,1
 5367               		.lcomm counter1.3364,1
 5368               		.lcomm counter0.3363,1
 5369               		.lcomm error.3234,1
 5372               	__c.3156:
 5373 0388 4445 4255 		.string	"DEBUG (%4i, %s) fcn:ParseKeyworkd keyword %s doesn't match "
 5373      4720 2825 
 5373      3469 2C20 
 5373      2573 2920 
 5373      6663 6E3A 
 5376               	__c.3151:
 5377 03c4 4445 4255 		.string	"DEBUG (%4i, %s) fcn:ParseKeyword keyword %s matches "
 5377      4720 2825 
 5377      3469 2C20 
 5377      2573 2920 
 5377      6663 6E3A 
 5380               	__c.3145:
 5381 03f9 4445 4255 		.string	"DEBUG (%4i, %s) Parse_Keyword %s"
 5381      4720 2825 
 5381      3469 2C20 
 5381      2573 2920 
 5381      5061 7273 
 5382               		.lcomm keywordNumber.3144,1
 5385               	__c.3056:
 5386 041a 4445 4255 		.string	"DEBUG (%4i, %s) found %i arguments "
 5386      4720 2825 
 5386      3469 2C20 
 5386      2573 2920 
 5386      666F 756E 
 5389               	__c.3014:
 5390 043e 4445 4255 		.string	"DEBUG (%4i, %s) keywordIndex of %s is %i"
 5390      4720 2825 
 5390      3469 2C20 
 5390      2573 2920 
 5390      6B65 7977 
 5391               		.comm ErrorCodes,1,1
 5394               	responseKeyword00:
 5395 0467 5245 4356 		.string	"RECV"
 5395      00
 5398               	commandKeyword00:
 5399 046c 5345 4E44 		.string	"SEND"
 5399      00
 5402               	commandKeyword01:
 5403 0471 5355 4253 		.string	"SUBS"
 5403      00
 5406               	commandKeyword02:
 5407 0476 5553 5542 		.string	"USUB"
 5407      00
 5410               	commandKeyword03:
 5411 047b 5354 4154 		.string	"STAT"
 5411      00
 5414               	commandKeyword04:
 5415 0480 5247 5752 		.string	"RGWR"
 5415      00
 5418               	commandKeyword05:
 5419 0485 5247 5245 		.string	"RGRE"
 5419      00
 5422               	commandKeyword06:
 5423 048a 5241 4443 		.string	"RADC"
 5423      00
 5426               	commandKeyword07:
 5427 048f 4F57 4144 		.string	"OWAD"
 5427      00
 5430               	commandKeyword08:
 5431 0494 4F57 4453 		.string	"OWDS"
 5431      00
 5434               	commandKeyword09:
 5435 0499 4F57 4F4E 		.string	"OWON"
 5435      00
 5438               	commandKeyword10:
 5439 049e 4F57 4C53 		.string	"OWLS"
 5439      00
 5442               	commandKeyword11:
 5443 04a3 4F57 5353 		.string	"OWSS"
 5443      00
 5446               	commandKeyword12:
 5447 04a8 5253 4554 		.string	"RSET"
 5447      00
 5450               	commandKeyword13:
 5451 04ad 5049 4E47 		.string	"PING"
 5451      00
 5454               	commandKeyword14:
 5455 04b2 4F57 5450 		.string	"OWTP"
 5455      00
 5458               	commandKeyword15:
 5459 04b7 4F57 5350 		.string	"OWSP"
 5459      00
 5462               	commandKeyword16:
 5463 04bc 4144 5350 		.string	"ADSP"
 5463      00
 5466               	commandKeyword17:
 5467 04c1 524C 534C 		.string	"RLSL"
 5467      00
 5470               	commandKeyword18:
 5471 04c6 524C 5348 		.string	"RLSH"
 5471      00
 5474               	commandKeyword19:
 5475 04cb 524C 5349 		.string	"RLSI"
 5475      00
 5478               	commandKeyword20:
 5479 04d0 524C 534F 		.string	"RLSO"
 5479      00
 5482               	commandKeyword21:
 5483 04d5 4442 474C 		.string	"DBGL"
 5483      00
 5486               	commandKeyword22:
 5487 04da 4442 474D 		.string	"DBGM"
 5487      00
 5490               	commandKeyword23:
 5491 04df 4A54 4147 		.string	"JTAG"
 5491      00
 5494               	commandKeyword24:
 5495 04e4 4845 4C50 		.string	"HELP"
 5495      00
 5498               	commandKeyword25:
 5499 04e9 4F57 5452 		.string	"OWTR"
 5499      00
 5502               	commandKeyword26:
 5503 04ee 4F57 5250 		.string	"OWRP"
 5503      00
 5506               	commandKeyword27:
 5507 04f3 4144 5250 		.string	"ADRP"
 5507      00
 5510               	commandKeyword28:
 5511 04f8 4445 4247 		.string	"DEBG"
 5511      00
 5514               	commandKeyword29:
 5515 04fd 5041 5241 		.string	"PARA"
 5515      00
 5518               	commandKeyword30:
 5519 0502 5348 4F57 		.string	"SHOW"
 5519      00
 5522               	commandKeyword31:
 5523 0507 4F57 4D52 		.string	"OWMR"
 5523      00
 5526               	commandKeyword32:
 5527 050c 4F57 5043 		.string	"OWPC"
 5527      00
 5530               	commandKeyword33:
 5531 0511 4F57 5262 		.string	"OWRb"
 5531      00
 5534               	commandKeyword34:
 5535 0516 4F57 5242 		.string	"OWRB"
 5535      00
 5538               	commandKeyword35:
 5539 051b 4F57 5343 		.string	"OWSC"
 5539      00
 5542               	commandKeyword36:
 5543 0520 4F57 5342 		.string	"OWSB"
 5543      00
 5546               	commandKeyword37:
 5547 0525 4F57 5341 		.string	"OWSA"
 5547      00
 5550               	commandKeyword38:
 5551 052a 5744 4F47 		.string	"WDOG"
 5551      00
 5554               	commandKeyword39:
 5555 052f 4558 4954 		.string	"EXIT"
 5555      00
 5558               	commandKeyword40:
 5559 0534 524C 5448 		.string	"RLTH"
 5559      00
 5562               	commandKeyword41:
 5563 0539 434D 4431 		.string	"CMD1"
 5563      00
 5566               	commandKeyword42:
 5567 053e 434D 4432 		.string	"CMD2"
 5567      00
 5570               	commandKeyword43:
 5571 0543 434D 4433 		.string	"CMD3"
 5571      00
 5574               	commandKeyword44:
 5575 0548 434D 4434 		.string	"CMD4"
 5575      00
 5578               	commandKeyword45:
 5579 054d 434D 4435 		.string	"CMD5"
 5579      00
 5582               	commandKeyword46:
 5583 0552 434D 4436 		.string	"CMD6"
 5583      00
 5586               	commandKeyword47:
 5587 0557 434D 4437 		.string	"CMD7"
 5587      00
 5590               	commandKeyword48:
 5591 055c 434D 4438 		.string	"CMD8"
 5591      00
 5594               	commandKeyword49:
 5595 0561 434D 4439 		.string	"CMD9"
 5595      00
 5598               	commandShortDescription00:
 5599 0566 4341 4E2D 		.string	"CAN-ID ID-Range [RTR <nBytes> D0 .. D7]"
 5599      4944 2049 
 5599      442D 5261 
 5599      6E67 6520 
 5599      5B52 5452 
 5602               	commandShortDescription01:
 5603 058e 4341 4E2D 		.string	"CAN-ID ID-Range"
 5603      4944 2049 
 5603      442D 5261 
 5603      6E67 6500 
 5606               	commandShortDescription02:
 5607 059e 4341 4E2D 		.string	"CAN-ID ID-Range"
 5607      4944 2049 
 5607      442D 5261 
 5607      6E67 6500 
 5610               	commandShortDescription03:
 5611 05ae 5B49 445D 		.string	"[ID]"
 5611      00
 5614               	commandShortDescription04:
 5615 05b3 5265 6769 		.string	"Register Value"
 5615      7374 6572 
 5615      2056 616C 
 5615      7565 00
 5618               	commandShortDescription05:
 5619 05c2 5265 6769 		.string	"Register"
 5619      7374 6572 
 5619      00
 5622               	commandShortDescription06:
 5623 05cb 5B3C 4144 		.string	"[<ADC Channel>]"
 5623      4320 4368 
 5623      616E 6E65 
 5623      6C3E 5D00 
 5626               	commandShortDescription07:
 5627 05db 5B49 4420 		.string	"[ID [flag_conv [flag_init]]]"
 5627      5B66 6C61 
 5627      675F 636F 
 5627      6E76 205B 
 5627      666C 6167 
 5630               	commandShortDescription08:
 5631 05f8 5B49 445D 		.string	"[ID]"
 5631      00
 5634               	commandShortDescription09:
 5635 05fd 5B49 445D 		.string	"[ID]"
 5635      00
 5638               	commandShortDescription10:
 5639 0602 5B3C 4661 		.string	"[<Family Code>]"
 5639      6D69 6C79 
 5639      2043 6F64 
 5639      653E 5D00 
 5642               	commandShortDescription11:
 5643 0612 5B49 445D 		.string	"[ID]"
 5643      00
 5646               	commandShortDescription12:
 5647 0617 00        		.string	""
 5650               	commandShortDescription13:
 5651 0618 00        		.string	""
 5654               	commandShortDescription14:
 5655 0619 5B49 4420 		.string	"[ID [flag_conv [flag_init]] | <command_keyword> [arguments]]"
 5655      5B66 6C61 
 5655      675F 636F 
 5655      6E76 205B 
 5655      666C 6167 
 5658               	commandShortDescription15:
 5659 0656 3C62 7573 		.string	"<bus mask>"
 5659      206D 6173 
 5659      6B3E 00
 5662               	commandShortDescription16:
 5663 0661 3C62 7573 		.string	"<bus mask>"
 5663      206D 6173 
 5663      6B3E 00
 5666               	commandShortDescription17:
 5667 066c 3C62 7573 		.string	"<bus> [val]"
 5667      3E20 5B76 
 5667      616C 5D00 
 5670               	commandShortDescription18:
 5671 0678 3C62 7573 		.string	"<bus> [val]"
 5671      3E20 5B76 
 5671      616C 5D00 
 5674               	commandShortDescription19:
 5675 0684 3C62 7573 		.string	"<bus> [pins]"
 5675      3E20 5B70 
 5675      696E 735D 
 5675      00
 5678               	commandShortDescription20:
 5679 0691 3C62 7573 		.string	"<bus> [pins]"
 5679      3E20 5B70 
 5679      696E 735D 
 5679      00
 5682               	commandShortDescription21:
 5683 069e 5B6C 6576 		.string	"[level]"
 5683      656C 5D00 
 5686               	commandShortDescription22:
 5687 06a6 5B6D 6173 		.string	"[mask]"
 5687      6B5D 00
 5690               	commandShortDescription23:
 5691 06ad 00        		.string	""
 5694               	commandShortDescription24:
 5695 06ae 5B43 4D4E 		.string	"[CMND]"
 5695      445D 00
 5698               	commandShortDescription25:
 5699 06b5 5B49 445D 		.string	"[ID] ..."
 5699      202E 2E2E 
 5699      00
 5702               	commandShortDescription26:
 5703 06be 00        		.string	""
 5706               	commandShortDescription27:
 5707 06bf 00        		.string	""
 5710               	commandShortDescription28:
 5711 06c0 5B6C 6576 		.string	"[level [mask]]"
 5711      656C 205B 
 5711      6D61 736B 
 5711      5D5D 00
 5714               	commandShortDescription29:
 5715 06cf 7061 7261 		.string	"parasitic device test [???]"
 5715      7369 7469 
 5715      6320 6465 
 5715      7669 6365 
 5715      2074 6573 
 5718               	commandShortDescription30:
 5719 06eb 5B6B 6579 		.string	"[key_word]"
 5719      5F77 6F72 
 5719      645D 00
 5722               	commandShortDescription31:
 5723 06f6 4944 203C 		.string	"ID <pin_mask>"
 5723      7069 6E5F 
 5723      6D61 736B 
 5723      3E00 
 5726               	commandShortDescription32:
 5727 0704 5B3C 7069 		.string	"[<pin_mask>]"
 5727      6E5F 6D61 
 5727      736B 3E5D 
 5727      00
 5730               	commandShortDescription33:
 5731 0711 3C70 696E 		.string	"<pin_mask> <delay> <timeout: N (times delay)> "
 5731      5F6D 6173 
 5731      6B3E 203C 
 5731      6465 6C61 
 5731      793E 203C 
 5734               	commandShortDescription34:
 5735 0740 5B3C 7069 		.string	"[<pin_mask>]"
 5735      6E5F 6D61 
 5735      736B 3E5D 
 5735      00
 5738               	commandShortDescription35:
 5739 074d 3C63 6F6D 		.string	"<command_key_word> [<pin_mask> [arguments ...]] "
 5739      6D61 6E64 
 5739      5F6B 6579 
 5739      5F77 6F72 
 5739      643E 205B 
 5742               	commandShortDescription36:
 5743 077e 3C62 7974 		.string	"<byte> [<pin_mask>]"
 5743      653E 205B 
 5743      3C70 696E 
 5743      5F6D 6173 
 5743      6B3E 5D00 
 5746               	commandShortDescription37:
 5747 0792 3C63 6F6D 		.string	"<command_key_word> [arguments] "
 5747      6D61 6E64 
 5747      5F6B 6579 
 5747      5F77 6F72 
 5747      643E 205B 
 5750               	commandShortDescription38:
 5751 07b2 5B3F 3F3F 		.string	"[???]"
 5751      5D00 
 5754               	commandShortDescription39:
 5755 07b8 00        		.string	""
 5758               	commandShortDescription40:
 5759 07b9 5B63 6F6D 		.string	"[command_key_word] <value>"
 5759      6D61 6E64 
 5759      5F6B 6579 
 5759      5F77 6F72 
 5759      645D 203C 
 5762               	commandShortDescription41:
 5763 07d4 5B3F 3F3F 		.string	"[???]"
 5763      5D00 
 5766               	commandShortDescription42:
 5767 07da 5B3F 3F3F 		.string	"[???]"
 5767      5D00 
 5770               	commandShortDescription43:
 5771 07e0 5B3F 3F3F 		.string	"[???]"
 5771      5D00 
 5774               	commandShortDescription44:
 5775 07e6 5B3F 3F3F 		.string	"[???]"
 5775      5D00 
 5778               	commandShortDescription45:
 5779 07ec 5B3F 3F3F 		.string	"[???]"
 5779      5D00 
 5782               	commandShortDescription46:
 5783 07f2 5B3F 3F3F 		.string	"[???]"
 5783      5D00 
 5786               	commandShortDescription47:
 5787 07f8 5B3F 3F3F 		.string	"[???]"
 5787      5D00 
 5790               	commandShortDescription48:
 5791 07fe 5B3F 3F3F 		.string	"[???]"
 5791      5D00 
 5794               	commandShortDescription49:
 5795 0804 5B3F 3F3F 		.string	"[???]"
 5795      5D00 
 5798               	commandImplementation00:
 5799 080a 00        		.string	""
 5802               	commandImplementation01:
 5803 080b 00        		.string	""
 5806               	commandImplementation02:
 5807 080c 00        		.string	""
 5810               	commandImplementation03:
 5811 080d 2D2D 2D20 		.string	"--- not implemented"
 5811      6E6F 7420 
 5811      696D 706C 
 5811      656D 656E 
 5811      7465 6400 
 5814               	commandImplementation04:
 5815 0821 00        		.string	""
 5818               	commandImplementation05:
 5819 0822 00        		.string	""
 5822               	commandImplementation06:
 5823 0823 00        		.string	""
 5826               	commandImplementation07:
 5827 0824 00        		.string	""
 5830               	commandImplementation08:
 5831 0825 2D2D 2D20 		.string	"--- [ID] not implemented"
 5831      5B49 445D 
 5831      206E 6F74 
 5831      2069 6D70 
 5831      6C65 6D65 
 5834               	commandImplementation09:
 5835 083e 2D2D 2D20 		.string	"--- [ID] not implemented"
 5835      5B49 445D 
 5835      206E 6F74 
 5835      2069 6D70 
 5835      6C65 6D65 
 5838               	commandImplementation10:
 5839 0857 00        		.string	""
 5842               	commandImplementation11:
 5843 0858 2D2D 2D20 		.string	"--- [ID] not implemented"
 5843      5B49 445D 
 5843      206E 6F74 
 5843      2069 6D70 
 5843      6C65 6D65 
 5846               	commandImplementation12:
 5847 0871 00        		.string	""
 5850               	commandImplementation13:
 5851 0872 00        		.string	""
 5854               	commandImplementation14:
 5855 0873 00        		.string	""
 5858               	commandImplementation15:
 5859 0874 00        		.string	""
 5862               	commandImplementation16:
 5863 0875 2D2D 2D20 		.string	"--- not implemented"
 5863      6E6F 7420 
 5863      696D 706C 
 5863      656D 656E 
 5863      7465 6400 
 5866               	commandImplementation17:
 5867 0889 2D2D 2D20 		.string	"--- not implemented"
 5867      6E6F 7420 
 5867      696D 706C 
 5867      656D 656E 
 5867      7465 6400 
 5870               	commandImplementation18:
 5871 089d 2D2D 2D20 		.string	"--- not implemented"
 5871      6E6F 7420 
 5871      696D 706C 
 5871      656D 656E 
 5871      7465 6400 
 5874               	commandImplementation19:
 5875 08b1 2D2D 2D20 		.string	"--- not implemented"
 5875      6E6F 7420 
 5875      696D 706C 
 5875      656D 656E 
 5875      7465 6400 
 5878               	commandImplementation20:
 5879 08c5 2D2D 2D20 		.string	"--- not implemented"
 5879      6E6F 7420 
 5879      696D 706C 
 5879      656D 656E 
 5879      7465 6400 
 5882               	commandImplementation21:
 5883 08d9 00        		.string	""
 5886               	commandImplementation22:
 5887 08da 00        		.string	""
 5890               	commandImplementation23:
 5891 08db 2D2D 2D20 		.string	"--- not implemented"
 5891      6E6F 7420 
 5891      696D 706C 
 5891      656D 656E 
 5891      7465 6400 
 5894               	commandImplementation24:
 5895 08ef 00        		.string	""
 5898               	commandImplementation25:
 5899 08f0 2D2D 2D20 		.string	"--- not implemented"
 5899      6E6F 7420 
 5899      696D 706C 
 5899      656D 656E 
 5899      7465 6400 
 5902               	commandImplementation26:
 5903 0904 00        		.string	""
 5906               	commandImplementation27:
 5907 0905 2D2D 2D20 		.string	"--- not implemented"
 5907      6E6F 7420 
 5907      696D 706C 
 5907      656D 656E 
 5907      7465 6400 
 5910               	commandImplementation28:
 5911 0919 00        		.string	""
 5914               	commandImplementation29:
 5915 091a 00        		.string	""
 5918               	commandImplementation30:
 5919 091b 00        		.string	""
 5922               	commandImplementation31:
 5923 091c 2D2D 2D20 		.string	"--- not implemented"
 5923      6E6F 7420 
 5923      696D 706C 
 5923      656D 656E 
 5923      7465 6400 
 5926               	commandImplementation32:
 5927 0930 2D2D 2D20 		.string	"--- not implemented"
 5927      6E6F 7420 
 5927      696D 706C 
 5927      656D 656E 
 5927      7465 6400 
 5930               	commandImplementation33:
 5931 0944 2D2D 2D20 		.string	"--- not implemented"
 5931      6E6F 7420 
 5931      696D 706C 
 5931      656D 656E 
 5931      7465 6400 
 5934               	commandImplementation34:
 5935 0958 2D2D 2D20 		.string	"--- not implemented"
 5935      6E6F 7420 
 5935      696D 706C 
 5935      656D 656E 
 5935      7465 6400 
 5938               	commandImplementation35:
 5939 096c 2D2D 2D20 		.string	"--- not implemented"
 5939      6E6F 7420 
 5939      696D 706C 
 5939      656D 656E 
 5939      7465 6400 
 5942               	commandImplementation36:
 5943 0980 2D2D 2D20 		.string	"--- not implemented"
 5943      6E6F 7420 
 5943      696D 706C 
 5943      656D 656E 
 5943      7465 6400 
 5946               	commandImplementation37:
 5947 0994 2D2D 2D20 		.string	"--- not implemented"
 5947      6E6F 7420 
 5947      696D 706C 
 5947      656D 656E 
 5947      7465 6400 
 5950               	commandImplementation38:
 5951 09a8 2D2D 2D20 		.string	"--- not implemented"
 5951      6E6F 7420 
 5951      696D 706C 
 5951      656D 656E 
 5951      7465 6400 
 5954               	commandImplementation39:
 5955 09bc 2D2D 2D20 		.string	"--- not implemented"
 5955      6E6F 7420 
 5955      696D 706C 
 5955      656D 656E 
 5955      7465 6400 
 5958               	commandImplementation40:
 5959 09d0 00        		.string	""
 5962               	commandImplementation41:
 5963 09d1 2D2D 2D20 		.string	"--- not implemented"
 5963      6E6F 7420 
 5963      696D 706C 
 5963      656D 656E 
 5963      7465 6400 
 5966               	commandImplementation42:
 5967 09e5 2D2D 2D20 		.string	"--- not implemented"
 5967      6E6F 7420 
 5967      696D 706C 
 5967      656D 656E 
 5967      7465 6400 
 5970               	commandImplementation43:
 5971 09f9 2D2D 2D20 		.string	"--- not implemented"
 5971      6E6F 7420 
 5971      696D 706C 
 5971      656D 656E 
 5971      7465 6400 
 5974               	commandImplementation44:
 5975 0a0d 2D2D 2D20 		.string	"--- not implemented"
 5975      6E6F 7420 
 5975      696D 706C 
 5975      656D 656E 
 5975      7465 6400 
 5978               	commandImplementation45:
 5979 0a21 2D2D 2D20 		.string	"--- not implemented"
 5979      6E6F 7420 
 5979      696D 706C 
 5979      656D 656E 
 5979      7465 6400 
 5982               	commandImplementation46:
 5983 0a35 2D2D 2D20 		.string	"--- not implemented"
 5983      6E6F 7420 
 5983      696D 706C 
 5983      656D 656E 
 5983      7465 6400 
 5986               	commandImplementation47:
 5987 0a49 2D2D 2D20 		.string	"--- not implemented"
 5987      6E6F 7420 
 5987      696D 706C 
 5987      656D 656E 
 5987      7465 6400 
 5990               	commandImplementation48:
 5991 0a5d 2D2D 2D20 		.string	"--- not implemented"
 5991      6E6F 7420 
 5991      696D 706C 
 5991      656D 656E 
 5991      7465 6400 
 5994               	commandImplementation49:
 5995 0a71 2D2D 2D20 		.string	"--- not implemented"
 5995      6E6F 7420 
 5995      696D 706C 
 5995      656D 656E 
 5995      7465 6400 
 5998               	se00:
 5999 0a85 6E6F 2076 		.string	"no valid command name"
 5999      616C 6964 
 5999      2063 6F6D 
 5999      6D61 6E64 
 5999      206E 616D 
 6002               	se01:
 6003 0a9b 4944 2069 		.string	"ID is too long"
 6003      7320 746F 
 6003      6F20 6C6F 
 6003      6E67 00
 6006               	se02:
 6007 0aaa 6D61 736B 		.string	"mask is too long"
 6007      2069 7320 
 6007      746F 6F20 
 6007      6C6F 6E67 
 6007      00
 6010               	se03:
 6011 0abb 7274 7220 		.string	"rtr is too long"
 6011      6973 2074 
 6011      6F6F 206C 
 6011      6F6E 6700 
 6014               	se04:
 6015 0acb 6C65 6E67 		.string	"length is  too long"
 6015      7468 2069 
 6015      7320 2074 
 6015      6F6F 206C 
 6015      6F6E 6700 
 6018               	se05:
 6019 0adf 6461 7461 		.string	"data 0 is too long"
 6019      2030 2069 
 6019      7320 746F 
 6019      6F20 6C6F 
 6019      6E67 00
 6022               	se06:
 6023 0af2 6461 7461 		.string	"data 1 is too long"
 6023      2031 2069 
 6023      7320 746F 
 6023      6F20 6C6F 
 6023      6E67 00
 6026               	se07:
 6027 0b05 6461 7461 		.string	"data 2 is too long"
 6027      2032 2069 
 6027      7320 746F 
 6027      6F20 6C6F 
 6027      6E67 00
 6030               	se08:
 6031 0b18 6461 7461 		.string	"data 3 is too long"
 6031      2033 2069 
 6031      7320 746F 
 6031      6F20 6C6F 
 6031      6E67 00
 6034               	se09:
 6035 0b2b 6461 7461 		.string	"data 4 is too long"
 6035      2034 2069 
 6035      7320 746F 
 6035      6F20 6C6F 
 6035      6E67 00
 6038               	se10:
 6039 0b3e 6461 7461 		.string	"data 5 is too long"
 6039      2035 2069 
 6039      7320 746F 
 6039      6F20 6C6F 
 6039      6E67 00
 6042               	se11:
 6043 0b51 6461 7461 		.string	"data 6 is too long"
 6043      2036 2069 
 6043      7320 746F 
 6043      6F20 6C6F 
 6043      6E67 00
 6046               	se12:
 6047 0b64 6461 7461 		.string	"data 7 is too long"
 6047      2037 2069 
 6047      7320 746F 
 6047      6F20 6C6F 
 6047      6E67 00
 6050               	se13:
 6051 0b77 636F 6D6D 		.string	"command is too long"
 6051      616E 6420 
 6051      6973 2074 
 6051      6F6F 206C 
 6051      6F6E 6700 
 6054               	se14:
 6055 0b8b 6172 6775 		.string	"argument has invalid type"
 6055      6D65 6E74 
 6055      2068 6173 
 6055      2069 6E76 
 6055      616C 6964 
 6058               	se15:
 6059 0ba5 4944 2068 		.string	"ID has invalid type"
 6059      6173 2069 
 6059      6E76 616C 
 6059      6964 2074 
 6059      7970 6500 
 6062               	se16:
 6063 0bb9 6D61 736B 		.string	"mask has invalid type"
 6063      2068 6173 
 6063      2069 6E76 
 6063      616C 6964 
 6063      2074 7970 
 6066               	se17:
 6067 0bcf 7274 7220 		.string	"rtr has invalid type"
 6067      6861 7320 
 6067      696E 7661 
 6067      6C69 6420 
 6067      7479 7065 
 6070               	se18:
 6071 0be4 6C65 6E67 		.string	"length has invalid type"
 6071      7468 2068 
 6071      6173 2069 
 6071      6E76 616C 
 6071      6964 2074 
 6074               	se19:
 6075 0bfc 6461 7461 		.string	"data 0 has invalid type"
 6075      2030 2068 
 6075      6173 2069 
 6075      6E76 616C 
 6075      6964 2074 
 6078               	se20:
 6079 0c14 6461 7461 		.string	"data 1 has invalid type"
 6079      2031 2068 
 6079      6173 2069 
 6079      6E76 616C 
 6079      6964 2074 
 6082               	se21:
 6083 0c2c 6461 7461 		.string	"data 2 has invalid type"
 6083      2032 2068 
 6083      6173 2069 
 6083      6E76 616C 
 6083      6964 2074 
 6086               	se22:
 6087 0c44 6461 7461 		.string	"data 3 has invalid type"
 6087      2033 2068 
 6087      6173 2069 
 6087      6E76 616C 
 6087      6964 2074 
 6090               	se23:
 6091 0c5c 6461 7461 		.string	"data 4 has invalid type"
 6091      2034 2068 
 6091      6173 2069 
 6091      6E76 616C 
 6091      6964 2074 
 6094               	se24:
 6095 0c74 6461 7461 		.string	"data 5 has invalid type"
 6095      2035 2068 
 6095      6173 2069 
 6095      6E76 616C 
 6095      6964 2074 
 6098               	se25:
 6099 0c8c 6461 7461 		.string	"data 6 has invalid type"
 6099      2036 2068 
 6099      6173 2069 
 6099      6E76 616C 
 6099      6964 2074 
 6102               	se26:
 6103 0ca4 6461 7461 		.string	"data 7 has invalid type"
 6103      2037 2068 
 6103      6173 2069 
 6103      6E76 616C 
 6103      6964 2074 
 6106               	se27:
 6107 0cbc 756E 6465 		.string	"undefined error type"
 6107      6669 6E65 
 6107      6420 6572 
 6107      726F 7220 
 6107      7479 7065 
 6110               	se28:
 6111 0cd1 6669 7273 		.string	"first value is too long"
 6111      7420 7661 
 6111      6C75 6520 
 6111      6973 2074 
 6111      6F6F 206C 
 6114               	se29:
 6115 0ce9 7365 636F 		.string	"second value is too long"
 6115      6E64 2076 
 6115      616C 7565 
 6115      2069 7320 
 6115      746F 6F20 
 6118               	se30:
 6119 0d02 6172 6775 		.string	"arguments have invalid type"
 6119      6D65 6E74 
 6119      7320 6861 
 6119      7665 2069 
 6119      6E76 616C 
 6122               	se31:
 6123 0d1e 6172 6775 		.string	"argument(s) exceed(s) allowed boundary"
 6123      6D65 6E74 
 6123      2873 2920 
 6123      6578 6365 
 6123      6564 2873 
 6126               	se32:
 6127 0d45 746F 6F20 		.string	"too many arguments"
 6127      6D61 6E79 
 6127      2061 7267 
 6127      756D 656E 
 6127      7473 00
 6130               	ce00:
 6131 0d58 4361 6E5F 		.string	"Can_Bus is off"
 6131      4275 7320 
 6131      6973 206F 
 6131      6666 00
 6134               	ce01:
 6135 0d67 4361 6E5F 		.string	"Can_Bus is passive"
 6135      4275 7320 
 6135      6973 2070 
 6135      6173 7369 
 6135      7665 00
 6138               	ce02:
 6139 0d7a 4361 6E5F 		.string	"Can_Bus is on"
 6139      4275 7320 
 6139      6973 206F 
 6139      6E00 
 6142               	ce03:
 6143 0d88 4269 7420 		.string	"Bit Error"
 6143      4572 726F 
 6143      7200 
 6146               	ce04:
 6147 0d92 5374 7566 		.string	"Stuff Error"
 6147      6620 4572 
 6147      726F 7200 
 6150               	ce05:
 6151 0d9e 4352 4320 		.string	"CRC Error"
 6151      4572 726F 
 6151      7200 
 6154               	ce06:
 6155 0da8 466F 726D 		.string	"Form Error"
 6155      2045 7272 
 6155      6F72 00
 6158               	ce07:
 6159 0db3 4163 6B6E 		.string	"Acknowledgment Error"
 6159      6F77 6C65 
 6159      6467 6D65 
 6159      6E74 2045 
 6159      7272 6F72 
 6162               	ce08:
 6163 0dc8 4341 4E20 		.string	"CAN was not successfully initialized"
 6163      7761 7320 
 6163      6E6F 7420 
 6163      7375 6363 
 6163      6573 7366 
 6166               	ce09:
 6167 0ded 7469 6D65 		.string	"timeout for CAN communication"
 6167      6F75 7420 
 6167      666F 7220 
 6167      4341 4E20 
 6167      636F 6D6D 
 6170               	me00:
 6171 0e0b 616C 6C20 		.string	"all mailboxes already in use"
 6171      6D61 696C 
 6171      626F 7865 
 6171      7320 616C 
 6171      7265 6164 
 6174               	me01:
 6175 0e28 6D65 7373 		.string	"message ID not found"
 6175      6167 6520 
 6175      4944 206E 
 6175      6F74 2066 
 6175      6F75 6E64 
 6178               	me02:
 6179 0e3d 7468 6973 		.string	"this message already exists"
 6179      206D 6573 
 6179      7361 6765 
 6179      2061 6C72 
 6179      6561 6479 
 6182               	ge00:
 6183 0e59 696E 6974 		.string	"init for timer0 failed"
 6183      2066 6F72 
 6183      2074 696D 
 6183      6572 3020 
 6183      6661 696C 
 6186               	ge01:
 6187 0e70 696E 6974 		.string	"init for timer0A failed"
 6187      2066 6F72 
 6187      2074 696D 
 6187      6572 3041 
 6187      2066 6169 
 6190               	ge02:
 6191 0e88 6661 6D69 		.string	"family code not found"
 6191      6C79 2063 
 6191      6F64 6520 
 6191      6E6F 7420 
 6191      666F 756E 
 6194               	ge03:
 6195 0e9e 616C 6C20 		.string	"all message were read"
 6195      6D65 7373 
 6195      6167 6520 
 6195      7765 7265 
 6195      2072 6561 
 6198               	ge04:
 6199 0eb4 6E6F 2064 		.string	"no device is connected to the bus"
 6199      6576 6963 
 6199      6520 6973 
 6199      2063 6F6E 
 6199      6E65 6374 
 6202               	ge05:
 6203 0ed6 756E 6465 		.string	"undefined bus"
 6203      6669 6E65 
 6203      6420 6275 
 6203      7300 
 6206               	ge06:
 6207 0ee4 6368 616E 		.string	"channel undefined"
 6207      6E65 6C20 
 6207      756E 6465 
 6207      6669 6E65 
 6207      6400 
 6210               	ge07:
 6211 0ef6 7661 6C75 		.string	"value has invalid type"
 6211      6520 6861 
 6211      7320 696E 
 6211      7661 6C69 
 6211      6420 7479 
 6214               	ge08:
 6215 0f0d 6164 6472 		.string	"address has invalid type"
 6215      6573 7320 
 6215      6861 7320 
 6215      696E 7661 
 6215      6C69 6420 
 6218               	ge09:
 6219 0f26 756E 6465 		.string	"undefined family code"
 6219      6669 6E65 
 6219      6420 6661 
 6219      6D69 6C79 
 6219      2063 6F64 
 6222               	ge10:
 6223 0f3c 696E 7661 		.string	"invalid argument"
 6223      6C69 6420 
 6223      6172 6775 
 6223      6D65 6E74 
 6223      00
 6226               	errorType00:
 6227 0f4d 4552 5247 		.string	"ERRG"
 6227      00
 6230               	errorType01:
 6231 0f52 4552 5241 		.string	"ERRA"
 6231      00
 6234               	errorType02:
 6235 0f57 4552 5243 		.string	"ERRC"
 6235      00
 6238               	errorType03:
 6239 0f5c 4552 524D 		.string	"ERRM"
 6239      00
 6242               	errorType04:
 6243 0f61 4552 5255 		.string	"ERRU"
 6243      00
 6506               		.text
 6508               	.Letext0:
 6509               	/* File "api.c": code 3445 = 0x0d75 (3110), prologues 158, epilogues 177 */
DEFINED SYMBOLS
                            *ABS*:00000000 api.c
     /tmp/cccRnaZi.s:3      *ABS*:0000003f __SREG__
     /tmp/cccRnaZi.s:4      *ABS*:0000003e __SP_H__
     /tmp/cccRnaZi.s:5      *ABS*:0000003d __SP_L__
     /tmp/cccRnaZi.s:6      *ABS*:00000000 __tmp_reg__
     /tmp/cccRnaZi.s:7      *ABS*:00000001 __zero_reg__
     /tmp/cccRnaZi.s:143    .text:00000000 UART0_Init
     /tmp/cccRnaZi.s:194    .text:00000028 Timer0_Init
     /tmp/cccRnaZi.s:237    .text:00000042 Timer0A_Init
     /tmp/cccRnaZi.s:289    .text:00000064 Check_Parameter_CanFormat
     /tmp/cccRnaZi.s:438    .text:0000012c Check_Parameter
     /tmp/cccRnaZi.s:482    .text:00000156 Reset_SetParameter
     /tmp/cccRnaZi.s:523    .text:0000017a Reset_UartStruct
     /tmp/cccRnaZi.s:586    .text:000001aa __vector_17
     /tmp/cccRnaZi.s:5367   .bss:00000005 counter0.3363
     /tmp/cccRnaZi.s:5366   .bss:00000004 counter1.3364
     /tmp/cccRnaZi.s:654    .text:000001fa __vector_16
     /tmp/cccRnaZi.s:5365   .bss:00000003 counter0A.3374
     /tmp/cccRnaZi.s:5364   .bss:00000002 counter0AScheduler.3375
     /tmp/cccRnaZi.s:722    .text:0000024a __vector_21
     /tmp/cccRnaZi.s:801    .text:000002ae UART0_Transmit
     /tmp/cccRnaZi.s:825    .text:000002be Init_Port
     /tmp/cccRnaZi.s:907    .text:000002fc clearUartStruct
     /tmp/cccRnaZi.s:971    .text:0000032a clearString
     /tmp/cccRnaZi.s:1017   .text:00000350 UART0_Send_Message_String
                             .bss:00000000 index.3461
     /tmp/cccRnaZi.s:1146   .text:000003f6 keep_alive
     /tmp/cccRnaZi.s:5299   .progmem.data:00000251 __c.3666
     /tmp/cccRnaZi.s:1224   .text:0000045c getNumericLength
     /tmp/cccRnaZi.s:5283   .progmem.data:00000248 __c.3751
     /tmp/cccRnaZi.s:5279   .progmem.data:00000245 __c.3753
     /tmp/cccRnaZi.s:5275   .progmem.data:00000210 __c.3758
     /tmp/cccRnaZi.s:5270   .progmem.data:000001aa __c.3760
     /tmp/cccRnaZi.s:1474   .text:000005fa createReceiveHeader
     /tmp/cccRnaZi.s:4943   .progmem.data:00000000 responseKeywords
     /tmp/cccRnaZi.s:5295   .progmem.data:0000024f __c.3688
     /tmp/cccRnaZi.s:4948   .progmem.data:00000002 commandKeywords
     /tmp/cccRnaZi.s:5291   .progmem.data:0000024d __c.3693
     /tmp/cccRnaZi.s:1621   .text:000006b0 createExtendedSubCommandReceiveResponseHeader
     /tmp/cccRnaZi.s:5287   .progmem.data:0000024b __c.3738
     /tmp/cccRnaZi.s:1713   .text:0000071c Parse_Keyword
     /tmp/cccRnaZi.s:5369   .bss:00000007 keywordNumber.3144
     /tmp/cccRnaZi.s:5372   .progmem.data:00000388 __c.3156
     /tmp/cccRnaZi.s:5380   .progmem.data:000003f9 __c.3145
     /tmp/cccRnaZi.s:5376   .progmem.data:000003c4 __c.3151
     /tmp/cccRnaZi.s:2052   .text:00000924 CommunicationError
     /tmp/cccRnaZi.s:5262   .progmem.data:000001a0 errorTypes
     /tmp/cccRnaZi.s:5307   .progmem.data:0000027d __c.3565
     /tmp/cccRnaZi.s:5315   .progmem.data:0000028a __c.3561
     /tmp/cccRnaZi.s:5361   .progmem.data:00000345 __c.3506
     /tmp/cccRnaZi.s:5344   .progmem.data:000002f9 __c.3522
     /tmp/cccRnaZi.s:5340   .progmem.data:000002f2 __c.3524
     /tmp/cccRnaZi.s:5311   .progmem.data:00000283 __c.3563
     /tmp/cccRnaZi.s:5246   .data:00000046 general_error_number
     /tmp/cccRnaZi.s:5332   .progmem.data:000002e3 __c.3532
     /tmp/cccRnaZi.s:5230   .progmem.data:0000018a general_error
     /tmp/cccRnaZi.s:5352   .progmem.data:000002fe __c.3517
     /tmp/cccRnaZi.s:5348   .progmem.data:000002fc __c.3519
     /tmp/cccRnaZi.s:5356   .progmem.data:00000301 __c.3512
     /tmp/cccRnaZi.s:5336   .progmem.data:000002ea __c.3529
     /tmp/cccRnaZi.s:5148   .data:0000001a serial_error_number
     /tmp/cccRnaZi.s:5328   .progmem.data:000002dc __c.3539
     /tmp/cccRnaZi.s:5110   .progmem.data:0000012e serial_error
     /tmp/cccRnaZi.s:5199   .data:00000039 can_error_number
     /tmp/cccRnaZi.s:5320   .progmem.data:000002ce __c.3551
     /tmp/cccRnaZi.s:5184   .progmem.data:00000170 can_error
     /tmp/cccRnaZi.s:5222   .data:00000043 mob_error_number
     /tmp/cccRnaZi.s:5324   .progmem.data:000002d5 __c.3545
     /tmp/cccRnaZi.s:5214   .progmem.data:00000184 mob_error
     /tmp/cccRnaZi.s:2961   .text:00000e86 Initialization
     /tmp/cccRnaZi.s:5303   .progmem.data:0000026b __c.3624
     /tmp/cccRnaZi.s:3178   .text:00000fc2 Check_Error
     /tmp/cccRnaZi.s:5368   .bss:00000006 error.3234
     /tmp/cccRnaZi.s:3562   .text:000011c4 UART0_Send_Message_String_woLF
     /tmp/cccRnaZi.s:3649   .text:00001238 __vector_18
     /tmp/cccRnaZi.s:3863   .text:0000138c Convert_UartData_to_UartStruct
     /tmp/cccRnaZi.s:4075   .text:00001530 Choose_Function
     /tmp/cccRnaZi.s:4376   .text:00001666 Decrypt_Uart_String
     /tmp/cccRnaZi.s:5385   .progmem.data:0000041a __c.3056
     /tmp/cccRnaZi.s:4653   .text:0000181c Process_Uart_Event
     /tmp/cccRnaZi.s:5389   .progmem.data:0000043e __c.3014
     /tmp/cccRnaZi.s:4871   .text:00001986 toggle_pin
     /tmp/cccRnaZi.s:5394   .progmem.data:00000467 responseKeyword00
     /tmp/cccRnaZi.s:5398   .progmem.data:0000046c commandKeyword00
     /tmp/cccRnaZi.s:5402   .progmem.data:00000471 commandKeyword01
     /tmp/cccRnaZi.s:5406   .progmem.data:00000476 commandKeyword02
     /tmp/cccRnaZi.s:5410   .progmem.data:0000047b commandKeyword03
     /tmp/cccRnaZi.s:5414   .progmem.data:00000480 commandKeyword04
     /tmp/cccRnaZi.s:5418   .progmem.data:00000485 commandKeyword05
     /tmp/cccRnaZi.s:5422   .progmem.data:0000048a commandKeyword06
     /tmp/cccRnaZi.s:5426   .progmem.data:0000048f commandKeyword07
     /tmp/cccRnaZi.s:5430   .progmem.data:00000494 commandKeyword08
     /tmp/cccRnaZi.s:5434   .progmem.data:00000499 commandKeyword09
     /tmp/cccRnaZi.s:5438   .progmem.data:0000049e commandKeyword10
     /tmp/cccRnaZi.s:5442   .progmem.data:000004a3 commandKeyword11
     /tmp/cccRnaZi.s:5446   .progmem.data:000004a8 commandKeyword12
     /tmp/cccRnaZi.s:5450   .progmem.data:000004ad commandKeyword13
     /tmp/cccRnaZi.s:5454   .progmem.data:000004b2 commandKeyword14
     /tmp/cccRnaZi.s:5458   .progmem.data:000004b7 commandKeyword15
     /tmp/cccRnaZi.s:5462   .progmem.data:000004bc commandKeyword16
     /tmp/cccRnaZi.s:5466   .progmem.data:000004c1 commandKeyword17
     /tmp/cccRnaZi.s:5470   .progmem.data:000004c6 commandKeyword18
     /tmp/cccRnaZi.s:5474   .progmem.data:000004cb commandKeyword19
     /tmp/cccRnaZi.s:5478   .progmem.data:000004d0 commandKeyword20
     /tmp/cccRnaZi.s:5482   .progmem.data:000004d5 commandKeyword21
     /tmp/cccRnaZi.s:5486   .progmem.data:000004da commandKeyword22
     /tmp/cccRnaZi.s:5490   .progmem.data:000004df commandKeyword23
     /tmp/cccRnaZi.s:5494   .progmem.data:000004e4 commandKeyword24
     /tmp/cccRnaZi.s:5498   .progmem.data:000004e9 commandKeyword25
     /tmp/cccRnaZi.s:5502   .progmem.data:000004ee commandKeyword26
     /tmp/cccRnaZi.s:5506   .progmem.data:000004f3 commandKeyword27
     /tmp/cccRnaZi.s:5510   .progmem.data:000004f8 commandKeyword28
     /tmp/cccRnaZi.s:5514   .progmem.data:000004fd commandKeyword29
     /tmp/cccRnaZi.s:5518   .progmem.data:00000502 commandKeyword30
     /tmp/cccRnaZi.s:5522   .progmem.data:00000507 commandKeyword31
     /tmp/cccRnaZi.s:5526   .progmem.data:0000050c commandKeyword32
     /tmp/cccRnaZi.s:5530   .progmem.data:00000511 commandKeyword33
     /tmp/cccRnaZi.s:5534   .progmem.data:00000516 commandKeyword34
     /tmp/cccRnaZi.s:5538   .progmem.data:0000051b commandKeyword35
     /tmp/cccRnaZi.s:5542   .progmem.data:00000520 commandKeyword36
     /tmp/cccRnaZi.s:5546   .progmem.data:00000525 commandKeyword37
     /tmp/cccRnaZi.s:5550   .progmem.data:0000052a commandKeyword38
     /tmp/cccRnaZi.s:5554   .progmem.data:0000052f commandKeyword39
     /tmp/cccRnaZi.s:5558   .progmem.data:00000534 commandKeyword40
     /tmp/cccRnaZi.s:5562   .progmem.data:00000539 commandKeyword41
     /tmp/cccRnaZi.s:5566   .progmem.data:0000053e commandKeyword42
     /tmp/cccRnaZi.s:5570   .progmem.data:00000543 commandKeyword43
     /tmp/cccRnaZi.s:5574   .progmem.data:00000548 commandKeyword44
     /tmp/cccRnaZi.s:5578   .progmem.data:0000054d commandKeyword45
     /tmp/cccRnaZi.s:5582   .progmem.data:00000552 commandKeyword46
     /tmp/cccRnaZi.s:5586   .progmem.data:00000557 commandKeyword47
     /tmp/cccRnaZi.s:5590   .progmem.data:0000055c commandKeyword48
     /tmp/cccRnaZi.s:5594   .progmem.data:00000561 commandKeyword49
     /tmp/cccRnaZi.s:5002   .progmem.data:00000066 commandShortDescriptions
     /tmp/cccRnaZi.s:5598   .progmem.data:00000566 commandShortDescription00
     /tmp/cccRnaZi.s:5602   .progmem.data:0000058e commandShortDescription01
     /tmp/cccRnaZi.s:5606   .progmem.data:0000059e commandShortDescription02
     /tmp/cccRnaZi.s:5610   .progmem.data:000005ae commandShortDescription03
     /tmp/cccRnaZi.s:5614   .progmem.data:000005b3 commandShortDescription04
     /tmp/cccRnaZi.s:5618   .progmem.data:000005c2 commandShortDescription05
     /tmp/cccRnaZi.s:5622   .progmem.data:000005cb commandShortDescription06
     /tmp/cccRnaZi.s:5626   .progmem.data:000005db commandShortDescription07
     /tmp/cccRnaZi.s:5630   .progmem.data:000005f8 commandShortDescription08
     /tmp/cccRnaZi.s:5634   .progmem.data:000005fd commandShortDescription09
     /tmp/cccRnaZi.s:5638   .progmem.data:00000602 commandShortDescription10
     /tmp/cccRnaZi.s:5642   .progmem.data:00000612 commandShortDescription11
     /tmp/cccRnaZi.s:5646   .progmem.data:00000617 commandShortDescription12
     /tmp/cccRnaZi.s:5650   .progmem.data:00000618 commandShortDescription13
     /tmp/cccRnaZi.s:5654   .progmem.data:00000619 commandShortDescription14
     /tmp/cccRnaZi.s:5658   .progmem.data:00000656 commandShortDescription15
     /tmp/cccRnaZi.s:5662   .progmem.data:00000661 commandShortDescription16
     /tmp/cccRnaZi.s:5666   .progmem.data:0000066c commandShortDescription17
     /tmp/cccRnaZi.s:5670   .progmem.data:00000678 commandShortDescription18
     /tmp/cccRnaZi.s:5674   .progmem.data:00000684 commandShortDescription19
     /tmp/cccRnaZi.s:5678   .progmem.data:00000691 commandShortDescription20
     /tmp/cccRnaZi.s:5682   .progmem.data:0000069e commandShortDescription21
     /tmp/cccRnaZi.s:5686   .progmem.data:000006a6 commandShortDescription22
     /tmp/cccRnaZi.s:5690   .progmem.data:000006ad commandShortDescription23
     /tmp/cccRnaZi.s:5694   .progmem.data:000006ae commandShortDescription24
     /tmp/cccRnaZi.s:5698   .progmem.data:000006b5 commandShortDescription25
     /tmp/cccRnaZi.s:5702   .progmem.data:000006be commandShortDescription26
     /tmp/cccRnaZi.s:5706   .progmem.data:000006bf commandShortDescription27
     /tmp/cccRnaZi.s:5710   .progmem.data:000006c0 commandShortDescription28
     /tmp/cccRnaZi.s:5714   .progmem.data:000006cf commandShortDescription29
     /tmp/cccRnaZi.s:5718   .progmem.data:000006eb commandShortDescription30
     /tmp/cccRnaZi.s:5722   .progmem.data:000006f6 commandShortDescription31
     /tmp/cccRnaZi.s:5726   .progmem.data:00000704 commandShortDescription32
     /tmp/cccRnaZi.s:5730   .progmem.data:00000711 commandShortDescription33
     /tmp/cccRnaZi.s:5734   .progmem.data:00000740 commandShortDescription34
     /tmp/cccRnaZi.s:5738   .progmem.data:0000074d commandShortDescription35
     /tmp/cccRnaZi.s:5742   .progmem.data:0000077e commandShortDescription36
     /tmp/cccRnaZi.s:5746   .progmem.data:00000792 commandShortDescription37
     /tmp/cccRnaZi.s:5750   .progmem.data:000007b2 commandShortDescription38
     /tmp/cccRnaZi.s:5754   .progmem.data:000007b8 commandShortDescription39
     /tmp/cccRnaZi.s:5758   .progmem.data:000007b9 commandShortDescription40
     /tmp/cccRnaZi.s:5762   .progmem.data:000007d4 commandShortDescription41
     /tmp/cccRnaZi.s:5766   .progmem.data:000007da commandShortDescription42
     /tmp/cccRnaZi.s:5770   .progmem.data:000007e0 commandShortDescription43
     /tmp/cccRnaZi.s:5774   .progmem.data:000007e6 commandShortDescription44
     /tmp/cccRnaZi.s:5778   .progmem.data:000007ec commandShortDescription45
     /tmp/cccRnaZi.s:5782   .progmem.data:000007f2 commandShortDescription46
     /tmp/cccRnaZi.s:5786   .progmem.data:000007f8 commandShortDescription47
     /tmp/cccRnaZi.s:5790   .progmem.data:000007fe commandShortDescription48
     /tmp/cccRnaZi.s:5794   .progmem.data:00000804 commandShortDescription49
     /tmp/cccRnaZi.s:5056   .progmem.data:000000ca commandImplementations
     /tmp/cccRnaZi.s:5798   .progmem.data:0000080a commandImplementation00
     /tmp/cccRnaZi.s:5802   .progmem.data:0000080b commandImplementation01
     /tmp/cccRnaZi.s:5806   .progmem.data:0000080c commandImplementation02
     /tmp/cccRnaZi.s:5810   .progmem.data:0000080d commandImplementation03
     /tmp/cccRnaZi.s:5814   .progmem.data:00000821 commandImplementation04
     /tmp/cccRnaZi.s:5818   .progmem.data:00000822 commandImplementation05
     /tmp/cccRnaZi.s:5822   .progmem.data:00000823 commandImplementation06
     /tmp/cccRnaZi.s:5826   .progmem.data:00000824 commandImplementation07
     /tmp/cccRnaZi.s:5830   .progmem.data:00000825 commandImplementation08
     /tmp/cccRnaZi.s:5834   .progmem.data:0000083e commandImplementation09
     /tmp/cccRnaZi.s:5838   .progmem.data:00000857 commandImplementation10
     /tmp/cccRnaZi.s:5842   .progmem.data:00000858 commandImplementation11
     /tmp/cccRnaZi.s:5846   .progmem.data:00000871 commandImplementation12
     /tmp/cccRnaZi.s:5850   .progmem.data:00000872 commandImplementation13
     /tmp/cccRnaZi.s:5854   .progmem.data:00000873 commandImplementation14
     /tmp/cccRnaZi.s:5858   .progmem.data:00000874 commandImplementation15
     /tmp/cccRnaZi.s:5862   .progmem.data:00000875 commandImplementation16
     /tmp/cccRnaZi.s:5866   .progmem.data:00000889 commandImplementation17
     /tmp/cccRnaZi.s:5870   .progmem.data:0000089d commandImplementation18
     /tmp/cccRnaZi.s:5874   .progmem.data:000008b1 commandImplementation19
     /tmp/cccRnaZi.s:5878   .progmem.data:000008c5 commandImplementation20
     /tmp/cccRnaZi.s:5882   .progmem.data:000008d9 commandImplementation21
     /tmp/cccRnaZi.s:5886   .progmem.data:000008da commandImplementation22
     /tmp/cccRnaZi.s:5890   .progmem.data:000008db commandImplementation23
     /tmp/cccRnaZi.s:5894   .progmem.data:000008ef commandImplementation24
     /tmp/cccRnaZi.s:5898   .progmem.data:000008f0 commandImplementation25
     /tmp/cccRnaZi.s:5902   .progmem.data:00000904 commandImplementation26
     /tmp/cccRnaZi.s:5906   .progmem.data:00000905 commandImplementation27
     /tmp/cccRnaZi.s:5910   .progmem.data:00000919 commandImplementation28
     /tmp/cccRnaZi.s:5914   .progmem.data:0000091a commandImplementation29
     /tmp/cccRnaZi.s:5918   .progmem.data:0000091b commandImplementation30
     /tmp/cccRnaZi.s:5922   .progmem.data:0000091c commandImplementation31
     /tmp/cccRnaZi.s:5926   .progmem.data:00000930 commandImplementation32
     /tmp/cccRnaZi.s:5930   .progmem.data:00000944 commandImplementation33
     /tmp/cccRnaZi.s:5934   .progmem.data:00000958 commandImplementation34
     /tmp/cccRnaZi.s:5938   .progmem.data:0000096c commandImplementation35
     /tmp/cccRnaZi.s:5942   .progmem.data:00000980 commandImplementation36
     /tmp/cccRnaZi.s:5946   .progmem.data:00000994 commandImplementation37
     /tmp/cccRnaZi.s:5950   .progmem.data:000009a8 commandImplementation38
     /tmp/cccRnaZi.s:5954   .progmem.data:000009bc commandImplementation39
     /tmp/cccRnaZi.s:5958   .progmem.data:000009d0 commandImplementation40
     /tmp/cccRnaZi.s:5962   .progmem.data:000009d1 commandImplementation41
     /tmp/cccRnaZi.s:5966   .progmem.data:000009e5 commandImplementation42
     /tmp/cccRnaZi.s:5970   .progmem.data:000009f9 commandImplementation43
     /tmp/cccRnaZi.s:5974   .progmem.data:00000a0d commandImplementation44
     /tmp/cccRnaZi.s:5978   .progmem.data:00000a21 commandImplementation45
     /tmp/cccRnaZi.s:5982   .progmem.data:00000a35 commandImplementation46
     /tmp/cccRnaZi.s:5986   .progmem.data:00000a49 commandImplementation47
     /tmp/cccRnaZi.s:5990   .progmem.data:00000a5d commandImplementation48
     /tmp/cccRnaZi.s:5994   .progmem.data:00000a71 commandImplementation49
     /tmp/cccRnaZi.s:5998   .progmem.data:00000a85 se00
     /tmp/cccRnaZi.s:6002   .progmem.data:00000a9b se01
     /tmp/cccRnaZi.s:6006   .progmem.data:00000aaa se02
     /tmp/cccRnaZi.s:6010   .progmem.data:00000abb se03
     /tmp/cccRnaZi.s:6014   .progmem.data:00000acb se04
     /tmp/cccRnaZi.s:6018   .progmem.data:00000adf se05
     /tmp/cccRnaZi.s:6022   .progmem.data:00000af2 se06
     /tmp/cccRnaZi.s:6026   .progmem.data:00000b05 se07
     /tmp/cccRnaZi.s:6030   .progmem.data:00000b18 se08
     /tmp/cccRnaZi.s:6034   .progmem.data:00000b2b se09
     /tmp/cccRnaZi.s:6038   .progmem.data:00000b3e se10
     /tmp/cccRnaZi.s:6042   .progmem.data:00000b51 se11
     /tmp/cccRnaZi.s:6046   .progmem.data:00000b64 se12
     /tmp/cccRnaZi.s:6050   .progmem.data:00000b77 se13
     /tmp/cccRnaZi.s:6054   .progmem.data:00000b8b se14
     /tmp/cccRnaZi.s:6058   .progmem.data:00000ba5 se15
     /tmp/cccRnaZi.s:6062   .progmem.data:00000bb9 se16
     /tmp/cccRnaZi.s:6066   .progmem.data:00000bcf se17
     /tmp/cccRnaZi.s:6070   .progmem.data:00000be4 se18
     /tmp/cccRnaZi.s:6074   .progmem.data:00000bfc se19
     /tmp/cccRnaZi.s:6078   .progmem.data:00000c14 se20
     /tmp/cccRnaZi.s:6082   .progmem.data:00000c2c se21
     /tmp/cccRnaZi.s:6086   .progmem.data:00000c44 se22
     /tmp/cccRnaZi.s:6090   .progmem.data:00000c5c se23
     /tmp/cccRnaZi.s:6094   .progmem.data:00000c74 se24
     /tmp/cccRnaZi.s:6098   .progmem.data:00000c8c se25
     /tmp/cccRnaZi.s:6102   .progmem.data:00000ca4 se26
     /tmp/cccRnaZi.s:6106   .progmem.data:00000cbc se27
     /tmp/cccRnaZi.s:6110   .progmem.data:00000cd1 se28
     /tmp/cccRnaZi.s:6114   .progmem.data:00000ce9 se29
     /tmp/cccRnaZi.s:6118   .progmem.data:00000d02 se30
     /tmp/cccRnaZi.s:6122   .progmem.data:00000d1e se31
     /tmp/cccRnaZi.s:6126   .progmem.data:00000d45 se32
     /tmp/cccRnaZi.s:6130   .progmem.data:00000d58 ce00
     /tmp/cccRnaZi.s:6134   .progmem.data:00000d67 ce01
     /tmp/cccRnaZi.s:6138   .progmem.data:00000d7a ce02
     /tmp/cccRnaZi.s:6142   .progmem.data:00000d88 ce03
     /tmp/cccRnaZi.s:6146   .progmem.data:00000d92 ce04
     /tmp/cccRnaZi.s:6150   .progmem.data:00000d9e ce05
     /tmp/cccRnaZi.s:6154   .progmem.data:00000da8 ce06
     /tmp/cccRnaZi.s:6158   .progmem.data:00000db3 ce07
     /tmp/cccRnaZi.s:6162   .progmem.data:00000dc8 ce08
     /tmp/cccRnaZi.s:6166   .progmem.data:00000ded ce09
     /tmp/cccRnaZi.s:6170   .progmem.data:00000e0b me00
     /tmp/cccRnaZi.s:6174   .progmem.data:00000e28 me01
     /tmp/cccRnaZi.s:6178   .progmem.data:00000e3d me02
     /tmp/cccRnaZi.s:6182   .progmem.data:00000e59 ge00
     /tmp/cccRnaZi.s:6186   .progmem.data:00000e70 ge01
     /tmp/cccRnaZi.s:6190   .progmem.data:00000e88 ge02
     /tmp/cccRnaZi.s:6194   .progmem.data:00000e9e ge03
     /tmp/cccRnaZi.s:6198   .progmem.data:00000eb4 ge04
     /tmp/cccRnaZi.s:6202   .progmem.data:00000ed6 ge05
     /tmp/cccRnaZi.s:6206   .progmem.data:00000ee4 ge06
     /tmp/cccRnaZi.s:6210   .progmem.data:00000ef6 ge07
     /tmp/cccRnaZi.s:6214   .progmem.data:00000f0d ge08
     /tmp/cccRnaZi.s:6218   .progmem.data:00000f26 ge09
     /tmp/cccRnaZi.s:6222   .progmem.data:00000f3c ge10
     /tmp/cccRnaZi.s:6226   .progmem.data:00000f4d errorType00
     /tmp/cccRnaZi.s:6230   .progmem.data:00000f52 errorType01
     /tmp/cccRnaZi.s:6234   .progmem.data:00000f57 errorType02
     /tmp/cccRnaZi.s:6238   .progmem.data:00000f5c errorType03
     /tmp/cccRnaZi.s:6242   .progmem.data:00000f61 errorType04
                            *COM*:00000001 ErrorCodes

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
ptr_setParameter
setParameter
timer1Ready
timer0Ready
timer0ASchedulerReady
timer0AReady
nextCharPos
uartString
uartReady
uart_message_string
flag_pingActive
snprintf_P
strncmp_P
isxdigit
debug
debugMask
isspace
ptr_uartStruct
strncat_P
message
strncat
decrypt_uartString
CAN_Init
can_init
timer0_init
timer0A_init
currentResponseKeyword
relayThresholdInBoundPolarityInit
relayThresholdEnable_flag
relayThresholds_valid
relayThresholdInit
can_errorCode
exit
general_errorCode
uart_errorCode
mob
Get_CanError
ptr_canStruct
canReady
Get_BusState
strtoul
Send_Message
writeRegister
atmelReadADCs
owiReadADCs
owiDualSwitches
owiShowDevicesID
read_status_simpleSwitches
readRegister
owiTemperatureSensors
setOneWireBusMask
readModifyDebugLevel
readModifyDebugMask
modifyJTAG
help
getOneWireBusMask
readModifyDebugLevelAndMask
owiTemperatureFindParasiticlyPoweredDevices
show
owiApi
relayThreshold
Subscribe_Message
Unsubscribe_Message
Receive_Message
strtok_r
strncpy
ConvertUartDataToOwiStruct
