   1               		.file	"one_wire.c"
   2               	__SP_H__ = 0x3e
   3               	__SP_L__ = 0x3d
   4               	__SREG__ = 0x3f
   5               	__RAMPZ__ = 0x3b
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   9               		.text
  10               	.Ltext0:
 157               		.section	.rodata.str1.1,"aMS",@progbits,1
 158               	.LC0:
 159 0000 2530 3258 		.string	"%02X%02X%02X%02X%02X%02X%02X%02X"
 159      2530 3258 
 159      2530 3258 
 159      2530 3258 
 159      2530 3258 
 160               		.text
 163               	.global	owiCreateIdString
 165               	owiCreateIdString:
   1:one_wire.c    **** /*
   2:one_wire.c    ****    Licensed under the EUPL V.1.1, Lizenziert unter EUPL V.1.1 
   3:one_wire.c    **** */
   4:one_wire.c    **** /*
   5:one_wire.c    ****  * VERSION 1.0 Januar 7th 2010 LATE  File: 'one_wire_adc.c'
   6:one_wire.c    ****  * Author: Linda Fouedjio  based on Alejandro Gil
   7:one_wire.c    ****  * modified (heavily rather rebuild): Peter Zumbruch
   8:one_wire.c    ****  */
   9:one_wire.c    **** 
  10:one_wire.c    **** #include <stdint.h>
  11:one_wire.c    **** #include <stdio.h>
  12:one_wire.c    **** #include <stdarg.h>
  13:one_wire.c    **** #include <string.h>
  14:one_wire.c    **** #include <math.h>
  15:one_wire.c    **** #include <stdlib.h>
  16:one_wire.c    **** #include <ctype.h>
  17:one_wire.c    **** 
  18:one_wire.c    **** #include <util/delay.h>
  19:one_wire.c    **** 
  20:one_wire.c    **** #include <avr/pgmspace.h>
  21:one_wire.c    **** #include <avr/io.h>
  22:one_wire.c    **** #include <avr/interrupt.h>
  23:one_wire.c    **** #include <avr/sleep.h>
  24:one_wire.c    **** 
  25:one_wire.c    **** #include <avr/iocan128.h>
  26:one_wire.c    **** 
  27:one_wire.c    **** #include "one_wire.h"
  28:one_wire.c    **** #include "one_wire_adc.h"
  29:one_wire.c    **** #include "one_wire_dualSwitch.h"
  30:one_wire.c    **** #include "one_wire_simpleSwitch.h"
  31:one_wire.c    **** #include "one_wire_octalSwitch.h"
  32:one_wire.c    **** #include "read_write_register.h"
  33:one_wire.c    **** #include "one_wire_temperature.h"
  34:one_wire.c    **** 
  35:one_wire.c    **** #include "adc.h"
  36:one_wire.c    **** #include "api.h"
  37:one_wire.c    **** #include "api_define.h"
  38:one_wire.c    **** #include "api_global.h"
  39:one_wire.c    **** 
  40:one_wire.c    **** #include "api_debug.h"
  41:one_wire.c    **** #include "can.h"
  42:one_wire.c    **** #include "mem-check.h"
  43:one_wire.c    **** 
  44:one_wire.c    **** #include "OWIDeviceSpecific.h"
  45:one_wire.c    **** #include "OWIHighLevelFunctions.h"
  46:one_wire.c    **** #include "OWIBitFunctions.h"
  47:one_wire.c    **** #include "OWIcrc.h"
  48:one_wire.c    **** 
  49:one_wire.c    **** static const char filename[] 		PROGMEM = __FILE__;
  50:one_wire.c    **** 
  51:one_wire.c    **** char owi_id_string[OWI_ID_LENGTH];
  52:one_wire.c    **** 
  53:one_wire.c    **** void owiCreateIdString(char string[OWI_ID_LENGTH], uint8_t array[])
  54:one_wire.c    **** {
 167               	.LM0:
 168               	.LFBB1:
 169 0000 0F93      		push r16
 170 0002 1F93      		push r17
 171 0004 CF93      		push r28
 172 0006 DF93      		push r29
 173               	/* prologue: function */
 174               	/* frame size = 0 */
 175               	/* stack size = 4 */
 176               	.L__stack_usage = 4
 177 0008 182F      		mov r17,r24
 178 000a 092F      		mov r16,r25
 179 000c EB01      		movw r28,r22
  55:one_wire.c    **** 	clearString(string, OWI_ID_LENGTH);
 181               	.LM1:
 182 000e 61E1      		ldi r22,lo8(17)
 183 0010 70E0      		ldi r23,0
 184 0012 0E94 0000 		call clearString
  56:one_wire.c    **** 	/* assign current id to string */
  57:one_wire.c    **** 	snprintf(string, OWI_ID_LENGTH, "%02X%02X%02X%02X%02X%02X%02X%02X",
 186               	.LM2:
 187 0016 8F81      		ldd r24,Y+7
 188 0018 1F92      		push __zero_reg__
 189 001a 8F93      		push r24
 190 001c 8E81      		ldd r24,Y+6
 191 001e 1F92      		push __zero_reg__
 192 0020 8F93      		push r24
 193 0022 8D81      		ldd r24,Y+5
 194 0024 1F92      		push __zero_reg__
 195 0026 8F93      		push r24
 196 0028 8C81      		ldd r24,Y+4
 197 002a 1F92      		push __zero_reg__
 198 002c 8F93      		push r24
 199 002e 8B81      		ldd r24,Y+3
 200 0030 1F92      		push __zero_reg__
 201 0032 8F93      		push r24
 202 0034 8A81      		ldd r24,Y+2
 203 0036 1F92      		push __zero_reg__
 204 0038 8F93      		push r24
 205 003a 8981      		ldd r24,Y+1
 206 003c 1F92      		push __zero_reg__
 207 003e 8F93      		push r24
 208 0040 8881      		ld r24,Y
 209 0042 1F92      		push __zero_reg__
 210 0044 8F93      		push r24
 211 0046 20E0      		ldi r18,lo8(.LC0)
 212 0048 30E0      		ldi r19,hi8(.LC0)
 213 004a 3F93      		push r19
 214 004c 2F93      		push r18
 215 004e 1F92      		push __zero_reg__
 216 0050 81E1      		ldi r24,lo8(17)
 217 0052 8F93      		push r24
 218 0054 0F93      		push r16
 219 0056 1F93      		push r17
 220 0058 0E94 0000 		call snprintf
 221 005c 8DB7      		in r24,__SP_L__
 222 005e 9EB7      		in r25,__SP_H__
 223 0060 4696      		adiw r24,22
 224 0062 0FB6      		in __tmp_reg__,__SREG__
 225 0064 F894      		cli
 226 0066 9EBF      		out __SP_H__,r25
 227 0068 0FBE      		out __SREG__,__tmp_reg__
 228 006a 8DBF      		out __SP_L__,r24
 229               	/* epilogue start */
  58:one_wire.c    **** 			array[0], array[1], array[2], array[3], array[4], array[5], array[6], array[7]);
  59:one_wire.c    **** }
 231               	.LM3:
 232 006c DF91      		pop r29
 233 006e CF91      		pop r28
 234 0070 1F91      		pop r17
 235 0072 0F91      		pop r16
 236 0074 0895      		ret
 238               	.Lscope1:
 241               	.global	owiReadDevicesID
 243               	owiReadDevicesID:
  60:one_wire.c    **** 
  61:one_wire.c    **** /*
  62:one_wire.c    ****  * this function collects all ID of devices connected to bus
  63:one_wire.c    ****  * and returns the number of found devices
  64:one_wire.c    ****  */
  65:one_wire.c    **** 
  66:one_wire.c    **** int8_t owiReadDevicesID( uint8_t *pins )
  67:one_wire.c    **** {
 245               	.LM4:
 246               	.LFBB2:
 247 0076 2F92      		push r2
 248 0078 3F92      		push r3
 249 007a 4F92      		push r4
 250 007c 5F92      		push r5
 251 007e 6F92      		push r6
 252 0080 7F92      		push r7
 253 0082 8F92      		push r8
 254 0084 9F92      		push r9
 255 0086 AF92      		push r10
 256 0088 BF92      		push r11
 257 008a CF92      		push r12
 258 008c DF92      		push r13
 259 008e EF92      		push r14
 260 0090 FF92      		push r15
 261 0092 0F93      		push r16
 262 0094 1F93      		push r17
 263 0096 CF93      		push r28
 264 0098 DF93      		push r29
 265 009a 1F92      		push __zero_reg__
 266 009c CDB7      		in r28,__SP_L__
 267 009e DEB7      		in r29,__SP_H__
 268               	/* prologue: function */
 269               	/* frame size = 1 */
 270               	/* stack size = 19 */
 271               	.L__stack_usage = 19
  68:one_wire.c    ****    countDEV = 0; /*reset number of devices */
 273               	.LM5:
 274 00a0 1092 0000 		sts countDEV,__zero_reg__
 275 00a4 7C01      		movw r14,r24
 276 00a6 00E0      		ldi r16,0
 277 00a8 10E0      		ldi r17,0
 278               	.LBB17:
  69:one_wire.c    ****    unsigned char owiSearchLastBitDeviation = 1;
  70:one_wire.c    ****    unsigned char firstSearchOnBus_flag = TRUE;
  71:one_wire.c    ****    /* TODO: the search is done per bus,
  72:one_wire.c    ****     * check if its also possible to it per bus mask
  73:one_wire.c    ****     */
  74:one_wire.c    **** 
  75:one_wire.c    ****    for ( int8_t pinBusPatternIndex = 0 ; pinBusPatternIndex < OWI_MAX_NUM_PIN_BUS && countDEV < OWI
  76:one_wire.c    ****    {
  77:one_wire.c    ****       /* clear last index of IDs array use as previous Address pointer from IDs array
  78:one_wire.c    ****        * see owiSearch_Rom for more details */
  79:one_wire.c    ****       for ( int8_t a = 0 ; a < 7 ; a++ )
  80:one_wire.c    ****       {
  81:one_wire.c    ****          owi_IDs[OWI_MAX_NUM_DEVICES - 1][a] = 0;
  82:one_wire.c    ****       }
  83:one_wire.c    **** 
  84:one_wire.c    ****       /* check bus active mask */
  85:one_wire.c    ****       if ( 0 == ((owiBusMask & pins[pinBusPatternIndex]) & 0xFF) )
  86:one_wire.c    ****       {
  87:one_wire.c    ****      	  printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("message %s"), 
  88:one_wire.c    **** 
  89:one_wire.c    ****      	  printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("bus: %i passiv
  90:one_wire.c    ****           continue;
  91:one_wire.c    ****       }
  92:one_wire.c    ****       else
  93:one_wire.c    ****       {
  94:one_wire.c    ****            printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("bus: %i act
 280               	.LM6:
 281 00aa 70E0      		ldi r23,lo8(__c.3071)
 282 00ac 672E      		mov r6,r23
 283 00ae 70E0      		ldi r23,hi8(__c.3071)
 284 00b0 772E      		mov r7,r23
  95:one_wire.c    ****       }
  96:one_wire.c    **** 
  97:one_wire.c    ****       if ( debugLevelEventDebug <= globalDebugLevel && ((globalDebugSystemMask >> debugSystemOWI) &
  98:one_wire.c    ****       {
  99:one_wire.c    ****            printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("bus: %i act
 100:one_wire.c    ****       }
 101:one_wire.c    **** 
 102:one_wire.c    **** 
 103:one_wire.c    ****       if ( 0 != OWI_DetectPresence(pins[pinBusPatternIndex]) )
 104:one_wire.c    ****       {
 105:one_wire.c    ****          /*this will search the devices IDs till the max number of devices is reached or
 106:one_wire.c    ****           *all the devices have been read out
 107:one_wire.c    ****           */
 108:one_wire.c    **** 
 109:one_wire.c    ****           printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("devices dete
 110:one_wire.c    **** 
 111:one_wire.c    ****          /* find all devices on that bus
 112:one_wire.c    ****           *  - count: countDEVbus
 113:one_wire.c    ****           *  - IDs: owi_IDs
 114:one_wire.c    ****           */
 115:one_wire.c    **** 
 116:one_wire.c    ****          // reseting bus counter, flag, and positions
 117:one_wire.c    ****          countDEVbus = 0;
 118:one_wire.c    ****          firstSearchOnBus_flag = TRUE;
 119:one_wire.c    ****          owiSearchLastBitDeviation = OWI_ROM_SEARCH_FINISHED + 1;
 120:one_wire.c    **** 
 121:one_wire.c    ****          uint16_t trialsCounter = 0;
 122:one_wire.c    ****          while ( OWI_MAX_NUM_DEVICES > countDEV && owiSearchLastBitDeviation != OWI_ROM_SEARCH_FINI
 123:one_wire.c    ****          {
 124:one_wire.c    ****         	trialsCounter++;
 125:one_wire.c    ****             owi_IDs_pinMask[countDEV] = 0;
 126:one_wire.c    **** 
 127:one_wire.c    ****             OWI_DetectPresence(pins[pinBusPatternIndex]);
 128:one_wire.c    **** 
 129:one_wire.c    ****             /* reset search last bit deviation */
 130:one_wire.c    ****             if ( TRUE == firstSearchOnBus_flag ) { owiSearchLastBitDeviation = 0; firstSearchOnBus_
 131:one_wire.c    **** 
 132:one_wire.c    ****             /* OWI_SearchRom(bitPattern,...
 133:one_wire.c    ****             *         bitPattern       A pointer to an 8 byte char array where the
 134:one_wire.c    ****             *                          discovered identifier will be placed. When
 135:one_wire.c    ****             *                          searching for several slaves, a copy of the
 136:one_wire.c    ****             *                          last found identifier should be supplied in
 137:one_wire.c    ****             *                          the array, or the search will fail.
 138:one_wire.c    ****             */
 139:one_wire.c    ****             /* - misusing the last array element to store the latest result*/
 140:one_wire.c    ****             owiSearchLastBitDeviation = OWI_SearchRom(owi_IDs[OWI_MAX_NUM_DEVICES - 1], owiSearchLa
 141:one_wire.c    **** 
 142:one_wire.c    ****             unsigned char result = OWI_CheckRomCRC(owi_IDs[OWI_MAX_NUM_DEVICES - 1]);
 143:one_wire.c    ****             unsigned char skip_flag = FALSE;
 144:one_wire.c    ****             switch(result)
 145:one_wire.c    ****             {
 146:one_wire.c    ****             case OWI_CRC_OK:
 147:one_wire.c    ****             	printDebug_p(debugLevelEventDebugVerbose, debugSystemOWI, __LINE__, filename, PSTR("OW
 148:one_wire.c    ****             	break;
 149:one_wire.c    ****             case OWI_CRC_ERROR:
 150:one_wire.c    ****                 owiCreateIdString(owi_id_string, owi_IDs[OWI_MAX_NUM_DEVICES -1]);
 151:one_wire.c    ****             	CommunicationError_p(ERRG, dynamicMessage_ErrorIndex, TRUE, PSTR("bus: %i (Mask:%#x) -
 152:one_wire.c    ****             	skip_flag = TRUE;
 153:one_wire.c    ****             	break;
 154:one_wire.c    ****             default:
 155:one_wire.c    ****             	CommunicationError_p(ERRG, dynamicMessage_ErrorIndex, TRUE, PSTR("OWI CRC check intern
 156:one_wire.c    ****             	return countDEV;
 157:one_wire.c    ****             	break;
 158:one_wire.c    ****             }
 159:one_wire.c    **** 
 160:one_wire.c    ****             if (TRUE == skip_flag)
 161:one_wire.c    ****             {
 162:one_wire.c    ****             	continue;
 163:one_wire.c    ****             }
 164:one_wire.c    **** 
 165:one_wire.c    ****             for ( int8_t a = 0 ; a < 8 ; a++ )
 166:one_wire.c    ****             {
 167:one_wire.c    ****                owi_IDs[countDEV][a] = owi_IDs[OWI_MAX_NUM_DEVICES - 1][a];
 168:one_wire.c    ****             }
 169:one_wire.c    ****             owi_IDs_pinMask[countDEV] = pins[pinBusPatternIndex];
 170:one_wire.c    **** 
 171:one_wire.c    ****             if ( debugLevelEventDebug <= globalDebugLevel && ((globalDebugSystemMask >> debugSystem
 172:one_wire.c    ****             {
 173:one_wire.c    ****                owiCreateIdString(owi_id_string, owi_IDs[countDEV]);
 174:one_wire.c    ****                 printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("bus: %
 175:one_wire.c    ****             }
 176:one_wire.c    **** 
 177:one_wire.c    ****             countDEVbus++;
 178:one_wire.c    ****             countDEV++;
 179:one_wire.c    **** 
 180:one_wire.c    ****          } // end of while ( countDEV < OWI_MAX_NUM_DEVICES && res != OWI_ROM_SEARCH_FINISHED )
 181:one_wire.c    **** 
 182:one_wire.c    ****           printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("bus: %i foun
 183:one_wire.c    ****       } //end of if((PD=OWI_DetectPresence(pins[pinBusPatternIndex]))!=0)
 184:one_wire.c    ****       else
 185:one_wire.c    ****       {
 186:one_wire.c    ****          printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("no_device_is_
 286               	.LM7:
 287 00b2 E0E0      		ldi r30,lo8(__c.3101)
 288 00b4 4E2E      		mov r4,r30
 289 00b6 E0E0      		ldi r30,hi8(__c.3101)
 290 00b8 5E2E      		mov r5,r30
 291               	.LBB18:
 109:one_wire.c    **** 
 293               	.LM8:
 294 00ba F0E0      		ldi r31,lo8(__c.3075)
 295 00bc 2F2E      		mov r2,r31
 296 00be F0E0      		ldi r31,hi8(__c.3075)
 297 00c0 3F2E      		mov r3,r31
 298               	.L3:
 299               	.LBE18:
  75:one_wire.c    ****    {
 301               	.LM9:
 302 00c2 8091 0000 		lds r24,countDEV
 303 00c6 8431      		cpi r24,lo8(20)
 304 00c8 04F0      		brlt .L39
 305               	.L24:
 306               	.LBE17:
 187:one_wire.c    ****          continue;
 188:one_wire.c    ****       }
 189:one_wire.c    ****    }// end of for ( int8_t b = 0 ; b < OWI_MAX_NUM_PIN_BUS ; b++ )
 190:one_wire.c    **** 
 191:one_wire.c    ****    if ( 0 == countDEV )
 308               	.LM10:
 309 00ca 8091 0000 		lds r24,countDEV
 310 00ce 8111      		cpse r24,__zero_reg__
 311 00d0 00C0      		rjmp .L23
 192:one_wire.c    ****    {
 193:one_wire.c    ****       generalErrorCode = CommunicationError_p(ERRG, GENERAL_ERROR_no_device_is_connected_to_the_bus
 313               	.LM11:
 314 00d2 1F92      		push __zero_reg__
 315 00d4 1F92      		push __zero_reg__
 316 00d6 81E0      		ldi r24,lo8(1)
 317 00d8 8F93      		push r24
 318 00da 1F92      		push __zero_reg__
 319 00dc 84E0      		ldi r24,lo8(4)
 320 00de 8F93      		push r24
 321 00e0 1F92      		push __zero_reg__
 322 00e2 E091 0000 		lds r30,CommunicationError_p
 323 00e6 F091 0000 		lds r31,CommunicationError_p+1
 324 00ea 0995      		icall
 325 00ec 90E0      		ldi r25,0
 326 00ee 9093 0000 		sts generalErrorCode+1,r25
 327 00f2 8093 0000 		sts generalErrorCode,r24
 328 00f6 0F90      		pop __tmp_reg__
 329 00f8 0F90      		pop __tmp_reg__
 330 00fa 0F90      		pop __tmp_reg__
 331 00fc 0F90      		pop __tmp_reg__
 332 00fe 0F90      		pop __tmp_reg__
 333 0100 0F90      		pop __tmp_reg__
 334 0102 00C0      		rjmp .L23
 335               	.L39:
 336               	.LBB25:
  75:one_wire.c    ****    {
 338               	.LM12:
 339 0104 E0E0      		ldi r30,lo8(owi_IDs+152)
 340 0106 F0E0      		ldi r31,hi8(owi_IDs+152)
 341               	.L25:
 342               	.LBB23:
  81:one_wire.c    ****       }
 344               	.LM13:
 345 0108 1192      		st Z+,__zero_reg__
  79:one_wire.c    ****       {
 347               	.LM14:
 348 010a 20E0      		ldi r18,hi8(owi_IDs+159)
 349 010c E030      		cpi r30,lo8(owi_IDs+159)
 350 010e F207      		cpc r31,r18
 351 0110 01F4      		brne .L25
 352               	.LBE23:
  85:one_wire.c    ****       {
 354               	.LM15:
 355 0112 8091 0000 		lds r24,owiBusMask
 356 0116 9091 0000 		lds r25,owiBusMask+1
 357 011a D701      		movw r26,r14
 358 011c 4C91      		ld r20,X
 359 011e 242F      		mov r18,r20
 360 0120 30E0      		ldi r19,0
 361 0122 2823      		and r18,r24
 362 0124 3923      		and r19,r25
 363 0126 E091 0000 		lds r30,printDebug_p
 364 012a F091 0000 		lds r31,printDebug_p+1
 365 012e 232B      		or r18,r19
 366 0130 01F4      		brne .L5
  87:one_wire.c    **** 
 368               	.LM16:
 369 0132 9F93      		push r25
 370 0134 8F93      		push r24
 371 0136 80E0      		ldi r24,lo8(__c.3066)
 372 0138 90E0      		ldi r25,hi8(__c.3066)
 373 013a 9F93      		push r25
 374 013c 8F93      		push r24
 375 013e A0E0      		ldi r26,lo8(filename)
 376 0140 B0E0      		ldi r27,hi8(filename)
 377 0142 BF93      		push r27
 378 0144 AF93      		push r26
 379 0146 1F92      		push __zero_reg__
 380 0148 87E5      		ldi r24,lo8(87)
 381 014a 8F93      		push r24
 382 014c 1F92      		push __zero_reg__
 383 014e 1F92      		push __zero_reg__
 384 0150 1F92      		push __zero_reg__
 385 0152 58E0      		ldi r21,lo8(8)
 386 0154 C52E      		mov r12,r21
 387 0156 CF92      		push r12
 388 0158 62E0      		ldi r22,lo8(2)
 389 015a D62E      		mov r13,r22
 390 015c DF92      		push r13
 391 015e 0995      		icall
  89:one_wire.c    ****           continue;
 393               	.LM17:
 394 0160 8091 0000 		lds r24,owiBusMask+1
 395 0164 8F93      		push r24
 396 0166 8091 0000 		lds r24,owiBusMask
 397 016a 8F93      		push r24
 398 016c D701      		movw r26,r14
 399 016e 8C91      		ld r24,X
 400 0170 1F92      		push __zero_reg__
 401 0172 8F93      		push r24
 402 0174 1F93      		push r17
 403 0176 0F93      		push r16
 404 0178 80E0      		ldi r24,lo8(__c.3068)
 405 017a 90E0      		ldi r25,hi8(__c.3068)
 406 017c 9F93      		push r25
 407 017e 8F93      		push r24
 408 0180 A0E0      		ldi r26,lo8(filename)
 409 0182 B0E0      		ldi r27,hi8(filename)
 410 0184 BF93      		push r27
 411 0186 AF93      		push r26
 412 0188 1F92      		push __zero_reg__
 413 018a 89E5      		ldi r24,lo8(89)
 414 018c 8F93      		push r24
 415 018e 1F92      		push __zero_reg__
 416 0190 1F92      		push __zero_reg__
 417 0192 1F92      		push __zero_reg__
 418 0194 CF92      		push r12
 419 0196 DF92      		push r13
 420 0198 00C0      		rjmp .L37
 421               	.L5:
  94:one_wire.c    ****       }
 423               	.LM18:
 424 019a C02E      		mov r12,r16
 425 019c B12E      		mov r11,r17
 426 019e 9F93      		push r25
 427 01a0 8F93      		push r24
 428 01a2 1F92      		push __zero_reg__
 429 01a4 4F93      		push r20
 430 01a6 1F93      		push r17
 431 01a8 0F93      		push r16
 432 01aa 7F92      		push r7
 433 01ac 6F92      		push r6
 434 01ae A0E0      		ldi r26,lo8(filename)
 435 01b0 B0E0      		ldi r27,hi8(filename)
 436 01b2 BF93      		push r27
 437 01b4 AF93      		push r26
 438 01b6 1F92      		push __zero_reg__
 439 01b8 8EE5      		ldi r24,lo8(94)
 440 01ba 8F93      		push r24
 441 01bc 1F92      		push __zero_reg__
 442 01be 1F92      		push __zero_reg__
 443 01c0 1F92      		push __zero_reg__
 444 01c2 38E0      		ldi r19,lo8(8)
 445 01c4 A32E      		mov r10,r19
 446 01c6 AF92      		push r10
 447 01c8 42E0      		ldi r20,lo8(2)
 448 01ca D42E      		mov r13,r20
 449 01cc DF92      		push r13
 450 01ce 0995      		icall
  97:one_wire.c    ****       {
 452               	.LM19:
 453 01d0 0FB6      		in __tmp_reg__,__SREG__
 454 01d2 F894      		cli
 455 01d4 DEBF      		out __SP_H__,r29
 456 01d6 0FBE      		out __SREG__,__tmp_reg__
 457 01d8 CDBF      		out __SP_L__,r28
 458 01da 8091 0000 		lds r24,globalDebugLevel
 459 01de 8230      		cpi r24,lo8(2)
 460 01e0 00F0      		brlo .L7
  97:one_wire.c    ****       {
 462               	.LM20:
 463 01e2 8091 0000 		lds r24,globalDebugSystemMask
 464 01e6 9091 0000 		lds r25,globalDebugSystemMask+1
 465 01ea A091 0000 		lds r26,globalDebugSystemMask+2
 466 01ee B091 0000 		lds r27,globalDebugSystemMask+3
 467 01f2 90FF      		sbrs r25,0
 468 01f4 00C0      		rjmp .L7
  99:one_wire.c    ****       }
 470               	.LM21:
 471 01f6 8091 0000 		lds r24,owiBusMask+1
 472 01fa 8F93      		push r24
 473 01fc 8091 0000 		lds r24,owiBusMask
 474 0200 8F93      		push r24
 475 0202 D701      		movw r26,r14
 476 0204 8C91      		ld r24,X
 477 0206 1F92      		push __zero_reg__
 478 0208 8F93      		push r24
 479 020a 1F93      		push r17
 480 020c 0F93      		push r16
 481 020e 80E0      		ldi r24,lo8(__c.3073)
 482 0210 90E0      		ldi r25,hi8(__c.3073)
 483 0212 9F93      		push r25
 484 0214 8F93      		push r24
 485 0216 A0E0      		ldi r26,lo8(filename)
 486 0218 B0E0      		ldi r27,hi8(filename)
 487 021a BF93      		push r27
 488 021c AF93      		push r26
 489 021e 1F92      		push __zero_reg__
 490 0220 83E6      		ldi r24,lo8(99)
 491 0222 8F93      		push r24
 492 0224 1F92      		push __zero_reg__
 493 0226 1F92      		push __zero_reg__
 494 0228 1F92      		push __zero_reg__
 495 022a AF92      		push r10
 496 022c DF92      		push r13
 497 022e E091 0000 		lds r30,printDebug_p
 498 0232 F091 0000 		lds r31,printDebug_p+1
 499 0236 0995      		icall
 500 0238 0FB6      		in __tmp_reg__,__SREG__
 501 023a F894      		cli
 502 023c DEBF      		out __SP_H__,r29
 503 023e 0FBE      		out __SREG__,__tmp_reg__
 504 0240 CDBF      		out __SP_L__,r28
 505               	.L7:
 103:one_wire.c    ****       {
 507               	.LM22:
 508 0242 D701      		movw r26,r14
 509 0244 8C91      		ld r24,X
 510 0246 0E94 0000 		call OWI_DetectPresence
 511 024a E091 0000 		lds r30,printDebug_p
 512 024e F091 0000 		lds r31,printDebug_p+1
 513 0252 8823      		tst r24
 514 0254 01F4      		brne .+2
 515 0256 00C0      		rjmp .L8
 516               	.LBB24:
 109:one_wire.c    **** 
 518               	.LM23:
 519 0258 3F92      		push r3
 520 025a 2F92      		push r2
 521 025c A0E0      		ldi r26,lo8(filename)
 522 025e B0E0      		ldi r27,hi8(filename)
 523 0260 BF93      		push r27
 524 0262 AF93      		push r26
 525 0264 1F92      		push __zero_reg__
 526 0266 8DE6      		ldi r24,lo8(109)
 527 0268 8F93      		push r24
 528 026a 1F92      		push __zero_reg__
 529 026c 1F92      		push __zero_reg__
 530 026e 1F92      		push __zero_reg__
 531 0270 88E0      		ldi r24,lo8(8)
 532 0272 8F93      		push r24
 533 0274 82E0      		ldi r24,lo8(2)
 534 0276 8F93      		push r24
 535 0278 0995      		icall
 117:one_wire.c    ****          firstSearchOnBus_flag = TRUE;
 537               	.LM24:
 538 027a 1092 0000 		sts countDEVbus,__zero_reg__
 122:one_wire.c    ****          {
 540               	.LM25:
 541 027e 0FB6      		in __tmp_reg__,__SREG__
 542 0280 F894      		cli
 543 0282 DEBF      		out __SP_H__,r29
 544 0284 0FBE      		out __SREG__,__tmp_reg__
 545 0286 CDBF      		out __SP_L__,r28
 121:one_wire.c    ****          while ( OWI_MAX_NUM_DEVICES > countDEV && owiSearchLastBitDeviation != OWI_ROM_SEARCH_FINI
 547               	.LM26:
 548 0288 812C      		mov r8,__zero_reg__
 549 028a 912C      		mov r9,__zero_reg__
 118:one_wire.c    ****          owiSearchLastBitDeviation = OWI_ROM_SEARCH_FINISHED + 1;
 551               	.LM27:
 552 028c 91E0      		ldi r25,lo8(1)
 119:one_wire.c    **** 
 554               	.LM28:
 555 028e DD24      		clr r13
 556 0290 D394      		inc r13
 557               	.LBB19:
 147:one_wire.c    ****             	break;
 559               	.LM29:
 560 0292 28E0      		ldi r18,lo8(8)
 561 0294 A22E      		mov r10,r18
 562               	.L9:
 563               	.LBE19:
 122:one_wire.c    ****          {
 565               	.LM30:
 566 0296 E091 0000 		lds r30,countDEV
 567 029a E431      		cpi r30,lo8(20)
 568 029c 04F0      		brlt .+2
 569 029e 00C0      		rjmp .L19
 122:one_wire.c    ****          {
 571               	.LM31:
 572 02a0 DD20      		tst r13
 573 02a2 01F4      		brne .+2
 574 02a4 00C0      		rjmp .L19
 122:one_wire.c    ****          {
 576               	.LM32:
 577 02a6 A4E1      		ldi r26,20
 578 02a8 8A16      		cp r8,r26
 579 02aa 9104      		cpc r9,__zero_reg__
 580 02ac 01F4      		brne .+2
 581 02ae 00C0      		rjmp .L19
 582               	.LBB22:
 125:one_wire.c    **** 
 584               	.LM33:
 585 02b0 FF27      		clr r31
 586 02b2 E7FD      		sbrc r30,7
 587 02b4 F095      		com r31
 588 02b6 E050      		subi r30,lo8(-(owi_IDs_pinMask))
 589 02b8 F040      		sbci r31,hi8(-(owi_IDs_pinMask))
 590 02ba 1082      		st Z,__zero_reg__
 127:one_wire.c    **** 
 592               	.LM34:
 593 02bc D701      		movw r26,r14
 594 02be 8C91      		ld r24,X
 595 02c0 9983      		std Y+1,r25
 596 02c2 0E94 0000 		call OWI_DetectPresence
 130:one_wire.c    **** 
 598               	.LM35:
 599 02c6 9981      		ldd r25,Y+1
 600 02c8 9130      		cpi r25,lo8(1)
 601 02ca 01F4      		brne .L10
 602 02cc D12C      		mov r13,__zero_reg__
 603               	.L10:
 140:one_wire.c    **** 
 605               	.LM36:
 606 02ce F701      		movw r30,r14
 607 02d0 4081      		ld r20,Z
 608 02d2 6D2D      		mov r22,r13
 609 02d4 80E0      		ldi r24,lo8(owi_IDs+152)
 610 02d6 90E0      		ldi r25,hi8(owi_IDs+152)
 611 02d8 0E94 0000 		call OWI_SearchRom
 612 02dc D82E      		mov r13,r24
 142:one_wire.c    ****             unsigned char skip_flag = FALSE;
 614               	.LM37:
 615 02de 80E0      		ldi r24,lo8(owi_IDs+152)
 616 02e0 90E0      		ldi r25,hi8(owi_IDs+152)
 617 02e2 0E94 0000 		call OWI_CheckRomCRC
 618 02e6 482F      		mov r20,r24
 144:one_wire.c    ****             {
 620               	.LM38:
 621 02e8 8823      		tst r24
 622 02ea 01F0      		breq .L12
 623 02ec 8130      		cpi r24,lo8(1)
 624 02ee 01F0      		breq .+2
 625 02f0 00C0      		rjmp .L40
 150:one_wire.c    ****             	CommunicationError_p(ERRG, dynamicMessage_ErrorIndex, TRUE, PSTR("bus: %i (Mask:%#x) -
 627               	.LM39:
 628 02f2 60E0      		ldi r22,lo8(owi_IDs+152)
 629 02f4 70E0      		ldi r23,hi8(owi_IDs+152)
 630 02f6 80E0      		ldi r24,lo8(owi_id_string)
 631 02f8 90E0      		ldi r25,hi8(owi_id_string)
 632 02fa 4983      		std Y+1,r20
 633 02fc 0E94 0000 		call owiCreateIdString
 151:one_wire.c    ****             	skip_flag = TRUE;
 635               	.LM40:
 636 0300 20E0      		ldi r18,lo8(owi_id_string)
 637 0302 30E0      		ldi r19,hi8(owi_id_string)
 638 0304 3F93      		push r19
 639 0306 2F93      		push r18
 640 0308 8091 0000 		lds r24,owiBusMask+1
 641 030c 8F93      		push r24
 642 030e 8091 0000 		lds r24,owiBusMask
 643 0312 8F93      		push r24
 644 0314 BF92      		push r11
 645 0316 CF92      		push r12
 646 0318 A0E0      		ldi r26,lo8(__c.3085)
 647 031a B0E0      		ldi r27,hi8(__c.3085)
 648 031c BF93      		push r27
 649 031e AF93      		push r26
 650 0320 4981      		ldd r20,Y+1
 651 0322 4F93      		push r20
 652 0324 FFEF      		ldi r31,lo8(-1)
 653 0326 FF93      		push r31
 654 0328 2CE9      		ldi r18,lo8(-100)
 655 032a 2F93      		push r18
 656 032c 1F92      		push __zero_reg__
 657 032e E091 0000 		lds r30,CommunicationError_p
 658 0332 F091 0000 		lds r31,CommunicationError_p+1
 659 0336 0995      		icall
 660 0338 0FB6      		in __tmp_reg__,__SREG__
 661 033a F894      		cli
 662 033c DEBF      		out __SP_H__,r29
 663 033e 0FBE      		out __SREG__,__tmp_reg__
 664 0340 CDBF      		out __SP_L__,r28
 665 0342 00C0      		rjmp .L15
 666               	.L12:
 147:one_wire.c    ****             	break;
 668               	.LM41:
 669 0344 A0E0      		ldi r26,lo8(__c.3081)
 670 0346 B0E0      		ldi r27,hi8(__c.3081)
 671 0348 BF93      		push r27
 672 034a AF93      		push r26
 673 034c A0E0      		ldi r26,lo8(filename)
 674 034e B0E0      		ldi r27,hi8(filename)
 675 0350 BF93      		push r27
 676 0352 AF93      		push r26
 677 0354 1F92      		push __zero_reg__
 678 0356 F3E9      		ldi r31,lo8(-109)
 679 0358 FF93      		push r31
 680 035a 1F92      		push __zero_reg__
 681 035c 1F92      		push __zero_reg__
 682 035e 1F92      		push __zero_reg__
 683 0360 AF92      		push r10
 684 0362 23E0      		ldi r18,lo8(3)
 685 0364 2F93      		push r18
 686 0366 E091 0000 		lds r30,printDebug_p
 687 036a F091 0000 		lds r31,printDebug_p+1
 688 036e 0995      		icall
 689               	.LBB20:
 167:one_wire.c    ****             }
 691               	.LM42:
 692 0370 4091 0000 		lds r20,countDEV
 693 0374 5527      		clr r21
 694 0376 47FD      		sbrc r20,7
 695 0378 5095      		com r21
 696 037a 9A01      		movw r18,r20
 697 037c 83E0      		ldi r24,3
 698               		1:
 699 037e 220F      		lsl r18
 700 0380 331F      		rol r19
 701 0382 8A95      		dec r24
 702 0384 01F4      		brne 1b
 703 0386 0FB6      		in __tmp_reg__,__SREG__
 704 0388 F894      		cli
 705 038a DEBF      		out __SP_H__,r29
 706 038c 0FBE      		out __SREG__,__tmp_reg__
 707 038e CDBF      		out __SP_L__,r28
 708 0390 E0E0      		ldi r30,lo8(owi_IDs+152)
 709 0392 F0E0      		ldi r31,hi8(owi_IDs+152)
 710 0394 00C0      		rjmp .L14
 711               	.L40:
 712               	.LBE20:
 155:one_wire.c    ****             	return countDEV;
 714               	.LM43:
 715 0396 80E0      		ldi r24,lo8(__c.3088)
 716 0398 90E0      		ldi r25,hi8(__c.3088)
 717 039a 9F93      		push r25
 718 039c 8F93      		push r24
 719 039e 81E0      		ldi r24,lo8(1)
 720 03a0 8F93      		push r24
 721 03a2 8FEF      		ldi r24,lo8(-1)
 722 03a4 8F93      		push r24
 723 03a6 8CE9      		ldi r24,lo8(-100)
 724 03a8 8F93      		push r24
 725 03aa 1F92      		push __zero_reg__
 726 03ac E091 0000 		lds r30,CommunicationError_p
 727 03b0 F091 0000 		lds r31,CommunicationError_p+1
 728 03b4 0995      		icall
 156:one_wire.c    ****             	break;
 730               	.LM44:
 731 03b6 8091 0000 		lds r24,countDEV
 732 03ba 0F90      		pop __tmp_reg__
 733 03bc 0F90      		pop __tmp_reg__
 734 03be 0F90      		pop __tmp_reg__
 735 03c0 0F90      		pop __tmp_reg__
 736 03c2 0F90      		pop __tmp_reg__
 737 03c4 0F90      		pop __tmp_reg__
 738 03c6 00C0      		rjmp .L16
 739               	.L14:
 740               	.LBB21:
 167:one_wire.c    ****             }
 742               	.LM45:
 743 03c8 8191      		ld r24,Z+
 744 03ca DF01      		movw r26,r30
 745 03cc A20F      		add r26,r18
 746 03ce B31F      		adc r27,r19
 747 03d0 A959      		subi r26,-103
 748 03d2 B109      		sbc r27,__zero_reg__
 749 03d4 8C93      		st X,r24
 165:one_wire.c    ****             {
 751               	.LM46:
 752 03d6 90E0      		ldi r25,hi8(owi_IDs+160)
 753 03d8 E030      		cpi r30,lo8(owi_IDs+160)
 754 03da F907      		cpc r31,r25
 755 03dc 01F4      		brne .L14
 756               	.LBE21:
 169:one_wire.c    **** 
 758               	.LM47:
 759 03de D701      		movw r26,r14
 760 03e0 8C91      		ld r24,X
 761 03e2 FA01      		movw r30,r20
 762 03e4 E050      		subi r30,lo8(-(owi_IDs_pinMask))
 763 03e6 F040      		sbci r31,hi8(-(owi_IDs_pinMask))
 764 03e8 8083      		st Z,r24
 171:one_wire.c    ****             {
 766               	.LM48:
 767 03ea 8091 0000 		lds r24,globalDebugLevel
 768 03ee 8230      		cpi r24,lo8(2)
 769 03f0 00F4      		brsh .+2
 770 03f2 00C0      		rjmp .L18
 171:one_wire.c    ****             {
 772               	.LM49:
 773 03f4 8091 0000 		lds r24,globalDebugSystemMask
 774 03f8 9091 0000 		lds r25,globalDebugSystemMask+1
 775 03fc A091 0000 		lds r26,globalDebugSystemMask+2
 776 0400 B091 0000 		lds r27,globalDebugSystemMask+3
 777 0404 90FF      		sbrs r25,0
 778 0406 00C0      		rjmp .L18
 173:one_wire.c    ****                 printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("bus: %
 780               	.LM50:
 781 0408 B901      		movw r22,r18
 782 040a 6050      		subi r22,lo8(-(owi_IDs))
 783 040c 7040      		sbci r23,hi8(-(owi_IDs))
 784 040e 80E0      		ldi r24,lo8(owi_id_string)
 785 0410 90E0      		ldi r25,hi8(owi_id_string)
 786 0412 0E94 0000 		call owiCreateIdString
 174:one_wire.c    ****             }
 788               	.LM51:
 789 0416 4091 0000 		lds r20,countDEV
 790 041a 842F      		mov r24,r20
 791 041c 9927      		clr r25
 792 041e 87FD      		sbrc r24,7
 793 0420 9095      		com r25
 794 0422 20E0      		ldi r18,lo8(owi_id_string)
 795 0424 30E0      		ldi r19,hi8(owi_id_string)
 796 0426 3F93      		push r19
 797 0428 2F93      		push r18
 798 042a 5091 0000 		lds r21,countDEVbus
 799 042e 252F      		mov r18,r21
 800 0430 3327      		clr r19
 801 0432 27FD      		sbrc r18,7
 802 0434 3095      		com r19
 803 0436 3F93      		push r19
 804 0438 5F93      		push r21
 805 043a 9F93      		push r25
 806 043c 4F93      		push r20
 807 043e FC01      		movw r30,r24
 808 0440 E050      		subi r30,lo8(-(owi_IDs_pinMask))
 809 0442 F040      		sbci r31,hi8(-(owi_IDs_pinMask))
 810 0444 8081      		ld r24,Z
 811 0446 1F92      		push __zero_reg__
 812 0448 8F93      		push r24
 813 044a BF92      		push r11
 814 044c CF92      		push r12
 815 044e A0E0      		ldi r26,lo8(__c.3095)
 816 0450 B0E0      		ldi r27,hi8(__c.3095)
 817 0452 BF93      		push r27
 818 0454 AF93      		push r26
 819 0456 A0E0      		ldi r26,lo8(filename)
 820 0458 B0E0      		ldi r27,hi8(filename)
 821 045a BF93      		push r27
 822 045c AF93      		push r26
 823 045e 1F92      		push __zero_reg__
 824 0460 FEEA      		ldi r31,lo8(-82)
 825 0462 FF93      		push r31
 826 0464 1F92      		push __zero_reg__
 827 0466 1F92      		push __zero_reg__
 828 0468 1F92      		push __zero_reg__
 829 046a AF92      		push r10
 830 046c 22E0      		ldi r18,lo8(2)
 831 046e 2F93      		push r18
 832 0470 E091 0000 		lds r30,printDebug_p
 833 0474 F091 0000 		lds r31,printDebug_p+1
 834 0478 0995      		icall
 835 047a 0FB6      		in __tmp_reg__,__SREG__
 836 047c F894      		cli
 837 047e DEBF      		out __SP_H__,r29
 838 0480 0FBE      		out __SREG__,__tmp_reg__
 839 0482 CDBF      		out __SP_L__,r28
 840               	.L18:
 177:one_wire.c    ****             countDEV++;
 842               	.LM52:
 843 0484 8091 0000 		lds r24,countDEVbus
 844 0488 8F5F      		subi r24,lo8(-(1))
 845 048a 8093 0000 		sts countDEVbus,r24
 178:one_wire.c    **** 
 847               	.LM53:
 848 048e 8091 0000 		lds r24,countDEV
 849 0492 8F5F      		subi r24,lo8(-(1))
 850 0494 8093 0000 		sts countDEV,r24
 851               	.L15:
 124:one_wire.c    ****             owi_IDs_pinMask[countDEV] = 0;
 853               	.LM54:
 854 0498 9FEF      		ldi r25,-1
 855 049a 891A      		sub r8,r25
 856 049c 990A      		sbc r9,r25
 857 049e 90E0      		ldi r25,0
 858 04a0 00C0      		rjmp .L9
 859               	.L19:
 860               	.LBE22:
 182:one_wire.c    ****       } //end of if((PD=OWI_DetectPresence(pins[pinBusPatternIndex]))!=0)
 862               	.LM55:
 863 04a2 9F92      		push r9
 864 04a4 8F92      		push r8
 865 04a6 2091 0000 		lds r18,countDEVbus
 866 04aa 822F      		mov r24,r18
 867 04ac 9927      		clr r25
 868 04ae 87FD      		sbrc r24,7
 869 04b0 9095      		com r25
 870 04b2 9F93      		push r25
 871 04b4 2F93      		push r18
 872 04b6 BF92      		push r11
 873 04b8 CF92      		push r12
 874 04ba 80E0      		ldi r24,lo8(__c.3099)
 875 04bc 90E0      		ldi r25,hi8(__c.3099)
 876 04be 9F93      		push r25
 877 04c0 8F93      		push r24
 878 04c2 A0E0      		ldi r26,lo8(filename)
 879 04c4 B0E0      		ldi r27,hi8(filename)
 880 04c6 BF93      		push r27
 881 04c8 AF93      		push r26
 882 04ca 1F92      		push __zero_reg__
 883 04cc 86EB      		ldi r24,lo8(-74)
 884 04ce 8F93      		push r24
 885 04d0 1F92      		push __zero_reg__
 886 04d2 1F92      		push __zero_reg__
 887 04d4 1F92      		push __zero_reg__
 888 04d6 88E0      		ldi r24,lo8(8)
 889 04d8 8F93      		push r24
 890 04da 82E0      		ldi r24,lo8(2)
 891 04dc 8F93      		push r24
 892               	.L37:
 893 04de E091 0000 		lds r30,printDebug_p
 894 04e2 F091 0000 		lds r31,printDebug_p+1
 895 04e6 0995      		icall
 896 04e8 00C0      		rjmp .L36
 897               	.L8:
 898               	.LBE24:
 186:one_wire.c    ****          continue;
 900               	.LM56:
 901 04ea 5F92      		push r5
 902 04ec 4F92      		push r4
 903 04ee A0E0      		ldi r26,lo8(filename)
 904 04f0 B0E0      		ldi r27,hi8(filename)
 905 04f2 BF93      		push r27
 906 04f4 AF93      		push r26
 907 04f6 1F92      		push __zero_reg__
 908 04f8 8AEB      		ldi r24,lo8(-70)
 909 04fa 8F93      		push r24
 910 04fc 1F92      		push __zero_reg__
 911 04fe 1F92      		push __zero_reg__
 912 0500 1F92      		push __zero_reg__
 913 0502 88E0      		ldi r24,lo8(8)
 914 0504 8F93      		push r24
 915 0506 82E0      		ldi r24,lo8(2)
 916 0508 8F93      		push r24
 917 050a 0995      		icall
 918               	.L36:
 187:one_wire.c    ****       }
 920               	.LM57:
 921 050c 0FB6      		in __tmp_reg__,__SREG__
 922 050e F894      		cli
 923 0510 DEBF      		out __SP_H__,r29
 924 0512 0FBE      		out __SREG__,__tmp_reg__
 925 0514 CDBF      		out __SP_L__,r28
 926 0516 0F5F      		subi r16,-1
 927 0518 1F4F      		sbci r17,-1
 928 051a 9FEF      		ldi r25,-1
 929 051c E91A      		sub r14,r25
 930 051e F90A      		sbc r15,r25
  75:one_wire.c    ****    {
 932               	.LM58:
 933 0520 0630      		cpi r16,6
 934 0522 1105      		cpc r17,__zero_reg__
 935 0524 01F0      		breq .+2
 936 0526 00C0      		rjmp .L3
 937 0528 00C0      		rjmp .L24
 938               	.L23:
 939               	.LBE25:
 194:one_wire.c    ****    }
 195:one_wire.c    **** 
 196:one_wire.c    **** 
 197:one_wire.c    ****    printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("found %i devices"),
 941               	.LM59:
 942 052a 2091 0000 		lds r18,countDEV
 943 052e 822F      		mov r24,r18
 944 0530 9927      		clr r25
 945 0532 87FD      		sbrc r24,7
 946 0534 9095      		com r25
 947 0536 9F93      		push r25
 948 0538 2F93      		push r18
 949 053a 80E0      		ldi r24,lo8(__c.3106)
 950 053c 90E0      		ldi r25,hi8(__c.3106)
 951 053e 9F93      		push r25
 952 0540 8F93      		push r24
 953 0542 80E0      		ldi r24,lo8(filename)
 954 0544 90E0      		ldi r25,hi8(filename)
 955 0546 9F93      		push r25
 956 0548 8F93      		push r24
 957 054a 1F92      		push __zero_reg__
 958 054c 85EC      		ldi r24,lo8(-59)
 959 054e 8F93      		push r24
 960 0550 1F92      		push __zero_reg__
 961 0552 1F92      		push __zero_reg__
 962 0554 1F92      		push __zero_reg__
 963 0556 88E0      		ldi r24,lo8(8)
 964 0558 8F93      		push r24
 965 055a 82E0      		ldi r24,lo8(2)
 966 055c 8F93      		push r24
 967 055e E091 0000 		lds r30,printDebug_p
 968 0562 F091 0000 		lds r31,printDebug_p+1
 969 0566 0995      		icall
 198:one_wire.c    **** 
 199:one_wire.c    ****    return countDEV;
 971               	.LM60:
 972 0568 8091 0000 		lds r24,countDEV
 973 056c 0FB6      		in __tmp_reg__,__SREG__
 974 056e F894      		cli
 975 0570 DEBF      		out __SP_H__,r29
 976 0572 0FBE      		out __SREG__,__tmp_reg__
 977 0574 CDBF      		out __SP_L__,r28
 978               	.L16:
 979               	/* epilogue start */
 200:one_wire.c    **** 
 201:one_wire.c    **** }// END of owiReadDevicesID function
 981               	.LM61:
 982 0576 0F90      		pop __tmp_reg__
 983 0578 DF91      		pop r29
 984 057a CF91      		pop r28
 985 057c 1F91      		pop r17
 986 057e 0F91      		pop r16
 987 0580 FF90      		pop r15
 988 0582 EF90      		pop r14
 989 0584 DF90      		pop r13
 990 0586 CF90      		pop r12
 991 0588 BF90      		pop r11
 992 058a AF90      		pop r10
 993 058c 9F90      		pop r9
 994 058e 8F90      		pop r8
 995 0590 7F90      		pop r7
 996 0592 6F90      		pop r6
 997 0594 5F90      		pop r5
 998 0596 4F90      		pop r4
 999 0598 3F90      		pop r3
 1000 059a 2F90      		pop r2
 1001 059c 0895      		ret
 1019               	.Lscope2:
 1020               		.section	.rodata.str1.1
 1021               	.LC1:
 1022 0021 2573 2530 		.string	"%s%02X "
 1022      3258 2000 
 1023               	.LC2:
 1024 0029 2573 3078 		.string	"%s0x%02X "
 1024      2530 3258 
 1024      2000 
 1025               		.text
 1028               	.global	owiShowDevicesID
 1030               	owiShowDevicesID:
 202:one_wire.c    **** 
 203:one_wire.c    **** /*
 204:one_wire.c    ****  * this function lists IDs on all devices connected to one wire bus
 205:one_wire.c    ****  * the input parameter is the pointer to the uartStruct
 206:one_wire.c    ****  * returns the number of found devices
 207:one_wire.c    ****  */
 208:one_wire.c    **** 
 209:one_wire.c    **** int8_t owiShowDevicesID( struct uartStruct* ptr_myuartStruct)
 210:one_wire.c    **** {
 1032               	.LM62:
 1033               	.LFBB3:
 1034 059e 2F92      		push r2
 1035 05a0 3F92      		push r3
 1036 05a2 4F92      		push r4
 1037 05a4 5F92      		push r5
 1038 05a6 6F92      		push r6
 1039 05a8 7F92      		push r7
 1040 05aa 8F92      		push r8
 1041 05ac 9F92      		push r9
 1042 05ae AF92      		push r10
 1043 05b0 BF92      		push r11
 1044 05b2 CF92      		push r12
 1045 05b4 DF92      		push r13
 1046 05b6 EF92      		push r14
 1047 05b8 FF92      		push r15
 1048 05ba 0F93      		push r16
 1049 05bc 1F93      		push r17
 1050 05be CF93      		push r28
 1051 05c0 DF93      		push r29
 1052 05c2 CDB7      		in r28,__SP_L__
 1053 05c4 DEB7      		in r29,__SP_H__
 1054 05c6 EC97      		sbiw r28,60
 1055 05c8 0FB6      		in __tmp_reg__,__SREG__
 1056 05ca F894      		cli
 1057 05cc DEBF      		out __SP_H__,r29
 1058 05ce 0FBE      		out __SREG__,__tmp_reg__
 1059 05d0 CDBF      		out __SP_L__,r28
 1060               	/* prologue: function */
 1061               	/* frame size = 60 */
 1062               	/* stack size = 78 */
 1063               	.L__stack_usage = 78
 211:one_wire.c    **** #warning TODO: remove local foundDevice string, not neccessary
 212:one_wire.c    **** #define OWI_FOUND_DEVICE_STRING_LENGTH 60
 213:one_wire.c    ****    char foundDevice[OWI_FOUND_DEVICE_STRING_LENGTH]; /*string variable to store all found devices*/
 214:one_wire.c    ****    uint8_t familyCode = 0;
 215:one_wire.c    ****    uint8_t countFoundFamilyCode = 0;
 216:one_wire.c    ****    uint8_t deviceIndex = 0;
 217:one_wire.c    **** 
 218:one_wire.c    ****     printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR(""));
 1065               	.LM63:
 1066 05d2 80E0      		ldi r24,lo8(__c.3115)
 1067 05d4 90E0      		ldi r25,hi8(__c.3115)
 1068 05d6 9F93      		push r25
 1069 05d8 8F93      		push r24
 1070 05da 30E0      		ldi r19,lo8(filename)
 1071 05dc E32E      		mov r14,r19
 1072 05de 30E0      		ldi r19,hi8(filename)
 1073 05e0 F32E      		mov r15,r19
 1074 05e2 FF92      		push r15
 1075 05e4 EF92      		push r14
 1076 05e6 1F92      		push __zero_reg__
 1077 05e8 8AED      		ldi r24,lo8(-38)
 1078 05ea 8F93      		push r24
 1079 05ec 1F92      		push __zero_reg__
 1080 05ee 1F92      		push __zero_reg__
 1081 05f0 1F92      		push __zero_reg__
 1082 05f2 48E0      		ldi r20,lo8(8)
 1083 05f4 C42E      		mov r12,r20
 1084 05f6 CF92      		push r12
 1085 05f8 52E0      		ldi r21,lo8(2)
 1086 05fa D52E      		mov r13,r21
 1087 05fc DF92      		push r13
 1088 05fe E091 0000 		lds r30,printDebug_p
 1089 0602 F091 0000 		lds r31,printDebug_p+1
 1090 0606 0995      		icall
 219:one_wire.c    **** /*
 220:one_wire.c    ****    if ( NULL == ptr_myuartStruct )
 221:one_wire.c    ****    {
 222:one_wire.c    **** 	   ptr_myuartStruct = ptr_uartStruct ;
 223:one_wire.c    ****    }
 224:one_wire.c    **** */
 225:one_wire.c    **** 
 226:one_wire.c    ****    /* read in list of devices */
 227:one_wire.c    ****    countDEV = owiReadDevicesID( BUSES );
 1092               	.LM64:
 1093 0608 80E0      		ldi r24,lo8(BUSES)
 1094 060a 90E0      		ldi r25,hi8(BUSES)
 1095 060c 0E94 0000 		call owiReadDevicesID
 1096 0610 8093 0000 		sts countDEV,r24
 228:one_wire.c    **** 
 229:one_wire.c    ****    /* once clear output string (later cleared by output procedure) */
 230:one_wire.c    ****    clearString(foundDevice, OWI_FOUND_DEVICE_STRING_LENGTH);
 1098               	.LM65:
 1099 0614 6CE3      		ldi r22,lo8(60)
 1100 0616 70E0      		ldi r23,0
 1101 0618 8E01      		movw r16,r28
 1102 061a 0F5F      		subi r16,-1
 1103 061c 1F4F      		sbci r17,-1
 1104 061e C801      		movw r24,r16
 1105 0620 0E94 0000 		call clearString
 231:one_wire.c    **** 
 232:one_wire.c    ****    /* check size of family code */
 233:one_wire.c    ****    if ( 0 < ptr_uartStruct->number_of_arguments  && 0xFF < ptr_uartStruct->Uart_Message_ID  )
 1107               	.LM66:
 1108 0624 A091 0000 		lds r26,ptr_uartStruct
 1109 0628 B091 0000 		lds r27,ptr_uartStruct+1
 1110 062c 0FB6      		in __tmp_reg__,__SREG__
 1111 062e F894      		cli
 1112 0630 DEBF      		out __SP_H__,r29
 1113 0632 0FBE      		out __SREG__,__tmp_reg__
 1114 0634 CDBF      		out __SP_L__,r28
 1115 0636 5B96      		adiw r26,27
 1116 0638 8C91      		ld r24,X
 1117 063a 5B97      		sbiw r26,27
 1118 063c E091 0000 		lds r30,printDebug_p
 1119 0640 F091 0000 		lds r31,printDebug_p+1
 1120 0644 1816      		cp __zero_reg__,r24
 1121 0646 04F4      		brge .L42
 1123               	.LM67:
 1124 0648 4D91      		ld r20,X+
 1125 064a 5D91      		ld r21,X+
 1126 064c 6D91      		ld r22,X+
 1127 064e 7C91      		ld r23,X
 1128 0650 1397      		sbiw r26,3
 1129 0652 4F3F      		cpi r20,-1
 1130 0654 5105      		cpc r21,__zero_reg__
 1131 0656 6105      		cpc r22,__zero_reg__
 1132 0658 7105      		cpc r23,__zero_reg__
 1133 065a 01F0      		breq .L42
 1134 065c 00F0      		brlo .L42
 234:one_wire.c    ****    {
 235:one_wire.c    ****        printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("invalid family 
 1136               	.LM68:
 1137 065e 7F93      		push r23
 1138 0660 6F93      		push r22
 1139 0662 5F93      		push r21
 1140 0664 4F93      		push r20
 1141 0666 80E0      		ldi r24,lo8(__c.3117)
 1142 0668 90E0      		ldi r25,hi8(__c.3117)
 1143 066a 9F93      		push r25
 1144 066c 8F93      		push r24
 1145 066e FF92      		push r15
 1146 0670 EF92      		push r14
 1147 0672 1F92      		push __zero_reg__
 1148 0674 8BEE      		ldi r24,lo8(-21)
 1149 0676 8F93      		push r24
 1150 0678 1F92      		push __zero_reg__
 1151 067a 1F92      		push __zero_reg__
 1152 067c 1F92      		push __zero_reg__
 1153 067e CF92      		push r12
 1154 0680 DF92      		push r13
 1155 0682 0995      		icall
 236:one_wire.c    **** 
 237:one_wire.c    ****       CommunicationError_p(ERRA, dynamicMessage_ErrorIndex, TRUE, PSTR("invalid family code, exceed
 1157               	.LM69:
 1158 0684 80E0      		ldi r24,lo8(__c.3119)
 1159 0686 90E0      		ldi r25,hi8(__c.3119)
 1160 0688 9F93      		push r25
 1161 068a 8F93      		push r24
 1162 068c 81E0      		ldi r24,lo8(1)
 1163 068e 8F93      		push r24
 1164 0690 9FEF      		ldi r25,lo8(-1)
 1165 0692 9F93      		push r25
 1166 0694 9CE9      		ldi r25,lo8(-100)
 1167 0696 9F93      		push r25
 1168 0698 8F93      		push r24
 1169 069a E091 0000 		lds r30,CommunicationError_p
 1170 069e F091 0000 		lds r31,CommunicationError_p+1
 1171 06a2 0995      		icall
 238:one_wire.c    ****       return 0;
 1173               	.LM70:
 1174 06a4 0FB6      		in __tmp_reg__,__SREG__
 1175 06a6 F894      		cli
 1176 06a8 DEBF      		out __SP_H__,r29
 1177 06aa 0FBE      		out __SREG__,__tmp_reg__
 1178 06ac CDBF      		out __SP_L__,r28
 1179 06ae 80E0      		ldi r24,0
 1180 06b0 00C0      		rjmp .L58
 1181               	.L42:
 239:one_wire.c    ****    }
 240:one_wire.c    ****    else
 241:one_wire.c    ****    {
 242:one_wire.c    ****        printDebug_p(debugLevelEventDebugVerbose, debugSystemOWI, __LINE__, filename, PSTR("valid fa
 1183               	.LM71:
 1184 06b2 1396      		adiw r26,3
 1185 06b4 8C91      		ld r24,X
 1186 06b6 1397      		sbiw r26,3
 1187 06b8 8F93      		push r24
 1188 06ba 1296      		adiw r26,2
 1189 06bc 8C91      		ld r24,X
 1190 06be 1297      		sbiw r26,2
 1191 06c0 8F93      		push r24
 1192 06c2 1196      		adiw r26,1
 1193 06c4 8C91      		ld r24,X
 1194 06c6 1197      		sbiw r26,1
 1195 06c8 8F93      		push r24
 1196 06ca 8C91      		ld r24,X
 1197 06cc 8F93      		push r24
 1198 06ce 80E0      		ldi r24,lo8(__c.3121)
 1199 06d0 90E0      		ldi r25,hi8(__c.3121)
 1200 06d2 9F93      		push r25
 1201 06d4 8F93      		push r24
 1202 06d6 80E0      		ldi r24,lo8(filename)
 1203 06d8 90E0      		ldi r25,hi8(filename)
 1204 06da 9F93      		push r25
 1205 06dc 8F93      		push r24
 1206 06de 1F92      		push __zero_reg__
 1207 06e0 82EF      		ldi r24,lo8(-14)
 1208 06e2 8F93      		push r24
 1209 06e4 1F92      		push __zero_reg__
 1210 06e6 1F92      		push __zero_reg__
 1211 06e8 1F92      		push __zero_reg__
 1212 06ea 88E0      		ldi r24,lo8(8)
 1213 06ec 8F93      		push r24
 1214 06ee 83E0      		ldi r24,lo8(3)
 1215 06f0 8F93      		push r24
 1216 06f2 0995      		icall
 243:one_wire.c    **** 
 244:one_wire.c    ****       familyCode = (uint8_t) (ptr_uartStruct->Uart_Message_ID & 0xFF);
 1218               	.LM72:
 1219 06f4 E091 0000 		lds r30,ptr_uartStruct
 1220 06f8 F091 0000 		lds r31,ptr_uartStruct+1
 1221 06fc F080      		ld r15,Z
 245:one_wire.c    ****    }
 246:one_wire.c    ****    countFoundFamilyCode = 0;
 247:one_wire.c    **** 
 248:one_wire.c    ****    /* once clear output string (later cleared by output procedure) */
 249:one_wire.c    ****    clearString(message, BUFFER_SIZE);
 1223               	.LM73:
 1224 06fe 6CE8      		ldi r22,lo8(-116)
 1225 0700 70E0      		ldi r23,0
 1226 0702 80E0      		ldi r24,lo8(message)
 1227 0704 90E0      		ldi r25,hi8(message)
 1228 0706 0E94 0000 		call clearString
 250:one_wire.c    ****    createReceiveHeader(NULL, message, 0);
 1230               	.LM74:
 1231 070a 40E0      		ldi r20,0
 1232 070c 50E0      		ldi r21,0
 1233 070e 60E0      		ldi r22,lo8(message)
 1234 0710 70E0      		ldi r23,hi8(message)
 1235 0712 80E0      		ldi r24,0
 1236 0714 90E0      		ldi r25,0
 1237 0716 0E94 0000 		call createReceiveHeader
 251:one_wire.c    ****    if ( 0 != familyCode )
 1239               	.LM75:
 1240 071a 0FB6      		in __tmp_reg__,__SREG__
 1241 071c F894      		cli
 1242 071e DEBF      		out __SP_H__,r29
 1243 0720 0FBE      		out __SREG__,__tmp_reg__
 1244 0722 CDBF      		out __SP_L__,r28
 1245 0724 FF20      		tst r15
 1246 0726 01F0      		breq .L44
 252:one_wire.c    ****    {
 253:one_wire.c    ****       snprintf(message, BUFFER_SIZE - 1, "%s%02X ", message, familyCode);
 1248               	.LM76:
 1249 0728 1F92      		push __zero_reg__
 1250 072a FF92      		push r15
 1251 072c 80E0      		ldi r24,lo8(message)
 1252 072e 90E0      		ldi r25,hi8(message)
 1253 0730 9F93      		push r25
 1254 0732 8F93      		push r24
 1255 0734 40E0      		ldi r20,lo8(.LC1)
 1256 0736 50E0      		ldi r21,hi8(.LC1)
 1257 0738 5F93      		push r21
 1258 073a 4F93      		push r20
 1259 073c 1F92      		push __zero_reg__
 1260 073e 3BE8      		ldi r19,lo8(-117)
 1261 0740 3F93      		push r19
 1262 0742 9F93      		push r25
 1263 0744 8F93      		push r24
 1264 0746 0E94 0000 		call snprintf
 1265 074a 0FB6      		in __tmp_reg__,__SREG__
 1266 074c F894      		cli
 1267 074e DEBF      		out __SP_H__,r29
 1268 0750 0FBE      		out __SREG__,__tmp_reg__
 1269 0752 CDBF      		out __SP_L__,r28
 1270               	.L44:
 210:one_wire.c    **** #warning TODO: remove local foundDevice string, not neccessary
 1272               	.LM77:
 1273 0754 E12C      		mov r14,__zero_reg__
 1274 0756 312C      		mov r3,__zero_reg__
 254:one_wire.c    ****    }
 255:one_wire.c    **** 
 256:one_wire.c    ****    /*this loop will show the IDs on foundDevice*/
 257:one_wire.c    ****    for ( deviceIndex = 0 ; deviceIndex < countDEV ; deviceIndex++ )
 258:one_wire.c    ****    {
 259:one_wire.c    ****       // output device id of found devices
 260:one_wire.c    ****       // check if requested Family Code (familyCode)
 261:one_wire.c    ****       // does match the current one or are all allowed (0), else continue
 262:one_wire.c    ****       if ( ( familyCode != 0 ) && ( owi_IDs[deviceIndex][0] != familyCode ) )
 263:one_wire.c    ****       {
 264:one_wire.c    ****          continue;
 265:one_wire.c    ****       }
 266:one_wire.c    **** 
 267:one_wire.c    ****       /*clear strings*/
 268:one_wire.c    ****       clearString(owi_id_string, OWI_ID_LENGTH);
 269:one_wire.c    **** 
 270:one_wire.c    ****       /* assign current id to string */
 271:one_wire.c    ****       owiCreateIdString(owi_id_string, owi_IDs[deviceIndex]);
 272:one_wire.c    **** 
 273:one_wire.c    ****       /*send the data to see the list of all found devices*/
 274:one_wire.c    ****       snprintf_P(foundDevice, OWI_FOUND_DEVICE_STRING_LENGTH - 1, PSTR("%sbus mask: "), message, co
 1276               	.LM78:
 1277 0758 B0E0      		ldi r27,lo8(__c.3124)
 1278 075a CB2E      		mov r12,r27
 1279 075c B0E0      		ldi r27,hi8(__c.3124)
 1280 075e DB2E      		mov r13,r27
 1281 0760 8BE3      		ldi r24,lo8(59)
 1282 0762 282E      		mov r2,r24
 275:one_wire.c    ****       snprintf(foundDevice, OWI_FOUND_DEVICE_STRING_LENGTH - 1, "%s0x%02X ", foundDevice, owi_IDs_p
 1284               	.LM79:
 1285 0764 90E0      		ldi r25,lo8(.LC2)
 1286 0766 A92E      		mov r10,r25
 1287 0768 90E0      		ldi r25,hi8(.LC2)
 1288 076a B92E      		mov r11,r25
 276:one_wire.c    ****       snprintf_P(foundDevice, OWI_FOUND_DEVICE_STRING_LENGTH - 1, PSTR("%sID: %s"), foundDevice, ow
 1290               	.LM80:
 1291 076c 20E0      		ldi r18,lo8(__c.3126)
 1292 076e 822E      		mov r8,r18
 1293 0770 20E0      		ldi r18,hi8(__c.3126)
 1294 0772 922E      		mov r9,r18
 1295               	.L45:
 257:one_wire.c    ****    {
 1297               	.LM81:
 1298 0774 6E2C      		mov r6,r14
 1299 0776 712C      		mov r7,__zero_reg__
 1300 0778 8091 0000 		lds r24,countDEV
 1301 077c 9927      		clr r25
 1302 077e 87FD      		sbrc r24,7
 1303 0780 9095      		com r25
 1304 0782 6816      		cp r6,r24
 1305 0784 7906      		cpc r7,r25
 1306 0786 04F0      		brlt .+2
 1307 0788 00C0      		rjmp .L59
 1308 078a 2301      		movw r4,r6
 1309 078c A3E0      		ldi r26,3
 1310               		1:
 1311 078e 440C      		lsl r4
 1312 0790 551C      		rol r5
 1313 0792 AA95      		dec r26
 1314 0794 01F4      		brne 1b
 262:one_wire.c    ****       {
 1316               	.LM82:
 1317 0796 FF20      		tst r15
 1318 0798 01F0      		breq .L46
 262:one_wire.c    ****       {
 1320               	.LM83:
 1321 079a F201      		movw r30,r4
 1322 079c E050      		subi r30,lo8(-(owi_IDs))
 1323 079e F040      		sbci r31,hi8(-(owi_IDs))
 1324 07a0 8081      		ld r24,Z
 1325 07a2 8F11      		cpse r24,r15
 1326 07a4 00C0      		rjmp .L47
 1327               	.L46:
 268:one_wire.c    **** 
 1329               	.LM84:
 1330 07a6 61E1      		ldi r22,lo8(17)
 1331 07a8 70E0      		ldi r23,0
 1332 07aa 80E0      		ldi r24,lo8(owi_id_string)
 1333 07ac 90E0      		ldi r25,hi8(owi_id_string)
 1334 07ae 0E94 0000 		call clearString
 271:one_wire.c    **** 
 1336               	.LM85:
 1337 07b2 B201      		movw r22,r4
 1338 07b4 6050      		subi r22,lo8(-(owi_IDs))
 1339 07b6 7040      		sbci r23,hi8(-(owi_IDs))
 1340 07b8 80E0      		ldi r24,lo8(owi_id_string)
 1341 07ba 90E0      		ldi r25,hi8(owi_id_string)
 1342 07bc 0E94 0000 		call owiCreateIdString
 274:one_wire.c    ****       snprintf(foundDevice, OWI_FOUND_DEVICE_STRING_LENGTH - 1, "%s0x%02X ", foundDevice, owi_IDs_p
 1344               	.LM86:
 1345 07c0 1F92      		push __zero_reg__
 1346 07c2 3F92      		push r3
 1347 07c4 A0E0      		ldi r26,lo8(message)
 1348 07c6 B0E0      		ldi r27,hi8(message)
 1349 07c8 BF93      		push r27
 1350 07ca AF93      		push r26
 1351 07cc DF92      		push r13
 1352 07ce CF92      		push r12
 1353 07d0 1F92      		push __zero_reg__
 1354 07d2 2F92      		push r2
 1355 07d4 1F93      		push r17
 1356 07d6 0F93      		push r16
 1357 07d8 0E94 0000 		call snprintf_P
 275:one_wire.c    ****       snprintf_P(foundDevice, OWI_FOUND_DEVICE_STRING_LENGTH - 1, PSTR("%sID: %s"), foundDevice, ow
 1359               	.LM87:
 1360 07dc F301      		movw r30,r6
 1361 07de E050      		subi r30,lo8(-(owi_IDs_pinMask))
 1362 07e0 F040      		sbci r31,hi8(-(owi_IDs_pinMask))
 1363 07e2 8081      		ld r24,Z
 1364 07e4 1F92      		push __zero_reg__
 1365 07e6 8F93      		push r24
 1366 07e8 1F93      		push r17
 1367 07ea 0F93      		push r16
 1368 07ec BF92      		push r11
 1369 07ee AF92      		push r10
 1370 07f0 1F92      		push __zero_reg__
 1371 07f2 2F92      		push r2
 1372 07f4 1F93      		push r17
 1373 07f6 0F93      		push r16
 1374 07f8 0E94 0000 		call snprintf
 1376               	.LM88:
 1377 07fc 80E0      		ldi r24,lo8(owi_id_string)
 1378 07fe 90E0      		ldi r25,hi8(owi_id_string)
 1379 0800 9F93      		push r25
 1380 0802 8F93      		push r24
 1381 0804 1F93      		push r17
 1382 0806 0F93      		push r16
 1383 0808 9F92      		push r9
 1384 080a 8F92      		push r8
 1385 080c 1F92      		push __zero_reg__
 1386 080e 2F92      		push r2
 1387 0810 1F93      		push r17
 1388 0812 0F93      		push r16
 1389 0814 0E94 0000 		call snprintf_P
 277:one_wire.c    ****       /*send the data*/
 278:one_wire.c    ****       UART0_Send_Message_String_p(foundDevice, OWI_FOUND_DEVICE_STRING_LENGTH);
 1391               	.LM89:
 1392 0818 E091 0000 		lds r30,UART0_Send_Message_String_p
 1393 081c F091 0000 		lds r31,UART0_Send_Message_String_p+1
 1394 0820 6CE3      		ldi r22,lo8(60)
 1395 0822 70E0      		ldi r23,0
 1396 0824 C801      		movw r24,r16
 1397 0826 0995      		icall
 279:one_wire.c    **** 
 280:one_wire.c    ****       countFoundFamilyCode++;
 1399               	.LM90:
 1400 0828 3394      		inc r3
 1401 082a 0FB6      		in __tmp_reg__,__SREG__
 1402 082c F894      		cli
 1403 082e DEBF      		out __SP_H__,r29
 1404 0830 0FBE      		out __SREG__,__tmp_reg__
 1405 0832 CDBF      		out __SP_L__,r28
 1406               	.L47:
 257:one_wire.c    ****    {
 1408               	.LM91:
 1409 0834 E394      		inc r14
 1410 0836 00C0      		rjmp .L45
 1411               	.L59:
 281:one_wire.c    ****    } //end of for deviceIndex
 282:one_wire.c    **** 
 283:one_wire.c    ****    // if any device has been found, add a newline at the end
 284:one_wire.c    ****    if (0 < countFoundFamilyCode)
 1413               	.LM92:
 1414 0838 3320      		tst r3
 1415 083a 01F0      		breq .L49
 285:one_wire.c    ****    {
 286:one_wire.c    ****       clearString(uart_message_string, BUFFER_SIZE);
 1417               	.LM93:
 1418 083c 6CE8      		ldi r22,lo8(-116)
 1419 083e 70E0      		ldi r23,0
 1420 0840 80E0      		ldi r24,lo8(uart_message_string)
 1421 0842 90E0      		ldi r25,hi8(uart_message_string)
 1422 0844 0E94 0000 		call clearString
 287:one_wire.c    ****       snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("%sfound %i devices"), message, countFo
 1424               	.LM94:
 1425 0848 1F92      		push __zero_reg__
 1426 084a 3F92      		push r3
 1427 084c 80E0      		ldi r24,lo8(message)
 1428 084e 90E0      		ldi r25,hi8(message)
 1429 0850 9F93      		push r25
 1430 0852 8F93      		push r24
 1431 0854 80E0      		ldi r24,lo8(__c.3131)
 1432 0856 90E0      		ldi r25,hi8(__c.3131)
 1433 0858 9F93      		push r25
 1434 085a 8F93      		push r24
 1435 085c 1F92      		push __zero_reg__
 1436 085e 8BE8      		ldi r24,lo8(-117)
 1437 0860 8F93      		push r24
 1438 0862 80E0      		ldi r24,lo8(uart_message_string)
 1439 0864 90E0      		ldi r25,hi8(uart_message_string)
 1440 0866 9F93      		push r25
 1441 0868 8F93      		push r24
 1442 086a 0E94 0000 		call snprintf_P
 288:one_wire.c    ****       UART0_Send_Message_String_p(NULL,0);
 1444               	.LM95:
 1445 086e E091 0000 		lds r30,UART0_Send_Message_String_p
 1446 0872 F091 0000 		lds r31,UART0_Send_Message_String_p+1
 1447 0876 60E0      		ldi r22,0
 1448 0878 70E0      		ldi r23,0
 1449 087a 80E0      		ldi r24,0
 1450 087c 90E0      		ldi r25,0
 1451 087e 0995      		icall
 1452 0880 0FB6      		in __tmp_reg__,__SREG__
 1453 0882 F894      		cli
 1454 0884 DEBF      		out __SP_H__,r29
 1455 0886 0FBE      		out __SREG__,__tmp_reg__
 1456 0888 CDBF      		out __SP_L__,r28
 1457 088a 00C0      		rjmp .L50
 1458               	.L49:
 289:one_wire.c    ****    }
 290:one_wire.c    **** 
 291:one_wire.c    ****    // found any matching device??
 292:one_wire.c    ****    if ( 0 == countFoundFamilyCode && 0 != familyCode )
 1460               	.LM96:
 1461 088c FF20      		tst r15
 1462 088e 01F0      		breq .L50
 293:one_wire.c    ****    {
 294:one_wire.c    ****       generalErrorCode = CommunicationError_p(ERRG, GENERAL_ERROR_family_code_not_found, TRUE, NULL
 1464               	.LM97:
 1465 0890 1F92      		push __zero_reg__
 1466 0892 1F92      		push __zero_reg__
 1467 0894 81E0      		ldi r24,lo8(1)
 1468 0896 8F93      		push r24
 1469 0898 1F92      		push __zero_reg__
 1470 089a 82E0      		ldi r24,lo8(2)
 1471 089c 8F93      		push r24
 1472 089e 1F92      		push __zero_reg__
 1473 08a0 E091 0000 		lds r30,CommunicationError_p
 1474 08a4 F091 0000 		lds r31,CommunicationError_p+1
 1475 08a8 0995      		icall
 1476 08aa 90E0      		ldi r25,0
 1477 08ac 9093 0000 		sts generalErrorCode+1,r25
 1478 08b0 8093 0000 		sts generalErrorCode,r24
 1479 08b4 0F90      		pop __tmp_reg__
 1480 08b6 0F90      		pop __tmp_reg__
 1481 08b8 0F90      		pop __tmp_reg__
 1482 08ba 0F90      		pop __tmp_reg__
 1483 08bc 0F90      		pop __tmp_reg__
 1484 08be 0F90      		pop __tmp_reg__
 1485               	.L50:
 295:one_wire.c    ****    }//end of if ( 0 == countFoundFamilyCode && 0 != familyCode )
 296:one_wire.c    **** 
 297:one_wire.c    ****    return countFoundFamilyCode;
 1487               	.LM98:
 1488 08c0 832D      		mov r24,r3
 1489               	.L58:
 1490               	/* epilogue start */
 298:one_wire.c    **** 
 299:one_wire.c    **** }// END of owiShowDevicesID function
 1492               	.LM99:
 1493 08c2 EC96      		adiw r28,60
 1494 08c4 0FB6      		in __tmp_reg__,__SREG__
 1495 08c6 F894      		cli
 1496 08c8 DEBF      		out __SP_H__,r29
 1497 08ca 0FBE      		out __SREG__,__tmp_reg__
 1498 08cc CDBF      		out __SP_L__,r28
 1499 08ce DF91      		pop r29
 1500 08d0 CF91      		pop r28
 1501 08d2 1F91      		pop r17
 1502 08d4 0F91      		pop r16
 1503 08d6 FF90      		pop r15
 1504 08d8 EF90      		pop r14
 1505 08da DF90      		pop r13
 1506 08dc CF90      		pop r12
 1507 08de BF90      		pop r11
 1508 08e0 AF90      		pop r10
 1509 08e2 9F90      		pop r9
 1510 08e4 8F90      		pop r8
 1511 08e6 7F90      		pop r7
 1512 08e8 6F90      		pop r6
 1513 08ea 5F90      		pop r5
 1514 08ec 4F90      		pop r4
 1515 08ee 3F90      		pop r3
 1516 08f0 2F90      		pop r2
 1517 08f2 0895      		ret
 1525               	.Lscope3:
 1528               	.global	setOneWireBusMask
 1530               	setOneWireBusMask:
 300:one_wire.c    **** 
 301:one_wire.c    **** /*
 302:one_wire.c    ****  * owiFindFamilyDevicesAndAccessValues
 303:one_wire.c    ****  *
 304:one_wire.c    ****  * this function calls the read/write functions
 305:one_wire.c    ****  *   of the supported 1-wire devices
 306:one_wire.c    ****  * and sends the results to UART
 307:one_wire.c    ****  *
 308:one_wire.c    ****  * supported devices are:
 309:one_wire.c    ****  *
 310:one_wire.c    ****  *    - OWI_FAMILY_DS18B20_TEMP
 311:one_wire.c    ****  *    - OWI_FAMILY_DS18S20_TEMP
 312:one_wire.c    ****  *    - OWI_FAMILY_DS2405_SIMPLE_SWITCH
 313:one_wire.c    ****  *    - OWI_FAMILY_DS2413_DUAL_SWITCH
 314:one_wire.c    ****  *    - OWI_FAMILY_DS2450_ADC
 315:one_wire.c    ****  *
 316:one_wire.c    ****  * inputs:
 317:one_wire.c    ****  *    - pins:
 318:one_wire.c    ****  *           unsigned int8_t array pointer to the available pin_masks of the one-wire busses
 319:one_wire.c    ****  *    - countDev:
 320:one_wire.c    ****  *           unsigned int8_t number of devices available (found in previous lookup)
 321:one_wire.c    ****  *    - familyCode:
 322:one_wire.c    ****  *           byte to select a subset of the available devices belonging to this 1-wire family Code
 323:one_wire.c    ****  *    - selectedDeviceIndex
 324:one_wire.c    ****  *           index to select just one device by its index in the list of IDs owi_IDs[index]
 325:one_wire.c    ****  *              - < 0 : take everything
 326:one_wire.c    ****  *              - else: use as index
 327:one_wire.c    ****  *              - index >= countDev: error
 328:one_wire.c    ****  *    - ptr_value:
 329:one_wire.c    ****  *           void pointer pointing to the value to be casted by the following structures,
 330:one_wire.c    ****  *           if set switches to write access, else reading
 331:one_wire.c    ****  *              - NULL: read access
 332:one_wire.c    ****  *              - else: write access
 333:one_wire.c    ****  *
 334:one_wire.c    ****  * return values
 335:one_wire.c    ****  *    -  >= 0: number of found devices;
 336:one_wire.c    ****  *    -   < 0: errors;
 337:one_wire.c    ****  */
 338:one_wire.c    **** 
 339:one_wire.c    **** int8_t owiFindFamilyDevicesAndAccessValues( uint8_t *pins, uint8_t countDev, uint8_t familyCode, vo
 340:one_wire.c    **** {
 341:one_wire.c    ****    int8_t deviceIndex = 0;
 342:one_wire.c    **** # warning replace by a union
 343:one_wire.c    ****    uint32_t readValueADC  = 0;/*variable to read value of ADC channel*/
 344:one_wire.c    ****    uint32_t readValueTemp = 0;/*variable to read temperature of sensor*/
 345:one_wire.c    ****    uint16_t readValueDS   = 0;/*variable to read value of dual switch*/
 346:one_wire.c    ****    uint16_t writeValueDS  = 0;/*variable to write value of dual switch*/
 347:one_wire.c    ****    uint16_t readValueSS   = 0;/*variable to read value of simple switch*/
 348:one_wire.c    ****    
 349:one_wire.c    ****    uint16_t readValueOS   = 0;/*variable to read value of octal switch*/
 350:one_wire.c    ****    uint16_t writeValueOS  = 0;/*variable to write value of octal switch*/
 351:one_wire.c    ****    uint16_t ADCValues[4];
 352:one_wire.c    ****    
 353:one_wire.c    ****    uint8_t foundCounter = 0;
 354:one_wire.c    ****    uint8_t write_flag = FALSE;
 355:one_wire.c    ****    int8_t selectedDeviceIndex = -1;
 356:one_wire.c    **** 
 357:one_wire.c    ****    /* check input */
 358:one_wire.c    ****    if (NULL == pins)
 359:one_wire.c    ****    {
 360:one_wire.c    ****       CommunicationError_p(ERRG, dynamicMessage_ErrorIndex, FALSE, PSTR("fcn:FindFamilyDevicesAndGe
 361:one_wire.c    ****       return -1;
 362:one_wire.c    ****    }
 363:one_wire.c    **** 
 364:one_wire.c    ****    if ( 0 == countDev )
 365:one_wire.c    ****    {
 366:one_wire.c    ****       generalErrorCode = CommunicationError_p(ERRG, GENERAL_ERROR_no_device_is_connected_to_the_bus
 367:one_wire.c    ****       return 0;
 368:one_wire.c    ****    }
 369:one_wire.c    **** 
 370:one_wire.c    ****    if (ptr_owiStruct->idSelect_flag)
 371:one_wire.c    ****    {
 372:one_wire.c    ****       selectedDeviceIndex = owiFindIdAndGetIndex(ptr_owiStruct->id);
 373:one_wire.c    ****       if ( -1 == selectedDeviceIndex)
 374:one_wire.c    ****       {
 375:one_wire.c    ****     	 printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("no matching ID f
 376:one_wire.c    ****          return 0;
 377:one_wire.c    ****       }
 378:one_wire.c    ****       if ( -1 > selectedDeviceIndex )
 379:one_wire.c    ****       {
 380:one_wire.c    ****          CommunicationError_p(ERRG, dynamicMessage_ErrorIndex, TRUE, PSTR("fcn:owiFindFamilyDevices
 381:one_wire.c    ****          return -1;
 382:one_wire.c    ****       }
 383:one_wire.c    ****    }
 384:one_wire.c    **** 
 385:one_wire.c    ****    if ( selectedDeviceIndex >= countDev )
 386:one_wire.c    ****    {
 387:one_wire.c    ****       CommunicationError_p(ERRG, dynamicMessage_ErrorIndex, FALSE, PSTR("fcn:FindFamilyDevicesAndGe
 388:one_wire.c    ****       return -1;
 389:one_wire.c    ****    }
 390:one_wire.c    **** 
 391:one_wire.c    ****    /* is value pointer pointing to a real value, if not access mode is reading */
 392:one_wire.c    ****    if (NULL == ptr_value)
 393:one_wire.c    ****    {
 394:one_wire.c    ****       write_flag = FALSE;
 395:one_wire.c    ****    }
 396:one_wire.c    ****    else
 397:one_wire.c    ****    {
 398:one_wire.c    ****       write_flag = TRUE;
 399:one_wire.c    ****    }
 400:one_wire.c    **** 
 401:one_wire.c    ****    for ( deviceIndex = 0; deviceIndex < countDev ; deviceIndex++ )
 402:one_wire.c    ****    {
 403:one_wire.c    ****       /* is index selection used and does current device index match?*/
 404:one_wire.c    ****       if ( 0 <= selectedDeviceIndex && deviceIndex != selectedDeviceIndex) { continue; }
 405:one_wire.c    **** 
 406:one_wire.c    ****       /* does familyID matches current ID */
 407:one_wire.c    ****       if ( familyCode != owi_IDs[deviceIndex][0] )  { continue; }
 408:one_wire.c    **** 
 409:one_wire.c    ****       /* bus mask matches device's bus ? */
 410:one_wire.c    ****       if ( 0 == ( ( owiBusMask & owi_IDs_pinMask[deviceIndex] ) & 0xFF ) )
 411:one_wire.c    ****       {
 412:one_wire.c    ****            printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("bus %i does
 413:one_wire.c    ****           continue;
 414:one_wire.c    ****       }
 415:one_wire.c    **** 
 416:one_wire.c    ****       /*clear strings*/
 417:one_wire.c    ****       clearString(message, BUFFER_SIZE);
 418:one_wire.c    ****       clearString(resultString, BUFFER_SIZE);
 419:one_wire.c    **** 
 420:one_wire.c    ****       /* assign current id to string */
 421:one_wire.c    ****       owiCreateIdString(owi_id_string, owi_IDs[deviceIndex]);
 422:one_wire.c    **** 
 423:one_wire.c    **** #warning TODO: put everything in the cases in one function getXXX(bus, ID) filling the message stri
 424:one_wire.c    **** #warning       and call the functions via a pre-defined jump table
 425:one_wire.c    **** 
 426:one_wire.c    ****       if ( FALSE == write_flag )
 427:one_wire.c    ****       {
 428:one_wire.c    ****      	  printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("READ ACCESS"))
 429:one_wire.c    ****          switch ( familyCode )
 430:one_wire.c    ****          {
 431:one_wire.c    ****             case OWI_FAMILY_DS2450_ADC:
 432:one_wire.c    ****              	printDebug_p(debugLevelEventDebug, debugSystemOWIADC, __LINE__, filename, PSTR("bus %
 433:one_wire.c    **** 
 434:one_wire.c    ****             	readValueADC = owiReadChannelsOfSingleADCs(owi_IDs_pinMask[deviceIndex], owi_IDs[devic
 435:one_wire.c    **** 
 436:one_wire.c    ****              	printDebug_p(debugLevelEventDebug, debugSystemOWIADC, __LINE__, filename, PSTR("bus %
 437:one_wire.c    **** 
 438:one_wire.c    ****                /* read return status checking */
 439:one_wire.c    ****                if ( 0 != owiCheckReadWriteReturnStatus( readValueADC >> OWI_ADC_DS2450_MAX_RESOLUTI
 440:one_wire.c    **** 
 441:one_wire.c    ****                clearString(message, BUFFER_SIZE);
 442:one_wire.c    ****                snprintf(message, BUFFER_SIZE - 1, "%s%s", owi_id_string, resultString);
 443:one_wire.c    **** //               snprintf(message, BUFFER_SIZE - 1, "%s %.4X %.4X %.4X %.4X",
 444:one_wire.c    **** //                        owi_id_string, ADCValues[0], ADCValues[1], ADCValues[2], ADCValues[3]);
 445:one_wire.c    ****                break;
 446:one_wire.c    ****             case OWI_FAMILY_DS18S20_TEMP:
 447:one_wire.c    ****             case OWI_FAMILY_DS18B20_TEMP:
 448:one_wire.c    ****              	printDebug_p(debugLevelEventDebug, debugSystemOWITemperatures, __LINE__, filename, PS
 449:one_wire.c    **** 
 450:one_wire.c    ****                readValueTemp = owiTemperatureReadSingleSensor(owi_IDs_pinMask[deviceIndex], owi_IDs
 451:one_wire.c    **** 
 452:one_wire.c    ****                /* read return status checking */
 453:one_wire.c    ****                if ( 0 != owiCheckReadWriteReturnStatus( readValueTemp >> 16)) { continue; }
 454:one_wire.c    **** 
 455:one_wire.c    ****                /* mask off status remainder */
 456:one_wire.c    ****                readValueTemp &= 0xFFFF;
 457:one_wire.c    **** 
 458:one_wire.c    ****                clearString(message, BUFFER_SIZE);
 459:one_wire.c    ****                snprintf(message, BUFFER_SIZE - 1, "%s %.4lX", owi_id_string,readValueTemp);
 460:one_wire.c    ****                break;
 461:one_wire.c    ****             case OWI_FAMILY_DS2408_OCTAL_SWITCH:
 462:one_wire.c    ****             	readValueOS = ReadOctalSwitches(owi_IDs_pinMask[deviceIndex], owi_IDs[deviceIndex]);
 463:one_wire.c    ****             	if ( 0 != owiCheckReadWriteReturnStatus( readValueOS >> 8)) { continue; }
 464:one_wire.c    **** 
 465:one_wire.c    ****             	/* mask off status remainder */
 466:one_wire.c    ****             	readValueOS &= 0xFF;
 467:one_wire.c    **** 
 468:one_wire.c    ****             	clearString(message, BUFFER_SIZE);
 469:one_wire.c    ****             	snprintf(message, BUFFER_SIZE - 1, "%s %.2X", owi_id_string, readValueOS);
 470:one_wire.c    ****             	break;
 471:one_wire.c    ****             case OWI_FAMILY_DS2413_DUAL_SWITCH:
 472:one_wire.c    ****                readValueDS = ReadDualSwitches(owi_IDs_pinMask[deviceIndex], owi_IDs[deviceIndex]);
 473:one_wire.c    ****                /* read return status checking */
 474:one_wire.c    ****                if ( 0 != owiCheckReadWriteReturnStatus( readValueDS >> 8)) { continue; }
 475:one_wire.c    **** 
 476:one_wire.c    ****                /* mask off status remainder */
 477:one_wire.c    ****                readValueDS &= 0xFF;
 478:one_wire.c    **** 
 479:one_wire.c    ****                clearString(message, BUFFER_SIZE);
 480:one_wire.c    ****                snprintf(message, BUFFER_SIZE - 1, "%s %.2X", owi_id_string, readValueDS);
 481:one_wire.c    ****                break;
 482:one_wire.c    ****             case OWI_FAMILY_DS2405_SIMPLE_SWITCH:
 483:one_wire.c    ****                readValueSS = ReadSimpleSwitches(owi_IDs_pinMask[deviceIndex], owi_IDs[deviceIndex])
 484:one_wire.c    ****                /* read return status checking */
 485:one_wire.c    ****                if ( 0 != owiCheckReadWriteReturnStatus( readValueSS >> 8)) { continue; }
 486:one_wire.c    **** 
 487:one_wire.c    ****                /* mask off status remainder */
 488:one_wire.c    ****                readValueSS &= 0xFF;
 489:one_wire.c    **** 
 490:one_wire.c    ****                clearString(message, BUFFER_SIZE);
 491:one_wire.c    ****                snprintf(message, BUFFER_SIZE - 1, "%s %.2X", owi_id_string, readValueSS);
 492:one_wire.c    ****                break;
 493:one_wire.c    ****             default:
 494:one_wire.c    ****                generalErrorCode = CommunicationError_p(ERRG, GENERAL_ERROR_undefined_family_code, F
 495:one_wire.c    ****                continue;
 496:one_wire.c    ****                break;
 497:one_wire.c    ****          }
 498:one_wire.c    ****       }
 499:one_wire.c    ****       else /* write access: write_flag >= TRUE */
 500:one_wire.c    ****       {
 501:one_wire.c    ****      	  printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("WRITE ACCESS")
 502:one_wire.c    **** 
 503:one_wire.c    ****          switch ( familyCode )
 504:one_wire.c    ****          {
 505:one_wire.c    ****             case OWI_FAMILY_DS2408_OCTAL_SWITCH:
 506:one_wire.c    ****                writeValueOS = 0xFF & *((uint8_t*) ptr_value);
 507:one_wire.c    ****                readValueOS = WriteOctalSwitches(owi_IDs_pinMask[deviceIndex], owi_IDs[deviceIndex],
 508:one_wire.c    **** 
 509:one_wire.c    ****                /* read return status checking */
 510:one_wire.c    ****                if ( 0 != owiCheckReadWriteReturnStatus( readValueOS >> 8)) { continue; }
 511:one_wire.c    **** 
 512:one_wire.c    ****                /* mask off status remainder */
 513:one_wire.c    ****                readValueOS &= 0xFF;
 514:one_wire.c    **** 
 515:one_wire.c    ****                clearString(message, BUFFER_SIZE);
 516:one_wire.c    ****                snprintf(message, BUFFER_SIZE - 1, "%s %.2X", owi_id_string, readValueOS);
 517:one_wire.c    ****             break;
 518:one_wire.c    **** 
 519:one_wire.c    ****             case OWI_FAMILY_DS2413_DUAL_SWITCH:
 520:one_wire.c    ****                writeValueDS = 0xFF & *((uint8_t*) ptr_value);
 521:one_wire.c    ****                readValueDS = WriteDualSwitches(owi_IDs_pinMask[deviceIndex], owi_IDs[deviceIndex], 
 522:one_wire.c    **** 
 523:one_wire.c    ****                /* read return status checking */
 524:one_wire.c    ****                if ( 0 != owiCheckReadWriteReturnStatus( readValueDS >> 8)) { continue; }
 525:one_wire.c    **** 
 526:one_wire.c    ****                /* mask off status remainder */
 527:one_wire.c    ****                readValueDS &= 0xFF;
 528:one_wire.c    **** 
 529:one_wire.c    ****                clearString(message, BUFFER_SIZE);
 530:one_wire.c    ****                snprintf(message, BUFFER_SIZE - 1, "%s %.2X", owi_id_string, readValueDS);
 531:one_wire.c    ****                break;
 532:one_wire.c    **** //            case OWI_FAMILY_DS2405_SIMPLE_SWITCH:
 533:one_wire.c    **** //               readValueSS = ReadSimpleSwitches(owi_IDs_pinMask[deviceIndex], owi_IDs[deviceIndex
 534:one_wire.c    **** //               /* read return status checking */
 535:one_wire.c    **** //               if ( 0 != owiCheckReadWriteReturnStatus( readValueSS >> 8)) { continue; }
 536:one_wire.c    **** //
 537:one_wire.c    **** //               /* mask off status remainder */
 538:one_wire.c    **** //               readValueSS &= 0xFF;
 539:one_wire.c    **** //
 540:one_wire.c    **** //               clearString(message, BUFFER_SIZE);
 541:one_wire.c    **** //               snprintf(message, BUFFER_SIZE - 1, "%s %.2X", owi_id_string, readValueSS);
 542:one_wire.c    ****                break;
 543:one_wire.c    ****             default:
 544:one_wire.c    ****                generalErrorCode = CommunicationError_p(ERRG, GENERAL_ERROR_undefined_family_code, F
 545:one_wire.c    ****                continue;
 546:one_wire.c    ****                break;
 547:one_wire.c    ****          }
 548:one_wire.c    ****       }
 549:one_wire.c    **** 
 550:one_wire.c    ****       /* generate header */
 551:one_wire.c    ****       clearString(uart_message_string, BUFFER_SIZE);
 552:one_wire.c    ****       createReceiveHeader(ptr_uartStruct, uart_message_string, BUFFER_SIZE);
 553:one_wire.c    **** 
 554:one_wire.c    ****       /* combine header and message */
 555:one_wire.c    ****       strncat(uart_message_string, message, BUFFER_SIZE -1);
 556:one_wire.c    **** 
 557:one_wire.c    **** #if HADCON_VERSION == 1
 558:one_wire.c    **** #warning TODO: is it necessary to have a trailing \r and the woLF send
 559:one_wire.c    **** #warning output may hide information by just using '\\r'
 560:one_wire.c    ****       strncat(uart_message_string, "\r", BUFFER_SIZE -1);
 561:one_wire.c    **** 
 562:one_wire.c    ****       /*send the data*/
 563:one_wire.c    ****       UART0_Send_Message_String_woLF(uart_message_string, BUFFER_SIZE - 1);
 564:one_wire.c    **** #elif HADCON_VERSION == 2
 565:one_wire.c    ****       /*send the data*/
 566:one_wire.c    ****       UART0_Send_Message_String_p(uart_message_string, BUFFER_SIZE - 1);
 567:one_wire.c    **** #else
 568:one_wire.c    **** #error undefined HADCON_VERSION
 569:one_wire.c    **** #endif
 570:one_wire.c    **** 
 571:one_wire.c    ****       /*clear strings*/
 572:one_wire.c    ****       clearString(uart_message_string, BUFFER_SIZE);
 573:one_wire.c    ****       clearString(message, BUFFER_SIZE);
 574:one_wire.c    **** 
 575:one_wire.c    ****       foundCounter++;
 576:one_wire.c    ****    }//for (deviceIndex=0;deviceIndex<countDev;deviceIndex++)
 577:one_wire.c    **** 
 578:one_wire.c    **** #if HADCON_VERSION == 1
 579:one_wire.c    ****    if ( 0 < foundCounter)
 580:one_wire.c    ****    {
 581:one_wire.c    ****       UART0_Transmit_p('\n');
 582:one_wire.c    ****    }
 583:one_wire.c    **** #endif
 584:one_wire.c    **** 
 585:one_wire.c    ****    return foundCounter;
 586:one_wire.c    **** }//END of owiFindFamilyDevicesAndAccessValues
 587:one_wire.c    **** 
 588:one_wire.c    **** 
 589:one_wire.c    **** void setOneWireBusMask(struct uartStruct *ptr_uartStruct)
 590:one_wire.c    **** {
 1532               	.LM100:
 1533               	.LFBB4:
 1534 08f4 FF92      		push r15
 1535 08f6 0F93      		push r16
 1536 08f8 1F93      		push r17
 1537 08fa CF93      		push r28
 1538 08fc DF93      		push r29
 1539               	/* prologue: function */
 1540               	/* frame size = 0 */
 1541               	/* stack size = 5 */
 1542               	.L__stack_usage = 5
 1543 08fe EC01      		movw r28,r24
 591:one_wire.c    ****    /* one-wire set/get active pins/bus mask*/
 592:one_wire.c    ****    /* command     : OWSP value
 593:one_wire.c    ****     * set response: ...
 594:one_wire.c    ****     * get response: RECV OWSP value */
 595:one_wire.c    **** 
 596:one_wire.c    ****    /*TODO: change CAN naming to more general */
 597:one_wire.c    **** 
 598:one_wire.c    ****    switch(ptr_uartStruct->number_of_arguments)
 599:one_wire.c    ****    {
 600:one_wire.c    ****       case 0:
 601:one_wire.c    ****          clearString(uart_message_string, BUFFER_SIZE);
 602:one_wire.c    ****          createReceiveHeader(NULL, NULL, 0);
 603:one_wire.c    ****          snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("%s %x"), uart_message_string, owiBu
 1545               	.LM101:
 1546 0900 00E0      		ldi r16,lo8(__c.3191)
 1547 0902 10E0      		ldi r17,hi8(__c.3191)
 1548 0904 6BE8      		ldi r22,lo8(-117)
 1549 0906 F62E      		mov r15,r22
 1550               	.L66:
 598:one_wire.c    ****    {
 1552               	.LM102:
 1553 0908 8B8D      		ldd r24,Y+27
 1554 090a 8111      		cpse r24,__zero_reg__
 1555 090c 00C0      		rjmp .L73
 601:one_wire.c    ****          createReceiveHeader(NULL, NULL, 0);
 1557               	.LM103:
 1558 090e 6CE8      		ldi r22,lo8(-116)
 1559 0910 70E0      		ldi r23,0
 1560 0912 80E0      		ldi r24,lo8(uart_message_string)
 1561 0914 90E0      		ldi r25,hi8(uart_message_string)
 1562 0916 0E94 0000 		call clearString
 602:one_wire.c    ****          snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("%s %x"), uart_message_string, owiBu
 1564               	.LM104:
 1565 091a 40E0      		ldi r20,0
 1566 091c 50E0      		ldi r21,0
 1567 091e 60E0      		ldi r22,0
 1568 0920 70E0      		ldi r23,0
 1569 0922 80E0      		ldi r24,0
 1570 0924 90E0      		ldi r25,0
 1571 0926 0E94 0000 		call createReceiveHeader
 1573               	.LM105:
 1574 092a 8091 0000 		lds r24,owiBusMask+1
 1575 092e 8F93      		push r24
 1576 0930 8091 0000 		lds r24,owiBusMask
 1577 0934 8F93      		push r24
 1578 0936 80E0      		ldi r24,lo8(uart_message_string)
 1579 0938 90E0      		ldi r25,hi8(uart_message_string)
 1580 093a 9F93      		push r25
 1581 093c 8F93      		push r24
 1582 093e 1F93      		push r17
 1583 0940 0F93      		push r16
 1584 0942 1F92      		push __zero_reg__
 1585 0944 FF92      		push r15
 1586 0946 9F93      		push r25
 1587 0948 8F93      		push r24
 1588 094a 0E94 0000 		call snprintf_P
 604:one_wire.c    ****          UART0_Send_Message_String_p(NULL,0);
 1590               	.LM106:
 1591 094e E091 0000 		lds r30,UART0_Send_Message_String_p
 1592 0952 F091 0000 		lds r31,UART0_Send_Message_String_p+1
 1593 0956 60E0      		ldi r22,0
 1594 0958 70E0      		ldi r23,0
 1595 095a 80E0      		ldi r24,0
 1596 095c 90E0      		ldi r25,0
 1597 095e 0995      		icall
 605:one_wire.c    ****          break;
 1599               	.LM107:
 1600 0960 8DB7      		in r24,__SP_L__
 1601 0962 9EB7      		in r25,__SP_H__
 1602 0964 0A96      		adiw r24,10
 1603 0966 0FB6      		in __tmp_reg__,__SREG__
 1604 0968 F894      		cli
 1605 096a 9EBF      		out __SP_H__,r25
 1606 096c 0FBE      		out __SREG__,__tmp_reg__
 1607 096e 8DBF      		out __SP_L__,r24
 1608 0970 00C0      		rjmp .L63
 1609               	.L73:
 606:one_wire.c    ****       case 1:
 607:one_wire.c    ****       default:
 608:one_wire.c    ****          if ( 0xFFFF < ptr_uartStruct->Uart_Message_ID )
 1611               	.LM108:
 1612 0972 4881      		ld r20,Y
 1613 0974 5981      		ldd r21,Y+1
 1614 0976 6A81      		ldd r22,Y+2
 1615 0978 7B81      		ldd r23,Y+3
 1616 097a 4115      		cp r20,__zero_reg__
 1617 097c 5105      		cpc r21,__zero_reg__
 1618 097e 91E0      		ldi r25,1
 1619 0980 6907      		cpc r22,r25
 1620 0982 7105      		cpc r23,__zero_reg__
 1621 0984 00F0      		brlo .L64
 609:one_wire.c    ****          {
 610:one_wire.c    **** 			CommunicationError_p(ERRA, SERIAL_ERROR_arguments_exceed_boundaries, 1,
 1623               	.LM109:
 1624 0986 8FEF      		ldi r24,lo8(-1)
 1625 0988 8F93      		push r24
 1626 098a 8F93      		push r24
 1627 098c 1F92      		push __zero_reg__
 1628 098e 1F92      		push __zero_reg__
 1629 0990 7F93      		push r23
 1630 0992 6F93      		push r22
 1631 0994 5F93      		push r21
 1632 0996 4F93      		push r20
 1633 0998 80E0      		ldi r24,lo8(__c.3196)
 1634 099a 90E0      		ldi r25,hi8(__c.3196)
 1635 099c 9F93      		push r25
 1636 099e 8F93      		push r24
 1637 09a0 81E0      		ldi r24,lo8(1)
 1638 09a2 8F93      		push r24
 1639 09a4 1F92      		push __zero_reg__
 1640 09a6 95E0      		ldi r25,lo8(5)
 1641 09a8 9F93      		push r25
 1642 09aa 8F93      		push r24
 1643 09ac E091 0000 		lds r30,CommunicationError_p
 1644 09b0 F091 0000 		lds r31,CommunicationError_p+1
 1645 09b4 0995      		icall
 611:one_wire.c    **** 					             PSTR("%lx, [%#lx ... %#lx]"),
 612:one_wire.c    **** 				                 ptr_uartStruct->Uart_Message_ID, 0, 0xFFFF);
 613:one_wire.c    ****             return;
 1647               	.LM110:
 1648 09b6 8DB7      		in r24,__SP_L__
 1649 09b8 9EB7      		in r25,__SP_H__
 1650 09ba 0E96      		adiw r24,14
 1651 09bc 0FB6      		in __tmp_reg__,__SREG__
 1652 09be F894      		cli
 1653 09c0 9EBF      		out __SP_H__,r25
 1654 09c2 0FBE      		out __SREG__,__tmp_reg__
 1655 09c4 8DBF      		out __SP_L__,r24
 1656 09c6 00C0      		rjmp .L60
 1657               	.L64:
 614:one_wire.c    ****          }
 615:one_wire.c    ****          owiBusMask = (uint16_t) (ptr_uartStruct->Uart_Message_ID & 0xFFFF);
 1659               	.LM111:
 1660 09c8 5093 0000 		sts owiBusMask+1,r21
 1661 09cc 4093 0000 		sts owiBusMask,r20
 1662               	.L63:
 616:one_wire.c    ****          break;
 617:one_wire.c    ****    }
 618:one_wire.c    ****    if ( debugLevelVerboseDebug <= globalDebugLevel && ( ( globalDebugSystemMask >> debugSystemOWI )
 1664               	.LM112:
 1665 09d0 8091 0000 		lds r24,globalDebugLevel
 1666 09d4 8823      		tst r24
 1667 09d6 01F0      		breq .L60
 1669               	.LM113:
 1670 09d8 8091 0000 		lds r24,globalDebugSystemMask
 1671 09dc 9091 0000 		lds r25,globalDebugSystemMask+1
 1672 09e0 A091 0000 		lds r26,globalDebugSystemMask+2
 1673 09e4 B091 0000 		lds r27,globalDebugSystemMask+3
 1674 09e8 90FF      		sbrs r25,0
 1675 09ea 00C0      		rjmp .L60
 619:one_wire.c    ****    {
 620:one_wire.c    ****       if ( 0 < ptr_uartStruct->number_of_arguments)
 1677               	.LM114:
 1678 09ec 8B8D      		ldd r24,Y+27
 1679 09ee 1816      		cp __zero_reg__,r24
 1680 09f0 04F4      		brge .L60
 621:one_wire.c    ****       {
 622:one_wire.c    ****          ptr_uartStruct->number_of_arguments = 0;
 1682               	.LM115:
 1683 09f2 1B8E      		std Y+27,__zero_reg__
 1684 09f4 00C0      		rjmp .L66
 1685               	.L60:
 1686               	/* epilogue start */
 623:one_wire.c    ****          setOneWireBusMask(ptr_uartStruct);
 624:one_wire.c    ****       }
 625:one_wire.c    ****    }
 626:one_wire.c    **** }
 1688               	.LM116:
 1689 09f6 DF91      		pop r29
 1690 09f8 CF91      		pop r28
 1691 09fa 1F91      		pop r17
 1692 09fc 0F91      		pop r16
 1693 09fe FF90      		pop r15
 1694 0a00 0895      		ret
 1696               	.Lscope4:
 1699               	.global	getOneWireBusMask
 1701               	getOneWireBusMask:
 627:one_wire.c    **** 
 628:one_wire.c    **** uint32_t getOneWireBusMask(struct uartStruct *ptr_uartStruct)
 629:one_wire.c    **** {
 1703               	.LM117:
 1704               	.LFBB5:
 1705               	/* prologue: function */
 1706               	/* frame size = 0 */
 1707               	/* stack size = 0 */
 1708               	.L__stack_usage = 0
 630:one_wire.c    ****    /*one-wire read active pins/bus mask*/
 631:one_wire.c    ****    /* command : OWRP
 632:one_wire.c    ****     * response: RECV OWRP value */
 633:one_wire.c    **** 
 634:one_wire.c    ****    ptr_uartStruct->number_of_arguments = 0;
 1710               	.LM118:
 1711 0a02 FC01      		movw r30,r24
 1712 0a04 138E      		std Z+27,__zero_reg__
 635:one_wire.c    ****    setOneWireBusMask(ptr_uartStruct);
 1714               	.LM119:
 1715 0a06 0E94 0000 		call setOneWireBusMask
 636:one_wire.c    **** 
 637:one_wire.c    ****    return owiBusMask;
 1717               	.LM120:
 1718 0a0a 6091 0000 		lds r22,owiBusMask
 1719 0a0e 7091 0000 		lds r23,owiBusMask+1
 1720 0a12 80E0      		ldi r24,0
 1721 0a14 90E0      		ldi r25,0
 638:one_wire.c    **** }
 1723               	.LM121:
 1724 0a16 0895      		ret
 1726               	.Lscope5:
 1730               	.global	owiScanIDS
 1732               	owiScanIDS:
 639:one_wire.c    **** 
 640:one_wire.c    **** /* this function scans the list of devices (owi_IDs)
 641:one_wire.c    ****  * for matching family ids.
 642:one_wire.c    ****  * it does an logical OR of the bus pin mask of channel with the provided mask pointer
 643:one_wire.c    ****  * and returns the number of found elements
 644:one_wire.c    ****  * 0 also in case of errors
 645:one_wire.c    ****  */
 646:one_wire.c    **** uint8_t owiScanIDS(uint16_t id, uint16_t *mask)
 647:one_wire.c    **** 
 648:one_wire.c    **** {
 1734               	.LM122:
 1735               	.LFBB6:
 1736 0a18 EF92      		push r14
 1737 0a1a FF92      		push r15
 1738 0a1c 1F93      		push r17
 1739 0a1e CF93      		push r28
 1740 0a20 DF93      		push r29
 1741               	/* prologue: function */
 1742               	/* frame size = 0 */
 1743               	/* stack size = 5 */
 1744               	.L__stack_usage = 5
 649:one_wire.c    ****    uint8_t index = 0;
 650:one_wire.c    ****    uint8_t count = 0;
 651:one_wire.c    ****    if (NULL != mask)
 1746               	.LM123:
 1747 0a22 6115      		cp r22,__zero_reg__
 1748 0a24 7105      		cpc r23,__zero_reg__
 1749 0a26 01F0      		breq .L80
 652:one_wire.c    ****    {
 653:one_wire.c    ****       for ( ; index < NumDevicesFound ; index++ )
 1751               	.LM124:
 1752 0a28 D091 0000 		lds r29,NumDevicesFound
 1753 0a2c E0E0      		ldi r30,lo8(owi_IDs)
 1754 0a2e EE2E      		mov r14,r30
 1755 0a30 E0E0      		ldi r30,hi8(owi_IDs)
 1756 0a32 FE2E      		mov r15,r30
 1757 0a34 40E0      		ldi r20,lo8(owi_IDs_pinMask)
 1758 0a36 50E0      		ldi r21,hi8(owi_IDs_pinMask)
 1759 0a38 FA01      		movw r30,r20
 1760 0a3a C0E0      		ldi r28,0
 1761               	.L77:
 1762 0a3c 2E2F      		mov r18,r30
 1763 0a3e 241B      		sub r18,r20
 1765               	.LM125:
 1766 0a40 2D17      		cp r18,r29
 1767 0a42 00F4      		brsh .L76
 654:one_wire.c    ****       {
 655:one_wire.c    ****          if ( id == owi_IDs[index][0] )
 1769               	.LM126:
 1770 0a44 D701      		movw r26,r14
 1771 0a46 2C91      		ld r18,X
 1772 0a48 30E0      		ldi r19,0
 1773 0a4a 8217      		cp r24,r18
 1774 0a4c 9307      		cpc r25,r19
 1775 0a4e 01F4      		brne .L78
 656:one_wire.c    ****          {
 657:one_wire.c    ****             count++;
 1777               	.LM127:
 1778 0a50 CF5F      		subi r28,lo8(-(1))
 658:one_wire.c    ****             *mask |= owi_IDs_pinMask[index];
 1780               	.LM128:
 1781 0a52 1081      		ld r17,Z
 1782 0a54 DB01      		movw r26,r22
 1783 0a56 2D91      		ld r18,X+
 1784 0a58 3C91      		ld r19,X
 1785 0a5a 1197      		sbiw r26,1
 1786 0a5c 212B      		or r18,r17
 1787 0a5e 2D93      		st X+,r18
 1788 0a60 3C93      		st X,r19
 1789               	.L78:
 1790 0a62 B8E0      		ldi r27,8
 1791 0a64 EB0E      		add r14,r27
 1792 0a66 F11C      		adc r15,__zero_reg__
 1793 0a68 3196      		adiw r30,1
 1794 0a6a 00C0      		rjmp .L77
 1795               	.L80:
 650:one_wire.c    ****    if (NULL != mask)
 1797               	.LM129:
 1798 0a6c C0E0      		ldi r28,0
 1799               	.L76:
 659:one_wire.c    ****          }
 660:one_wire.c    ****       }
 661:one_wire.c    ****    }
 662:one_wire.c    ****    return count;
 663:one_wire.c    **** }
 1801               	.LM130:
 1802 0a6e 8C2F      		mov r24,r28
 1803               	/* epilogue start */
 1804 0a70 DF91      		pop r29
 1805 0a72 CF91      		pop r28
 1806 0a74 1F91      		pop r17
 1807 0a76 FF90      		pop r15
 1808 0a78 EF90      		pop r14
 1809 0a7a 0895      		ret
 1814               	.Lscope6:
 1817               	.global	owiCheckReadWriteReturnStatus
 1819               	owiCheckReadWriteReturnStatus:
 664:one_wire.c    **** 
 665:one_wire.c    **** /* this function checks the status of the read function
 666:one_wire.c    ****  *
 667:one_wire.c    ****  * and prints out some information if necessary / enabled
 668:one_wire.c    ****  *
 669:one_wire.c    ****  * returns 0 if owiReadWriteStatus_OK
 670:one_wire.c    ****  * else 1
 671:one_wire.c    ****  *
 672:one_wire.c    ****  */
 673:one_wire.c    **** uint8_t owiCheckReadWriteReturnStatus( uint32_t status )
 674:one_wire.c    **** {
 1821               	.LM131:
 1822               	.LFBB7:
 1823               	/* prologue: function */
 1824               	/* frame size = 0 */
 1825               	/* stack size = 0 */
 1826               	.L__stack_usage = 0
 675:one_wire.c    ****    switch ( status )
 1828               	.LM132:
 1829 0a7c 6130      		cpi r22,1
 1830 0a7e 7105      		cpc r23,__zero_reg__
 1831 0a80 8105      		cpc r24,__zero_reg__
 1832 0a82 9105      		cpc r25,__zero_reg__
 1833 0a84 01F0      		breq .L83
 1834 0a86 00F0      		brlo .L84
 1835 0a88 6230      		cpi r22,2
 1836 0a8a 7105      		cpc r23,__zero_reg__
 1837 0a8c 8105      		cpc r24,__zero_reg__
 1838 0a8e 9105      		cpc r25,__zero_reg__
 1839 0a90 01F4      		brne .+2
 1840 0a92 00C0      		rjmp .L88
 1841 0a94 E091 0000 		lds r30,CommunicationError_p
 1842 0a98 F091 0000 		lds r31,CommunicationError_p+1
 1843 0a9c 6430      		cpi r22,4
 1844 0a9e 7105      		cpc r23,__zero_reg__
 1845 0aa0 8105      		cpc r24,__zero_reg__
 1846 0aa2 9105      		cpc r25,__zero_reg__
 1847 0aa4 01F4      		brne .L91
 676:one_wire.c    ****    {
 677:one_wire.c    ****       case owiReadWriteStatus_OK:
 678:one_wire.c    ****          return 0;
 679:one_wire.c    ****          break;
 680:one_wire.c    ****       case owiReadStatus_owi_bus_mismatch: /*bus pattern didn't match owiBusMask*/
 681:one_wire.c    ****      	  printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("owi bus mask d
 682:one_wire.c    ****          return 1;
 683:one_wire.c    ****          break;
 684:one_wire.c    ****       case owiReadStatus_conversion_timeout: /*conversion time out*/
 685:one_wire.c    ****          return 1;
 686:one_wire.c    ****          break;
 687:one_wire.c    ****       case owiReadStatus_no_device_presence: /*presence pulse without response*/
 688:one_wire.c    ****          CommunicationError_p(ERRG, GENERAL_ERROR_no_device_is_connected_to_the_bus, FALSE, NULL);
 1849               	.LM133:
 1850 0aa6 1F92      		push __zero_reg__
 1851 0aa8 1F92      		push __zero_reg__
 1852 0aaa 1F92      		push __zero_reg__
 1853 0aac 1F92      		push __zero_reg__
 1854 0aae 84E0      		ldi r24,lo8(4)
 1855 0ab0 8F93      		push r24
 1856 0ab2 1F92      		push __zero_reg__
 1857 0ab4 0995      		icall
 689:one_wire.c    ****          return 1;
 1859               	.LM134:
 1860 0ab6 0F90      		pop __tmp_reg__
 1861 0ab8 0F90      		pop __tmp_reg__
 1862 0aba 0F90      		pop __tmp_reg__
 1863 0abc 0F90      		pop __tmp_reg__
 1864 0abe 0F90      		pop __tmp_reg__
 1865 0ac0 0F90      		pop __tmp_reg__
 1866 0ac2 00C0      		rjmp .L88
 1867               	.L84:
 678:one_wire.c    ****          break;
 1869               	.LM135:
 1870 0ac4 80E0      		ldi r24,0
 1871 0ac6 0895      		ret
 1872               	.L83:
 681:one_wire.c    ****          return 1;
 1874               	.LM136:
 1875 0ac8 80E0      		ldi r24,lo8(__c.3215)
 1876 0aca 90E0      		ldi r25,hi8(__c.3215)
 1877 0acc 9F93      		push r25
 1878 0ace 8F93      		push r24
 1879 0ad0 80E0      		ldi r24,lo8(filename)
 1880 0ad2 90E0      		ldi r25,hi8(filename)
 1881 0ad4 9F93      		push r25
 1882 0ad6 8F93      		push r24
 1883 0ad8 82E0      		ldi r24,lo8(2)
 1884 0ada 8F93      		push r24
 1885 0adc 99EA      		ldi r25,lo8(-87)
 1886 0ade 9F93      		push r25
 1887 0ae0 1F92      		push __zero_reg__
 1888 0ae2 1F92      		push __zero_reg__
 1889 0ae4 1F92      		push __zero_reg__
 1890 0ae6 98E0      		ldi r25,lo8(8)
 1891 0ae8 9F93      		push r25
 1892 0aea 8F93      		push r24
 1893 0aec E091 0000 		lds r30,printDebug_p
 1894 0af0 F091 0000 		lds r31,printDebug_p+1
 1895 0af4 0995      		icall
 682:one_wire.c    ****          break;
 1897               	.LM137:
 1898 0af6 8DB7      		in r24,__SP_L__
 1899 0af8 9EB7      		in r25,__SP_H__
 1900 0afa 0B96      		adiw r24,11
 1901 0afc 0FB6      		in __tmp_reg__,__SREG__
 1902 0afe F894      		cli
 1903 0b00 9EBF      		out __SP_H__,r25
 1904 0b02 0FBE      		out __SREG__,__tmp_reg__
 1905 0b04 8DBF      		out __SP_L__,r24
 1906 0b06 00C0      		rjmp .L88
 1907               	.L91:
 1908               	.LBB32:
 1909               	.LBB33:
 690:one_wire.c    ****          break;
 691:one_wire.c    ****       default:
 692:one_wire.c    ****          CommunicationError_p(ERRG, dynamicMessage_ErrorIndex, TRUE, PSTR("Error reading %s"), owi_
 1911               	.LM138:
 1912 0b08 80E0      		ldi r24,lo8(owi_id_string)
 1913 0b0a 90E0      		ldi r25,hi8(owi_id_string)
 1914 0b0c 9F93      		push r25
 1915 0b0e 8F93      		push r24
 1916 0b10 80E0      		ldi r24,lo8(__c.3220)
 1917 0b12 90E0      		ldi r25,hi8(__c.3220)
 1918 0b14 9F93      		push r25
 1919 0b16 8F93      		push r24
 1920 0b18 81E0      		ldi r24,lo8(1)
 1921 0b1a 8F93      		push r24
 1922 0b1c 8FEF      		ldi r24,lo8(-1)
 1923 0b1e 8F93      		push r24
 1924 0b20 8CE9      		ldi r24,lo8(-100)
 1925 0b22 8F93      		push r24
 1926 0b24 1F92      		push __zero_reg__
 1927 0b26 0995      		icall
 1928 0b28 E0E0      		ldi r30,lo8(message)
 1929 0b2a F0E0      		ldi r31,hi8(message)
 1930 0b2c 8DB7      		in r24,__SP_L__
 1931 0b2e 9EB7      		in r25,__SP_H__
 1932 0b30 0896      		adiw r24,8
 1933 0b32 0FB6      		in __tmp_reg__,__SREG__
 1934 0b34 F894      		cli
 1935 0b36 9EBF      		out __SP_H__,r25
 1936 0b38 0FBE      		out __SREG__,__tmp_reg__
 1937 0b3a 8DBF      		out __SP_L__,r24
 1938               	.L87:
 1939               	.LBB34:
 693:one_wire.c    ****          for ( uint8_t clearIndex = 0 ; clearIndex < BUFFER_SIZE ; clearIndex++ )
 694:one_wire.c    ****          {
 695:one_wire.c    ****             message[clearIndex] = STRING_END;
 1941               	.LM139:
 1942 0b3c 1192      		st Z+,__zero_reg__
 693:one_wire.c    ****          for ( uint8_t clearIndex = 0 ; clearIndex < BUFFER_SIZE ; clearIndex++ )
 1944               	.LM140:
 1945 0b3e 90E0      		ldi r25,hi8(message+140)
 1946 0b40 E030      		cpi r30,lo8(message+140)
 1947 0b42 F907      		cpc r31,r25
 1948 0b44 01F4      		brne .L87
 1949 0b46 00C0      		rjmp .L92
 1950               	.L88:
 1951               	.LBE34:
 1952               	.LBE33:
 1953               	.LBE32:
 685:one_wire.c    ****          break;
 1955               	.LM141:
 1956 0b48 81E0      		ldi r24,lo8(1)
 1957 0b4a 0895      		ret
 1958               	.L92:
 1959               	.LBB37:
 1960               	.LBB36:
 1961               	.LBB35:
 693:one_wire.c    ****          for ( uint8_t clearIndex = 0 ; clearIndex < BUFFER_SIZE ; clearIndex++ )
 1963               	.LM142:
 1964 0b4c 82E0      		ldi r24,lo8(2)
 1965               	.LBE35:
 1966               	.LBE36:
 1967               	.LBE37:
 696:one_wire.c    ****          }
 697:one_wire.c    ****          return 2;
 698:one_wire.c    ****          break;
 699:one_wire.c    ****    }
 700:one_wire.c    ****    return 2;
 701:one_wire.c    **** }
 1969               	.LM143:
 1970 0b4e 0895      		ret
 1972               	.Lscope7:
 1975               	.global	owiInitOwiStruct
 1977               	owiInitOwiStruct:
 702:one_wire.c    **** 
 703:one_wire.c    **** /* this function initializes the structure owiStruct pointed to by ptr_owiStruct
 704:one_wire.c    ****  *
 705:one_wire.c    ****  * input:
 706:one_wire.c    ****  *    - pointer to owiStruct structure to be initialized
 707:one_wire.c    ****  * output
 708:one_wire.c    ****  *    - 0   : if all ok
 709:one_wire.c    ****  *    - else: error
 710:one_wire.c    ****  *
 711:one_wire.c    ****  */
 712:one_wire.c    **** 
 713:one_wire.c    **** uint8_t owiInitOwiStruct(struct owiStruct *ptr_owiStruct)
 714:one_wire.c    **** {
 1979               	.LM144:
 1980               	.LFBB8:
 1981               	/* prologue: function */
 1982               	/* frame size = 0 */
 1983               	/* stack size = 0 */
 1984               	.L__stack_usage = 0
 1985 0b50 FC01      		movw r30,r24
 715:one_wire.c    ****    if (NULL == ptr_owiStruct)
 1987               	.LM145:
 1988 0b52 0097      		sbiw r24,0
 1989 0b54 01F0      		breq .L97
 1990 0b56 DC01      		movw r26,r24
 1991 0b58 80E0      		ldi r24,0
 1992 0b5a 90E0      		ldi r25,0
 1993               	.L96:
 716:one_wire.c    ****    {
 717:one_wire.c    ****       return 1;
 718:one_wire.c    ****    }
 719:one_wire.c    **** 
 720:one_wire.c    ****    unsigned int i = 0;
 721:one_wire.c    ****    for (i=0; i < 8; i++) { ptr_owiStruct->id[i]=0; }
 1995               	.LM146:
 1996 0b5c 1D92      		st X+,__zero_reg__
 1997 0b5e 0196      		adiw r24,1
 1998 0b60 8830      		cpi r24,8
 1999 0b62 9105      		cpc r25,__zero_reg__
 2000 0b64 01F4      		brne .L96
 722:one_wire.c    ****    ptr_owiStruct->idSelect_flag = FALSE;
 2002               	.LM147:
 2003 0b66 1086      		std Z+8,__zero_reg__
 723:one_wire.c    ****    ptr_owiStruct->ptr_value = NULL;
 2005               	.LM148:
 2006 0b68 1286      		std Z+10,__zero_reg__
 2007 0b6a 1186      		std Z+9,__zero_reg__
 724:one_wire.c    ****    ptr_owiStruct->conv_flag = FALSE;
 2009               	.LM149:
 2010 0b6c 1586      		std Z+13,__zero_reg__
 725:one_wire.c    ****    ptr_owiStruct->init_flag = FALSE;
 2012               	.LM150:
 2013 0b6e 1686      		std Z+14,__zero_reg__
 726:one_wire.c    ****    ptr_owiStruct->value = 0;
 2015               	.LM151:
 2016 0b70 1486      		std Z+12,__zero_reg__
 2017 0b72 1386      		std Z+11,__zero_reg__
 727:one_wire.c    ****    clearString(ptr_owiStruct->command, sizeof(ptr_owiStruct->command)/sizeof(char));
 2019               	.LM152:
 2020 0b74 69E1      		ldi r22,lo8(25)
 2021 0b76 70E0      		ldi r23,0
 2022 0b78 CF01      		movw r24,r30
 2023 0b7a 0F96      		adiw r24,15
 2024 0b7c 0E94 0000 		call clearString
 728:one_wire.c    **** 
 729:one_wire.c    ****    return 0;
 2026               	.LM153:
 2027 0b80 80E0      		ldi r24,0
 2028 0b82 0895      		ret
 2029               	.L97:
 717:one_wire.c    ****    }
 2031               	.LM154:
 2032 0b84 81E0      		ldi r24,lo8(1)
 730:one_wire.c    **** 
 731:one_wire.c    **** }
 2034               	.LM155:
 2035 0b86 0895      		ret
 2040               	.Lscope8:
 2043               	.global	isParameterIDThenFillOwiStructure
 2045               	isParameterIDThenFillOwiStructure:
 732:one_wire.c    **** #warning TODO: using uint32_t , think of ID stored in structure/union { familyCode, uniq, CRC } ins
 733:one_wire.c    **** uint16_t isParameterIDThenFillOwiStructure(uint8_t parameterIndex)
 734:one_wire.c    **** {
 2047               	.LM156:
 2048               	.LFBB9:
 2049 0b88 8F92      		push r8
 2050 0b8a 9F92      		push r9
 2051 0b8c BF92      		push r11
 2052 0b8e CF92      		push r12
 2053 0b90 DF92      		push r13
 2054 0b92 EF92      		push r14
 2055 0b94 FF92      		push r15
 2056 0b96 0F93      		push r16
 2057 0b98 1F93      		push r17
 2058 0b9a CF93      		push r28
 2059 0b9c DF93      		push r29
 2060 0b9e 00D0      		rcall .
 2061 0ba0 1F92      		push __zero_reg__
 2062 0ba2 CDB7      		in r28,__SP_L__
 2063 0ba4 DEB7      		in r29,__SP_H__
 2064               	/* prologue: function */
 2065               	/* frame size = 3 */
 2066               	/* stack size = 14 */
 2067               	.L__stack_usage = 14
 2068 0ba6 B82E      		mov r11,r24
 735:one_wire.c    ****    /* calculate length of argument and check if all of them are hex numbers */
 736:one_wire.c    ****    /* if first argument matches the above requirements of an ID
 737:one_wire.c    ****     *    - fill it into the structure
 738:one_wire.c    ****     *    - and set idSelect flag TRUE
 739:one_wire.c    ****     */
 740:one_wire.c    ****    int index = 0;
 741:one_wire.c    ****    char byte[] = "00";
 2070               	.LM157:
 2071 0ba8 20E3      		ldi r18,lo8(48)
 2072 0baa 30E3      		ldi r19,lo8(48)
 2073 0bac 40E0      		ldi r20,0
 2074 0bae 2983      		std Y+1,r18
 2075 0bb0 3A83      		std Y+2,r19
 2076 0bb2 4B83      		std Y+3,r20
 742:one_wire.c    ****    uint16_t numericLength = 0;
 743:one_wire.c    **** 
 744:one_wire.c    ****    if ( MAX_PARAMETER < parameterIndex)
 2078               	.LM158:
 2079 0bb4 8EE0      		ldi r24,lo8(14)
 2080 0bb6 8B15      		cp r24,r11
 2081 0bb8 00F4      		brsh .L99
 745:one_wire.c    ****    {
 746:one_wire.c    ****       CommunicationError_p(ERRG, dynamicMessage_ErrorIndex, TRUE, PSTR("invalid argument index"));
 2083               	.LM159:
 2084 0bba 80E0      		ldi r24,lo8(__c.3239)
 2085 0bbc 90E0      		ldi r25,hi8(__c.3239)
 2086 0bbe 9F93      		push r25
 2087 0bc0 8F93      		push r24
 2088 0bc2 81E0      		ldi r24,lo8(1)
 2089 0bc4 8F93      		push r24
 2090 0bc6 8FEF      		ldi r24,lo8(-1)
 2091 0bc8 8F93      		push r24
 2092 0bca 8CE9      		ldi r24,lo8(-100)
 2093 0bcc 8F93      		push r24
 2094 0bce 1F92      		push __zero_reg__
 2095 0bd0 E091 0000 		lds r30,CommunicationError_p
 2096 0bd4 F091 0000 		lds r31,CommunicationError_p+1
 2097 0bd8 0995      		icall
 747:one_wire.c    ****       return 0;
 2099               	.LM160:
 2100 0bda 0F90      		pop __tmp_reg__
 2101 0bdc 0F90      		pop __tmp_reg__
 2102 0bde 0F90      		pop __tmp_reg__
 2103 0be0 0F90      		pop __tmp_reg__
 2104 0be2 0F90      		pop __tmp_reg__
 2105 0be4 0F90      		pop __tmp_reg__
 2106 0be6 00C0      		rjmp .L106
 2107               	.L99:
 748:one_wire.c    ****    }
 749:one_wire.c    ****    ptr_owiStruct->idSelect_flag = FALSE;
 2109               	.LM161:
 2110 0be8 E091 0000 		lds r30,ptr_owiStruct
 2111 0bec F091 0000 		lds r31,ptr_owiStruct+1
 2112 0bf0 1086      		std Z+8,__zero_reg__
 750:one_wire.c    **** 
 751:one_wire.c    ****    numericLength = getNumberOfHexDigits(setParameter[parameterIndex], MAX_LENGTH_PARAMETER);
 2114               	.LM162:
 2115 0bf2 99E1      		ldi r25,lo8(25)
 2116 0bf4 B99E      		mul r11,r25
 2117 0bf6 8001      		movw r16,r0
 2118 0bf8 1124      		clr __zero_reg__
 2119 0bfa 0050      		subi r16,lo8(-(setParameter))
 2120 0bfc 1040      		sbci r17,hi8(-(setParameter))
 2121 0bfe 69E1      		ldi r22,lo8(25)
 2122 0c00 70E0      		ldi r23,0
 2123 0c02 C801      		movw r24,r16
 2124 0c04 0E94 0000 		call getNumberOfHexDigits
 2125 0c08 7C01      		movw r14,r24
 752:one_wire.c    ****    printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("numeric length of a
 2127               	.LM163:
 2128 0c0a FF92      		push r15
 2129 0c0c 8F93      		push r24
 2130 0c0e 1F93      		push r17
 2131 0c10 0F93      		push r16
 2132 0c12 80E0      		ldi r24,lo8(__c.3241)
 2133 0c14 90E0      		ldi r25,hi8(__c.3241)
 2134 0c16 9F93      		push r25
 2135 0c18 8F93      		push r24
 2136 0c1a 00E0      		ldi r16,lo8(filename)
 2137 0c1c 10E0      		ldi r17,hi8(filename)
 2138 0c1e 1F93      		push r17
 2139 0c20 0F93      		push r16
 2140 0c22 F2E0      		ldi r31,lo8(2)
 2141 0c24 DF2E      		mov r13,r31
 2142 0c26 DF92      		push r13
 2143 0c28 80EF      		ldi r24,lo8(-16)
 2144 0c2a 8F93      		push r24
 2145 0c2c 1F92      		push __zero_reg__
 2146 0c2e 1F92      		push __zero_reg__
 2147 0c30 1F92      		push __zero_reg__
 2148 0c32 A8E0      		ldi r26,lo8(8)
 2149 0c34 CA2E      		mov r12,r26
 2150 0c36 CF92      		push r12
 2151 0c38 DF92      		push r13
 2152 0c3a E091 0000 		lds r30,printDebug_p
 2153 0c3e F091 0000 		lds r31,printDebug_p+1
 2154 0c42 0995      		icall
 753:one_wire.c    **** 
 754:one_wire.c    ****    if ( 16 == numericLength)
 2156               	.LM164:
 2157 0c44 0FB6      		in __tmp_reg__,__SREG__
 2158 0c46 F894      		cli
 2159 0c48 DEBF      		out __SP_H__,r29
 2160 0c4a 0FBE      		out __SREG__,__tmp_reg__
 2161 0c4c CDBF      		out __SP_L__,r28
 2162 0c4e 90E1      		ldi r25,16
 2163 0c50 E916      		cp r14,r25
 2164 0c52 F104      		cpc r15,__zero_reg__
 2165 0c54 01F0      		breq .+2
 2166 0c56 00C0      		rjmp .L101
 2167 0c58 89E1      		ldi r24,lo8(25)
 2168 0c5a B89E      		mul r11,r24
 2169 0c5c 6001      		movw r12,r0
 2170 0c5e 1124      		clr __zero_reg__
 2171 0c60 C601      		movw r24,r12
 2172 0c62 8050      		subi r24,lo8(-(setParameter))
 2173 0c64 9040      		sbci r25,hi8(-(setParameter))
 2174 0c66 6C01      		movw r12,r24
 2175 0c68 E12C      		mov r14,__zero_reg__
 2176 0c6a F12C      		mov r15,__zero_reg__
 2177 0c6c 00E0      		ldi r16,0
 2178 0c6e 10E0      		ldi r17,0
 2179               	.L103:
 2180 0c70 F601      		movw r30,r12
 2181 0c72 EE0D      		add r30,r14
 2182 0c74 FF1D      		adc r31,r15
 755:one_wire.c    ****    {
 756:one_wire.c    ****       /* fill id[] from string */
 757:one_wire.c    ****       for (index = 0; index < 8; index++)
 758:one_wire.c    ****       {
 759:one_wire.c    ****          byte[0] = setParameter[parameterIndex][index*2];
 2184               	.LM165:
 2185 0c76 8081      		ld r24,Z
 2186 0c78 8983      		std Y+1,r24
 760:one_wire.c    ****          byte[1] = setParameter[parameterIndex][index*2 +1];
 2188               	.LM166:
 2189 0c7a 8181      		ldd r24,Z+1
 2190 0c7c 8A83      		std Y+2,r24
 761:one_wire.c    ****          byte[2] = 0;
 2192               	.LM167:
 2193 0c7e 1B82      		std Y+3,__zero_reg__
 762:one_wire.c    **** 
 763:one_wire.c    ****          ptr_owiStruct->id[index] = strtol(byte, NULL, 16);
 2195               	.LM168:
 2196 0c80 8090 0000 		lds r8,ptr_owiStruct
 2197 0c84 9090 0000 		lds r9,ptr_owiStruct+1
 2198 0c88 40E1      		ldi r20,lo8(16)
 2199 0c8a 50E0      		ldi r21,0
 2200 0c8c 60E0      		ldi r22,0
 2201 0c8e 70E0      		ldi r23,0
 2202 0c90 CE01      		movw r24,r28
 2203 0c92 0196      		adiw r24,1
 2204 0c94 0E94 0000 		call strtol
 2205 0c98 F401      		movw r30,r8
 2206 0c9a E00F      		add r30,r16
 2207 0c9c F11F      		adc r31,r17
 2208 0c9e 6083      		st Z,r22
 757:one_wire.c    ****       {
 2210               	.LM169:
 2211 0ca0 0F5F      		subi r16,-1
 2212 0ca2 1F4F      		sbci r17,-1
 2213 0ca4 92E0      		ldi r25,2
 2214 0ca6 E90E      		add r14,r25
 2215 0ca8 F11C      		adc r15,__zero_reg__
 2216 0caa 0830      		cpi r16,8
 2217 0cac 1105      		cpc r17,__zero_reg__
 2218 0cae 01F4      		brne .L103
 764:one_wire.c    ****       }
 765:one_wire.c    **** 
 766:one_wire.c    ****       /* set flag */
 767:one_wire.c    ****       ptr_owiStruct->idSelect_flag = TRUE;
 2220               	.LM170:
 2221 0cb0 E091 0000 		lds r30,ptr_owiStruct
 2222 0cb4 F091 0000 		lds r31,ptr_owiStruct+1
 2223 0cb8 81E0      		ldi r24,lo8(1)
 2224 0cba 8087      		std Z+8,r24
 768:one_wire.c    ****       if ( debugLevelEventDebug <= globalDebugLevel && ((globalDebugSystemMask >> debugSystemOWI) &
 2226               	.LM171:
 2227 0cbc 8091 0000 		lds r24,globalDebugLevel
 2228 0cc0 8230      		cpi r24,lo8(2)
 2229 0cc2 00F4      		brsh .+2
 2230 0cc4 00C0      		rjmp .L105
 2232               	.LM172:
 2233 0cc6 4091 0000 		lds r20,globalDebugSystemMask
 2234 0cca 5091 0000 		lds r21,globalDebugSystemMask+1
 2235 0cce 6091 0000 		lds r22,globalDebugSystemMask+2
 2236 0cd2 7091 0000 		lds r23,globalDebugSystemMask+3
 2237 0cd6 50FF      		sbrs r21,0
 2238 0cd8 00C0      		rjmp .L105
 769:one_wire.c    ****       {
 770:one_wire.c    ****          owiCreateIdString(owi_id_string, ptr_owiStruct->id);
 2240               	.LM173:
 2241 0cda BF01      		movw r22,r30
 2242 0cdc 80E0      		ldi r24,lo8(owi_id_string)
 2243 0cde 90E0      		ldi r25,hi8(owi_id_string)
 2244 0ce0 0E94 0000 		call owiCreateIdString
 771:one_wire.c    ****          printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("argument %i i
 2246               	.LM174:
 2247 0ce4 80E0      		ldi r24,lo8(owi_id_string)
 2248 0ce6 90E0      		ldi r25,hi8(owi_id_string)
 2249 0ce8 9F93      		push r25
 2250 0cea 8F93      		push r24
 2251 0cec 1F92      		push __zero_reg__
 2252 0cee BF92      		push r11
 2253 0cf0 80E0      		ldi r24,lo8(__c.3246)
 2254 0cf2 90E0      		ldi r25,hi8(__c.3246)
 2255 0cf4 9F93      		push r25
 2256 0cf6 8F93      		push r24
 2257 0cf8 80E0      		ldi r24,lo8(filename)
 2258 0cfa 90E0      		ldi r25,hi8(filename)
 2259 0cfc 9F93      		push r25
 2260 0cfe 8F93      		push r24
 2261 0d00 83E0      		ldi r24,lo8(3)
 2262 0d02 8F93      		push r24
 2263 0d04 8F93      		push r24
 2264 0d06 1F92      		push __zero_reg__
 2265 0d08 1F92      		push __zero_reg__
 2266 0d0a 1F92      		push __zero_reg__
 2267 0d0c 88E0      		ldi r24,lo8(8)
 2268 0d0e 8F93      		push r24
 2269 0d10 82E0      		ldi r24,lo8(2)
 2270 0d12 8F93      		push r24
 2271 0d14 E091 0000 		lds r30,printDebug_p
 2272 0d18 F091 0000 		lds r31,printDebug_p+1
 2273 0d1c 0995      		icall
 2274 0d1e 0FB6      		in __tmp_reg__,__SREG__
 2275 0d20 F894      		cli
 2276 0d22 DEBF      		out __SP_H__,r29
 2277 0d24 0FBE      		out __SREG__,__tmp_reg__
 2278 0d26 CDBF      		out __SP_L__,r28
 2279 0d28 00C0      		rjmp .L105
 2280               	.L101:
 772:one_wire.c    ****       }
 773:one_wire.c    ****       return 1;
 774:one_wire.c    ****    }
 775:one_wire.c    ****    else
 776:one_wire.c    ****    {
 777:one_wire.c    ****       ptr_owiStruct->idSelect_flag = FALSE;
 2282               	.LM175:
 2283 0d2a E091 0000 		lds r30,ptr_owiStruct
 2284 0d2e F091 0000 		lds r31,ptr_owiStruct+1
 2285 0d32 1086      		std Z+8,__zero_reg__
 778:one_wire.c    ****        printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("argument %i is 
 2287               	.LM176:
 2288 0d34 1F92      		push __zero_reg__
 2289 0d36 BF92      		push r11
 2290 0d38 80E0      		ldi r24,lo8(__c.3248)
 2291 0d3a 90E0      		ldi r25,hi8(__c.3248)
 2292 0d3c 9F93      		push r25
 2293 0d3e 8F93      		push r24
 2294 0d40 1F93      		push r17
 2295 0d42 0F93      		push r16
 2296 0d44 83E0      		ldi r24,lo8(3)
 2297 0d46 8F93      		push r24
 2298 0d48 8AE0      		ldi r24,lo8(10)
 2299 0d4a 8F93      		push r24
 2300 0d4c 1F92      		push __zero_reg__
 2301 0d4e 1F92      		push __zero_reg__
 2302 0d50 1F92      		push __zero_reg__
 2303 0d52 CF92      		push r12
 2304 0d54 DF92      		push r13
 2305 0d56 E091 0000 		lds r30,printDebug_p
 2306 0d5a F091 0000 		lds r31,printDebug_p+1
 2307 0d5e 0995      		icall
 779:one_wire.c    ****       return 0;
 2309               	.LM177:
 2310 0d60 0FB6      		in __tmp_reg__,__SREG__
 2311 0d62 F894      		cli
 2312 0d64 DEBF      		out __SP_H__,r29
 2313 0d66 0FBE      		out __SREG__,__tmp_reg__
 2314 0d68 CDBF      		out __SP_L__,r28
 2315               	.L106:
 2316 0d6a 80E0      		ldi r24,0
 2317 0d6c 90E0      		ldi r25,0
 2318 0d6e 00C0      		rjmp .L100
 2319               	.L105:
 773:one_wire.c    ****    }
 2321               	.LM178:
 2322 0d70 81E0      		ldi r24,lo8(1)
 2323 0d72 90E0      		ldi r25,0
 2324               	.L100:
 2325               	/* epilogue start */
 780:one_wire.c    ****    }
 781:one_wire.c    **** }
 2327               	.LM179:
 2328 0d74 0F90      		pop __tmp_reg__
 2329 0d76 0F90      		pop __tmp_reg__
 2330 0d78 0F90      		pop __tmp_reg__
 2331 0d7a DF91      		pop r29
 2332 0d7c CF91      		pop r28
 2333 0d7e 1F91      		pop r17
 2334 0d80 0F91      		pop r16
 2335 0d82 FF90      		pop r15
 2336 0d84 EF90      		pop r14
 2337 0d86 DF90      		pop r13
 2338 0d88 CF90      		pop r12
 2339 0d8a BF90      		pop r11
 2340 0d8c 9F90      		pop r9
 2341 0d8e 8F90      		pop r8
 2342 0d90 0895      		ret
 2349               	.Lscope9:
 2351               	.global	owiConvertUartDataToOwiStruct
 2353               	owiConvertUartDataToOwiStruct:
 782:one_wire.c    **** 
 783:one_wire.c    **** 
 784:one_wire.c    **** #warning TODO: check if this function can be used for any OW command
 785:one_wire.c    **** 
 786:one_wire.c    **** /*
 787:one_wire.c    ****  * uint8_t owiConvertUartDataToOwiStruct(void)
 788:one_wire.c    ****  *
 789:one_wire.c    ****  * this function assigns the data of the structure uartData to the owi_struct used for many 1-wire 
 790:one_wire.c    ****  *
 791:one_wire.c    ****  * input : none (accesses global setParameter array)
 792:one_wire.c    ****  * output: none (accesses global structure ptr_owiStruct)
 793:one_wire.c    ****  *
 794:one_wire.c    ****  * After an init of the owi structure
 795:one_wire.c    ****  * the function assumes that the arguments to be analyzed obey to the following possible configurat
 796:one_wire.c    ****  * ( ID represents an hexadecimal 64 bit string, e.g. 2A45B456C89D1278)
 797:one_wire.c    ****  *
 798:one_wire.c    ****  * 0 arguments:
 799:one_wire.c    ****  *       (nothing to do, default values)
 800:one_wire.c    ****  *
 801:one_wire.c    ****  * 1 argument :
 802:one_wire.c    ****  *   - "ID"
 803:one_wire.c    ****  *       - task: read access to a specific device
 804:one_wire.c    ****  *       - action:
 805:one_wire.c    ****  *          - store ID in structure
 806:one_wire.c    ****  *          - set idSelect flag
 807:one_wire.c    ****  *   - "value"
 808:one_wire.c    ****  *       - task: write access to all possible devices
 809:one_wire.c    ****  *       - action:
 810:one_wire.c    ****  *          - store value in structure
 811:one_wire.c    ****  *
 812:one_wire.c    ****  * 2 arguments:
 813:one_wire.c    ****  *   - "ID conversion_flag"
 814:one_wire.c    ****  *       - task: read access to a specific ID with prior conversion
 815:one_wire.c    ****  *       - action:
 816:one_wire.c    ****  *          - store ID in structure
 817:one_wire.c    ****  *          - set idSelect flag
 818:one_wire.c    ****  *          - set conversion_flag if value differs from 0
 819:one_wire.c    ****  *   - "ID value"
 820:one_wire.c    ****  *       - task: write access to a specific device
 821:one_wire.c    ****  *       - action:
 822:one_wire.c    ****  *          - store ID in structure
 823:one_wire.c    ****  *          - set idSelect flag
 824:one_wire.c    ****  *          - store value in structure
 825:one_wire.c    ****  *   - "value init_flag"
 826:one_wire.c    ****  *       - task: write access to all possible devices with prior initialization
 827:one_wire.c    ****  *       - action:
 828:one_wire.c    ****  *          - store value in structure
 829:one_wire.c    ****  *          - set init_flag if value differs from 0
 830:one_wire.c    ****  *
 831:one_wire.c    ****  * 3 arguments:
 832:one_wire.c    ****  *   - "ID conversion_flag init_flag"
 833:one_wire.c    ****  *       - task: read access to a specific ID with prior conversion and initialization
 834:one_wire.c    ****  *       - action:
 835:one_wire.c    ****  *          - store ID in structure
 836:one_wire.c    ****  *          - set idSelect flag
 837:one_wire.c    ****  *          - set conversion_flag if value differs from 0
 838:one_wire.c    ****  *   - "ID value init_flag"
 839:one_wire.c    ****  *       - task: write access to a specific device with initialization
 840:one_wire.c    ****  *       - action:
 841:one_wire.c    ****  *          - store ID in structure
 842:one_wire.c    ****  *          - store value in structure
 843:one_wire.c    ****  *          - set init_flag if value differs from 0
 844:one_wire.c    ****  *
 845:one_wire.c    ****  */
 846:one_wire.c    **** uint8_t owiConvertUartDataToOwiStruct(void)
 847:one_wire.c    **** {
 2355               	.LM180:
 2356               	.LFBB10:
 2357 0d92 0F93      		push r16
 2358 0d94 1F93      		push r17
 2359 0d96 CF93      		push r28
 2360 0d98 DF93      		push r29
 2361 0d9a CDB7      		in r28,__SP_L__
 2362 0d9c DEB7      		in r29,__SP_H__
 2363 0d9e 2897      		sbiw r28,8
 2364 0da0 0FB6      		in __tmp_reg__,__SREG__
 2365 0da2 F894      		cli
 2366 0da4 DEBF      		out __SP_H__,r29
 2367 0da6 0FBE      		out __SREG__,__tmp_reg__
 2368 0da8 CDBF      		out __SP_L__,r28
 2369               	/* prologue: function */
 2370               	/* frame size = 8 */
 2371               	/* stack size = 12 */
 2372               	.L__stack_usage = 12
 848:one_wire.c    **** #warning THERE IS TOO MUCH INTELLIGENCE IN THIS FUNCTION (reduce it to filling or split it up into 
 849:one_wire.c    ****    //unsigned int myid =0;
 850:one_wire.c    ****    owiInitOwiStruct(ptr_owiStruct);
 2374               	.LM181:
 2375 0daa 8091 0000 		lds r24,ptr_owiStruct
 2376 0dae 9091 0000 		lds r25,ptr_owiStruct+1
 2377 0db2 0E94 0000 		call owiInitOwiStruct
 851:one_wire.c    **** 
 852:one_wire.c    ****    uint64_t value;
 853:one_wire.c    ****    int8_t numberOfArguments = ptr_uartStruct->number_of_arguments;
 2379               	.LM182:
 2380 0db6 E091 0000 		lds r30,ptr_uartStruct
 2381 0dba F091 0000 		lds r31,ptr_uartStruct+1
 2382 0dbe 138D      		ldd r17,Z+27
 854:one_wire.c    **** 
 855:one_wire.c    ****     printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("number of argument
 2384               	.LM183:
 2385 0dc0 812F      		mov r24,r17
 2386 0dc2 9927      		clr r25
 2387 0dc4 87FD      		sbrc r24,7
 2388 0dc6 9095      		com r25
 2389 0dc8 9F93      		push r25
 2390 0dca 1F93      		push r17
 2391 0dcc 80E0      		ldi r24,lo8(__c.3255)
 2392 0dce 90E0      		ldi r25,hi8(__c.3255)
 2393 0dd0 9F93      		push r25
 2394 0dd2 8F93      		push r24
 2395 0dd4 80E0      		ldi r24,lo8(filename)
 2396 0dd6 90E0      		ldi r25,hi8(filename)
 2397 0dd8 9F93      		push r25
 2398 0dda 8F93      		push r24
 2399 0ddc 83E0      		ldi r24,lo8(3)
 2400 0dde 8F93      		push r24
 2401 0de0 87E5      		ldi r24,lo8(87)
 2402 0de2 8F93      		push r24
 2403 0de4 1F92      		push __zero_reg__
 2404 0de6 1F92      		push __zero_reg__
 2405 0de8 1F92      		push __zero_reg__
 2406 0dea 88E0      		ldi r24,lo8(8)
 2407 0dec 8F93      		push r24
 2408 0dee 82E0      		ldi r24,lo8(2)
 2409 0df0 8F93      		push r24
 2410 0df2 E091 0000 		lds r30,printDebug_p
 2411 0df6 F091 0000 		lds r31,printDebug_p+1
 2412 0dfa 0995      		icall
 856:one_wire.c    **** 
 857:one_wire.c    ****    switch(numberOfArguments)
 2414               	.LM184:
 2415 0dfc 0FB6      		in __tmp_reg__,__SREG__
 2416 0dfe F894      		cli
 2417 0e00 DEBF      		out __SP_H__,r29
 2418 0e02 0FBE      		out __SREG__,__tmp_reg__
 2419 0e04 CDBF      		out __SP_L__,r28
 2420 0e06 1130      		cpi r17,lo8(1)
 2421 0e08 01F0      		breq .L109
 2422 0e0a 04F4      		brge .L110
 2423 0e0c 1123      		tst r17
 2424 0e0e 01F4      		brne .+2
 2425 0e10 00C0      		rjmp .L125
 2426 0e12 00C0      		rjmp .L108
 2427               	.L110:
 2428 0e14 1230      		cpi r17,lo8(2)
 2429 0e16 01F0      		breq .L112
 2430 0e18 1330      		cpi r17,lo8(3)
 2431 0e1a 01F4      		brne .+2
 2432 0e1c 00C0      		rjmp .L113
 2433 0e1e 00C0      		rjmp .L108
 2434               	.L109:
 858:one_wire.c    ****    {
 859:one_wire.c    ****       case 0:
 860:one_wire.c    ****          /*nothing else to do*/
 861:one_wire.c    ****          break;
 862:one_wire.c    ****       case 1:
 863:one_wire.c    ****       {
 864:one_wire.c    ****          /* args:
 865:one_wire.c    ****           *       ID
 866:one_wire.c    ****           *       value
 867:one_wire.c    ****           *       command
 868:one_wire.c    ****           */
 869:one_wire.c    **** 
 870:one_wire.c    ****          /* ID */
 871:one_wire.c    ****          isParameterIDThenFillOwiStructure(1);
 2436               	.LM185:
 2437 0e20 81E0      		ldi r24,lo8(1)
 2438 0e22 0E94 0000 		call isParameterIDThenFillOwiStructure
 872:one_wire.c    **** 
 873:one_wire.c    ****          /* value / command */
 874:one_wire.c    ****          if (FALSE == ptr_owiStruct->idSelect_flag)
 2440               	.LM186:
 2441 0e26 E091 0000 		lds r30,ptr_owiStruct
 2442 0e2a F091 0000 		lds r31,ptr_owiStruct+1
 2443 0e2e 8085      		ldd r24,Z+8
 2444 0e30 8111      		cpse r24,__zero_reg__
 2445 0e32 00C0      		rjmp .L125
 875:one_wire.c    ****          {
 876:one_wire.c    ****              if ( isNumericArgument(setParameter[1], MAX_LENGTH_PARAMETER))
 2447               	.LM187:
 2448 0e34 69E1      		ldi r22,lo8(25)
 2449 0e36 70E0      		ldi r23,0
 2450 0e38 80E0      		ldi r24,lo8(setParameter+25)
 2451 0e3a 90E0      		ldi r25,hi8(setParameter+25)
 2452 0e3c 0E94 0000 		call isNumericArgument
 2453 0e40 8823      		tst r24
 2454 0e42 01F4      		brne .+2
 2455 0e44 00C0      		rjmp .L131
 877:one_wire.c    ****              {
 878:one_wire.c    ****             	 getUnsignedNumericValueFromParameterIndex( 1 , &value );
 2457               	.LM188:
 2458 0e46 BE01      		movw r22,r28
 2459 0e48 6F5F      		subi r22,-1
 2460 0e4a 7F4F      		sbci r23,-1
 2461 0e4c 81E0      		ldi r24,lo8(1)
 2462 0e4e 00C0      		rjmp .L130
 2463               	.L112:
 879:one_wire.c    ****             	 ptr_owiStruct->value = (uint16_t) (0xFFFF & value);
 880:one_wire.c    ****             	 ptr_owiStruct->ptr_value = &(ptr_owiStruct->value);
 881:one_wire.c    ****              }
 882:one_wire.c    ****              else
 883:one_wire.c    ****              {
 884:one_wire.c    ****                 strncpy( ptr_owiStruct->command, setParameter[1], MAX_LENGTH_PARAMETER);
 885:one_wire.c    ****              }
 886:one_wire.c    ****          }
 887:one_wire.c    ****       }
 888:one_wire.c    ****          break;
 889:one_wire.c    ****       case 2:
 890:one_wire.c    ****          /* args:
 891:one_wire.c    ****           *       ID    command
 892:one_wire.c    ****           *       ID    convert_flag
 893:one_wire.c    ****           *       ID    value
 894:one_wire.c    ****           *       value init_flag
 895:one_wire.c    ****           *       command argument
 896:one_wire.c    ****           *       command ID
 897:one_wire.c    ****           */
 898:one_wire.c    **** 
 899:one_wire.c    ****          /* ID */
 900:one_wire.c    ****          isParameterIDThenFillOwiStructure(1);
 2465               	.LM189:
 2466 0e50 81E0      		ldi r24,lo8(1)
 2467 0e52 0E94 0000 		call isParameterIDThenFillOwiStructure
 901:one_wire.c    **** 
 902:one_wire.c    ****          /* ID command / ID value/flag */
 903:one_wire.c    ****          if (TRUE == ptr_owiStruct->idSelect_flag)
 2469               	.LM190:
 2470 0e56 E091 0000 		lds r30,ptr_owiStruct
 2471 0e5a F091 0000 		lds r31,ptr_owiStruct+1
 2472 0e5e 8085      		ldd r24,Z+8
 904:one_wire.c    ****          {
 905:one_wire.c    ****         	 /* numeric value*/
 906:one_wire.c    ****         	 if ( isNumericArgument(setParameter[2], MAX_LENGTH_PARAMETER))
 2474               	.LM191:
 2475 0e60 69E1      		ldi r22,lo8(25)
 2476 0e62 70E0      		ldi r23,0
 903:one_wire.c    ****          {
 2478               	.LM192:
 2479 0e64 8130      		cpi r24,lo8(1)
 2480 0e66 01F4      		brne .L116
 2482               	.LM193:
 2483 0e68 80E0      		ldi r24,lo8(setParameter+50)
 2484 0e6a 90E0      		ldi r25,hi8(setParameter+50)
 2485 0e6c 0E94 0000 		call isNumericArgument
 2486 0e70 8823      		tst r24
 2487 0e72 01F0      		breq .L117
 907:one_wire.c    ****         	 {
 908:one_wire.c    ****         		 /* second argument can either be numeric value (write mode) or numeric convert_flag (rea
 909:one_wire.c    ****         		  * assigning to value*/
 910:one_wire.c    **** 
 911:one_wire.c    ****         		 getUnsignedNumericValueFromParameterIndex( 2 , &value );
 2489               	.LM194:
 2490 0e74 BE01      		movw r22,r28
 2491 0e76 6F5F      		subi r22,-1
 2492 0e78 7F4F      		sbci r23,-1
 2493 0e7a 82E0      		ldi r24,lo8(2)
 2494               	.L130:
 2495 0e7c 0E94 0000 		call getUnsignedNumericValueFromParameterIndex
 912:one_wire.c    ****         		 ptr_owiStruct->value = (uint16_t) (0xFFFF & value);
 2497               	.LM195:
 2498 0e80 E091 0000 		lds r30,ptr_owiStruct
 2499 0e84 F091 0000 		lds r31,ptr_owiStruct+1
 2500 0e88 8981      		ldd r24,Y+1
 2501 0e8a 9A81      		ldd r25,Y+2
 2502 0e8c 9487      		std Z+12,r25
 2503 0e8e 8387      		std Z+11,r24
 913:one_wire.c    ****         		 ptr_owiStruct->ptr_value = &(ptr_owiStruct->value);
 2505               	.LM196:
 2506 0e90 CF01      		movw r24,r30
 2507 0e92 0B96      		adiw r24,11
 2508 0e94 9287      		std Z+10,r25
 2509 0e96 8187      		std Z+9,r24
 2510 0e98 00C0      		rjmp .L125
 2511               	.L117:
 914:one_wire.c    ****         	 }
 915:one_wire.c    ****         	 else /* command */
 916:one_wire.c    ****         	 {
 917:one_wire.c    ****         		 strncpy( ptr_owiStruct->command, setParameter[2], MAX_LENGTH_PARAMETER);
 2513               	.LM197:
 2514 0e9a 8091 0000 		lds r24,ptr_owiStruct
 2515 0e9e 9091 0000 		lds r25,ptr_owiStruct+1
 2516 0ea2 49E1      		ldi r20,lo8(25)
 2517 0ea4 50E0      		ldi r21,0
 2518 0ea6 60E0      		ldi r22,lo8(setParameter+50)
 2519 0ea8 70E0      		ldi r23,hi8(setParameter+50)
 2520 0eaa 00C0      		rjmp .L129
 2521               	.L116:
 918:one_wire.c    ****         	 }
 919:one_wire.c    ****          }
 920:one_wire.c    ****          else /* value flag | command value/argument/ID*/
 921:one_wire.c    ****          {
 922:one_wire.c    ****             /* numeric value */
 923:one_wire.c    ****         	 if ( isNumericArgument(setParameter[1], MAX_LENGTH_PARAMETER))
 2523               	.LM198:
 2524 0eac 80E0      		ldi r24,lo8(setParameter+25)
 2525 0eae 90E0      		ldi r25,hi8(setParameter+25)
 2526 0eb0 0E94 0000 		call isNumericArgument
 2527 0eb4 8823      		tst r24
 2528 0eb6 01F0      		breq .L118
 924:one_wire.c    ****         	 {
 925:one_wire.c    ****         		 getUnsignedNumericValueFromParameterIndex( 1 , &value );
 2530               	.LM199:
 2531 0eb8 BE01      		movw r22,r28
 2532 0eba 6F5F      		subi r22,-1
 2533 0ebc 7F4F      		sbci r23,-1
 2534 0ebe 81E0      		ldi r24,lo8(1)
 2535 0ec0 0E94 0000 		call getUnsignedNumericValueFromParameterIndex
 926:one_wire.c    ****         		 ptr_owiStruct->value = (uint16_t) (0xFFFF & value);
 2537               	.LM200:
 2538 0ec4 E091 0000 		lds r30,ptr_owiStruct
 2539 0ec8 F091 0000 		lds r31,ptr_owiStruct+1
 2540 0ecc 8981      		ldd r24,Y+1
 2541 0ece 9A81      		ldd r25,Y+2
 2542 0ed0 9487      		std Z+12,r25
 2543 0ed2 8387      		std Z+11,r24
 927:one_wire.c    ****         		 ptr_owiStruct->ptr_value = &(ptr_owiStruct->value);
 2545               	.LM201:
 2546 0ed4 CF01      		movw r24,r30
 2547 0ed6 0B96      		adiw r24,11
 2548 0ed8 9287      		std Z+10,r25
 2549 0eda 8187      		std Z+9,r24
 928:one_wire.c    ****         		 getUnsignedNumericValueFromParameterIndex( 2 , &value );
 2551               	.LM202:
 2552 0edc BE01      		movw r22,r28
 2553 0ede 6F5F      		subi r22,-1
 2554 0ee0 7F4F      		sbci r23,-1
 2555 0ee2 82E0      		ldi r24,lo8(2)
 2556 0ee4 0E94 0000 		call getUnsignedNumericValueFromParameterIndex
 929:one_wire.c    ****         		 ptr_owiStruct->init_flag = ( 0 != value );
 2558               	.LM203:
 2559 0ee8 B1E0      		ldi r27,lo8(1)
 2560 0eea 2981      		ldd r18,Y+1
 2561 0eec 3A81      		ldd r19,Y+2
 2562 0eee 4B81      		ldd r20,Y+3
 2563 0ef0 5C81      		ldd r21,Y+4
 2564 0ef2 6D81      		ldd r22,Y+5
 2565 0ef4 7E81      		ldd r23,Y+6
 2566 0ef6 8F81      		ldd r24,Y+7
 2567 0ef8 9885      		ldd r25,Y+8
 2568 0efa A0E0      		ldi r26,0
 2569 0efc 0E94 0000 		call __cmpdi2_s8
 2570 0f00 01F4      		brne .L119
 2571 0f02 B0E0      		ldi r27,0
 2572               	.L119:
 2573 0f04 E091 0000 		lds r30,ptr_owiStruct
 2574 0f08 F091 0000 		lds r31,ptr_owiStruct+1
 2575 0f0c B687      		std Z+14,r27
 930:one_wire.c    **** 
 931:one_wire.c    ****         		 printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename,
 2577               	.LM204:
 2578 0f0e 1F92      		push __zero_reg__
 2579 0f10 BF93      		push r27
 2580 0f12 80E0      		ldi r24,lo8(__c.3261)
 2581 0f14 90E0      		ldi r25,hi8(__c.3261)
 2582 0f16 9F93      		push r25
 2583 0f18 8F93      		push r24
 2584 0f1a 80E0      		ldi r24,lo8(filename)
 2585 0f1c 90E0      		ldi r25,hi8(filename)
 2586 0f1e 9F93      		push r25
 2587 0f20 8F93      		push r24
 2588 0f22 83E0      		ldi r24,lo8(3)
 2589 0f24 8F93      		push r24
 2590 0f26 83EA      		ldi r24,lo8(-93)
 2591 0f28 00C0      		rjmp .L133
 2592               	.L118:
 932:one_wire.c    ****         				 	  PSTR("second argument sets init_flag to: %i "), ptr_owiStruct->init_flag );
 933:one_wire.c    ****         	 }
 934:one_wire.c    ****             else /* command ID/value/argument */
 935:one_wire.c    ****             {
 936:one_wire.c    ****                /* command */
 937:one_wire.c    ****                strncpy( ptr_owiStruct->command, setParameter[1], MAX_LENGTH_PARAMETER);
 2594               	.LM205:
 2595 0f2a 8091 0000 		lds r24,ptr_owiStruct
 2596 0f2e 9091 0000 		lds r25,ptr_owiStruct+1
 2597 0f32 49E1      		ldi r20,lo8(25)
 2598 0f34 50E0      		ldi r21,0
 2599 0f36 60E0      		ldi r22,lo8(setParameter+25)
 2600 0f38 70E0      		ldi r23,hi8(setParameter+25)
 2601 0f3a 0F96      		adiw r24,15
 2602 0f3c 0E94 0000 		call strncpy
 938:one_wire.c    **** 
 939:one_wire.c    ****                /* 2nd argument */
 940:one_wire.c    ****                /* is 2nd argument ID ?*/
 941:one_wire.c    ****                if ( 0 == isParameterIDThenFillOwiStructure(2) )
 2604               	.LM206:
 2605 0f40 82E0      		ldi r24,lo8(2)
 2606 0f42 0E94 0000 		call isParameterIDThenFillOwiStructure
 2607 0f46 892B      		or r24,r25
 2608 0f48 01F0      		breq .+2
 2609 0f4a 00C0      		rjmp .L125
 942:one_wire.c    ****                {
 943:one_wire.c    ****                   /* numeric value/flag? */
 944:one_wire.c    ****               	 if ( isNumericArgument(setParameter[1], MAX_LENGTH_PARAMETER))
 2611               	.LM207:
 2612 0f4c 69E1      		ldi r22,lo8(25)
 2613 0f4e 70E0      		ldi r23,0
 2614 0f50 80E0      		ldi r24,lo8(setParameter+25)
 2615 0f52 90E0      		ldi r25,hi8(setParameter+25)
 2616 0f54 0E94 0000 		call isNumericArgument
 2617 0f58 8823      		tst r24
 2618 0f5a 01F4      		brne .+2
 2619 0f5c 00C0      		rjmp .L125
 945:one_wire.c    ****               	 {
 946:one_wire.c    ****               		 getUnsignedNumericValueFromParameterIndex( 1 , &value );
 2621               	.LM208:
 2622 0f5e BE01      		movw r22,r28
 2623 0f60 6F5F      		subi r22,-1
 2624 0f62 7F4F      		sbci r23,-1
 2625 0f64 81E0      		ldi r24,lo8(1)
 2626 0f66 0E94 0000 		call getUnsignedNumericValueFromParameterIndex
 947:one_wire.c    ****               		 ptr_owiStruct->value = (uint16_t) (0xFFFF & value);
 2628               	.LM209:
 2629 0f6a E091 0000 		lds r30,ptr_owiStruct
 2630 0f6e F091 0000 		lds r31,ptr_owiStruct+1
 2631 0f72 8981      		ldd r24,Y+1
 2632 0f74 9A81      		ldd r25,Y+2
 2633 0f76 9487      		std Z+12,r25
 2634 0f78 8387      		std Z+11,r24
 948:one_wire.c    ****               		 ptr_owiStruct->ptr_value = &(ptr_owiStruct->value);
 2636               	.LM210:
 2637 0f7a CF01      		movw r24,r30
 2638 0f7c 0B96      		adiw r24,11
 2639 0f7e 9287      		std Z+10,r25
 2640 0f80 8187      		std Z+9,r24
 949:one_wire.c    ****               		 getUnsignedNumericValueFromParameterIndex( 2 , &value );
 2642               	.LM211:
 2643 0f82 BE01      		movw r22,r28
 2644 0f84 6F5F      		subi r22,-1
 2645 0f86 7F4F      		sbci r23,-1
 2646 0f88 82E0      		ldi r24,lo8(2)
 2647 0f8a 0E94 0000 		call getUnsignedNumericValueFromParameterIndex
 950:one_wire.c    ****               		 ptr_owiStruct->init_flag = ( 0 != value );
 2649               	.LM212:
 2650 0f8e B1E0      		ldi r27,lo8(1)
 2651 0f90 2981      		ldd r18,Y+1
 2652 0f92 3A81      		ldd r19,Y+2
 2653 0f94 4B81      		ldd r20,Y+3
 2654 0f96 5C81      		ldd r21,Y+4
 2655 0f98 6D81      		ldd r22,Y+5
 2656 0f9a 7E81      		ldd r23,Y+6
 2657 0f9c 8F81      		ldd r24,Y+7
 2658 0f9e 9885      		ldd r25,Y+8
 2659 0fa0 A0E0      		ldi r26,0
 2660 0fa2 0E94 0000 		call __cmpdi2_s8
 2661 0fa6 01F4      		brne .L121
 2662 0fa8 B0E0      		ldi r27,0
 2663               	.L121:
 2664 0faa E091 0000 		lds r30,ptr_owiStruct
 2665 0fae F091 0000 		lds r31,ptr_owiStruct+1
 2666 0fb2 B687      		std Z+14,r27
 951:one_wire.c    **** 
 952:one_wire.c    ****                      printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename,
 2668               	.LM213:
 2669 0fb4 1F92      		push __zero_reg__
 2670 0fb6 BF93      		push r27
 2671 0fb8 80E0      		ldi r24,lo8(__c.3263)
 2672 0fba 90E0      		ldi r25,hi8(__c.3263)
 2673 0fbc 9F93      		push r25
 2674 0fbe 8F93      		push r24
 2675 0fc0 80E0      		ldi r24,lo8(filename)
 2676 0fc2 90E0      		ldi r25,hi8(filename)
 2677 0fc4 9F93      		push r25
 2678 0fc6 8F93      		push r24
 2679 0fc8 83E0      		ldi r24,lo8(3)
 2680 0fca 8F93      		push r24
 2681 0fcc 88EB      		ldi r24,lo8(-72)
 2682               	.L133:
 2683 0fce 8F93      		push r24
 2684 0fd0 1F92      		push __zero_reg__
 2685 0fd2 1F92      		push __zero_reg__
 2686 0fd4 1F92      		push __zero_reg__
 2687 0fd6 88E0      		ldi r24,lo8(8)
 2688 0fd8 8F93      		push r24
 2689 0fda 82E0      		ldi r24,lo8(2)
 2690 0fdc 8F93      		push r24
 2691 0fde E091 0000 		lds r30,printDebug_p
 2692 0fe2 F091 0000 		lds r31,printDebug_p+1
 2693 0fe6 0995      		icall
 2694 0fe8 0FB6      		in __tmp_reg__,__SREG__
 2695 0fea F894      		cli
 2696 0fec DEBF      		out __SP_H__,r29
 2697 0fee 0FBE      		out __SREG__,__tmp_reg__
 2698 0ff0 CDBF      		out __SP_L__,r28
 2699 0ff2 00C0      		rjmp .L125
 2700               	.L113:
 953:one_wire.c    ****                     		 	 PSTR("second argument sets init_flag to: %i "), ptr_owiStruct->init_flag )
 954:one_wire.c    ****               	 }
 955:one_wire.c    ****                }
 956:one_wire.c    ****             }
 957:one_wire.c    ****          }
 958:one_wire.c    ****        break;
 959:one_wire.c    ****       case 3:
 960:one_wire.c    ****          /* args:
 961:one_wire.c    ****           *       ID    convert_flag init_flag
 962:one_wire.c    ****           *       ID    value init_flag
 963:one_wire.c    ****           *       ID    command value
 964:one_wire.c    ****           *       command arguments arguments
 965:one_wire.c    ****           *       command ID value
 966:one_wire.c    ****           */
 967:one_wire.c    **** 
 968:one_wire.c    ****          /* ID */
 969:one_wire.c    ****          isParameterIDThenFillOwiStructure(1);
 2702               	.LM214:
 2703 0ff4 81E0      		ldi r24,lo8(1)
 2704 0ff6 0E94 0000 		call isParameterIDThenFillOwiStructure
 970:one_wire.c    **** 
 971:one_wire.c    ****          /* ID value/flag flag*/
 972:one_wire.c    ****          if (TRUE == ptr_owiStruct->idSelect_flag)
 2706               	.LM215:
 2707 0ffa 0091 0000 		lds r16,ptr_owiStruct
 2708 0ffe 1091 0000 		lds r17,ptr_owiStruct+1
 2709 1002 F801      		movw r30,r16
 2710 1004 8085      		ldd r24,Z+8
 2711 1006 8130      		cpi r24,lo8(1)
 2712 1008 01F4      		brne .L122
 973:one_wire.c    ****          {
 974:one_wire.c    ****             /* second argument can either be value (write mode) or convert_flag (read_mode), indist
 975:one_wire.c    ****              * assigning to value*/
 976:one_wire.c    ****             ptr_owiStruct->value = (uint16_t) strtoul(setParameter [2], &ptr_setParameter[2], 16);
 2714               	.LM216:
 2715 100a 40E1      		ldi r20,lo8(16)
 2716 100c 50E0      		ldi r21,0
 2717 100e 60E0      		ldi r22,lo8(ptr_setParameter+4)
 2718 1010 70E0      		ldi r23,hi8(ptr_setParameter+4)
 2719 1012 80E0      		ldi r24,lo8(setParameter+50)
 2720 1014 90E0      		ldi r25,hi8(setParameter+50)
 2721 1016 0E94 0000 		call strtoul
 2722 101a F801      		movw r30,r16
 2723 101c 7487      		std Z+12,r23
 2724 101e 6387      		std Z+11,r22
 977:one_wire.c    ****             ptr_owiStruct->ptr_value = &(ptr_owiStruct->value);
 2726               	.LM217:
 2727 1020 0091 0000 		lds r16,ptr_owiStruct
 2728 1024 1091 0000 		lds r17,ptr_owiStruct+1
 2729 1028 C801      		movw r24,r16
 2730 102a 0B96      		adiw r24,11
 2731 102c F801      		movw r30,r16
 2732 102e 9287      		std Z+10,r25
 2733 1030 8187      		std Z+9,r24
 978:one_wire.c    **** 
 979:one_wire.c    ****             /* third argument can only be a the init_flag*/
 980:one_wire.c    ****             ptr_owiStruct->init_flag = ( 0 != (uint16_t) strtoul(setParameter [3], &ptr_setParamete
 2735               	.LM218:
 2736 1032 40E1      		ldi r20,lo8(16)
 2737 1034 50E0      		ldi r21,0
 2738 1036 60E0      		ldi r22,lo8(ptr_setParameter+6)
 2739 1038 70E0      		ldi r23,hi8(ptr_setParameter+6)
 2740 103a 80E0      		ldi r24,lo8(setParameter+75)
 2741 103c 90E0      		ldi r25,hi8(setParameter+75)
 2742 103e 0E94 0000 		call strtoul
 2743 1042 21E0      		ldi r18,lo8(1)
 2744 1044 672B      		or r22,r23
 2745 1046 01F4      		brne .L123
 2746 1048 20E0      		ldi r18,0
 2747               	.L123:
 2748 104a F801      		movw r30,r16
 2749 104c 2687      		std Z+14,r18
 2750 104e 00C0      		rjmp .L125
 2751               	.L122:
 981:one_wire.c    ****          }
 982:one_wire.c    ****          else /* command arguments */
 983:one_wire.c    ****          {
 984:one_wire.c    ****             strncpy( ptr_owiStruct->command, setParameter[1], MAX_LENGTH_PARAMETER);
 2753               	.LM219:
 2754 1050 49E1      		ldi r20,lo8(25)
 2755 1052 50E0      		ldi r21,0
 2756 1054 60E0      		ldi r22,lo8(setParameter+25)
 2757 1056 70E0      		ldi r23,hi8(setParameter+25)
 2758 1058 C801      		movw r24,r16
 2759 105a 00C0      		rjmp .L129
 2760               	.L108:
 985:one_wire.c    ****          }
 986:one_wire.c    ****          break;
 987:one_wire.c    ****       default:
 988:one_wire.c    ****          if (numberOfArguments < MAX_PARAMETER)
 2762               	.LM220:
 2763 105c 1E30      		cpi r17,lo8(14)
 2764 105e 04F4      		brge .L124
 2765               	.L131:
 989:one_wire.c    ****          {
 990:one_wire.c    ****             /* args:
 991:one_wire.c    ****              *       command arguments ... arguments
 992:one_wire.c    ****              */
 993:one_wire.c    **** 
 994:one_wire.c    ****             /* take first argument as command */
 995:one_wire.c    ****             strncpy( ptr_owiStruct->command, setParameter[1], MAX_LENGTH_PARAMETER);
 2767               	.LM221:
 2768 1060 8091 0000 		lds r24,ptr_owiStruct
 2769 1064 9091 0000 		lds r25,ptr_owiStruct+1
 2770 1068 49E1      		ldi r20,lo8(25)
 2771 106a 50E0      		ldi r21,0
 2772 106c 60E0      		ldi r22,lo8(setParameter+25)
 2773 106e 70E0      		ldi r23,hi8(setParameter+25)
 2774               	.L129:
 2775 1070 0F96      		adiw r24,15
 2776 1072 0E94 0000 		call strncpy
 2777 1076 00C0      		rjmp .L125
 2778               	.L124:
 996:one_wire.c    ****          }
 997:one_wire.c    ****          else
 998:one_wire.c    ****          {
 999:one_wire.c    ****             CommunicationError_p(ERRA, dynamicMessage_ErrorIndex, TRUE, PSTR("invalid number of arg
 2780               	.LM222:
 2781 1078 80E0      		ldi r24,lo8(__c.3267)
 2782 107a 90E0      		ldi r25,hi8(__c.3267)
 2783 107c 9F93      		push r25
 2784 107e 8F93      		push r24
 2785 1080 81E0      		ldi r24,lo8(1)
 2786 1082 8F93      		push r24
 2787 1084 9FEF      		ldi r25,lo8(-1)
 2788 1086 9F93      		push r25
 2789 1088 9CE9      		ldi r25,lo8(-100)
 2790 108a 9F93      		push r25
 2791 108c 8F93      		push r24
 2792 108e E091 0000 		lds r30,CommunicationError_p
 2793 1092 F091 0000 		lds r31,CommunicationError_p+1
 2794 1096 0995      		icall
1000:one_wire.c    ****             return 1;
 2796               	.LM223:
 2797 1098 0F90      		pop __tmp_reg__
 2798 109a 0F90      		pop __tmp_reg__
 2799 109c 0F90      		pop __tmp_reg__
 2800 109e 0F90      		pop __tmp_reg__
 2801 10a0 0F90      		pop __tmp_reg__
 2802 10a2 0F90      		pop __tmp_reg__
 2803 10a4 81E0      		ldi r24,lo8(1)
 2804 10a6 00C0      		rjmp .L111
 2805               	.L125:
1001:one_wire.c    ****          }
1002:one_wire.c    ****          break;
1003:one_wire.c    ****    }
1004:one_wire.c    ****    return 0;
 2807               	.LM224:
 2808 10a8 80E0      		ldi r24,0
 2809               	.L111:
 2810               	/* epilogue start */
1005:one_wire.c    **** } // END of function ConvertUartDataToOwi(void)
 2812               	.LM225:
 2813 10aa 2896      		adiw r28,8
 2814 10ac 0FB6      		in __tmp_reg__,__SREG__
 2815 10ae F894      		cli
 2816 10b0 DEBF      		out __SP_H__,r29
 2817 10b2 0FBE      		out __SREG__,__tmp_reg__
 2818 10b4 CDBF      		out __SP_L__,r28
 2819 10b6 DF91      		pop r29
 2820 10b8 CF91      		pop r28
 2821 10ba 1F91      		pop r17
 2822 10bc 0F91      		pop r16
 2823 10be 0895      		ret
 2829               	.Lscope10:
 2832               	.global	owiFindIdAndGetIndex
 2834               	owiFindIdAndGetIndex:
1006:one_wire.c    **** 
1007:one_wire.c    **** 
1008:one_wire.c    **** /* owiFindIdAndGetIndex
1009:one_wire.c    ****  * This function searches in the global list of found/available IDs
1010:one_wire.c    ****  * whether the given 1-wire unique id is in this list and returns its index.
1011:one_wire.c    ****  *
1012:one_wire.c    ****  * Input:
1013:one_wire.c    ****  *      - id
1014:one_wire.c    ****  *          pointer to 8 byte array containing the ID to be searched for
1015:one_wire.c    ****  * Return values:
1016:one_wire.c    ****  *      - index of found item [ 0, OWI_MAX_NUM_DEVICES ]
1017:one_wire.c    ****  *      - -1 if not found
1018:one_wire.c    ****  *      - -1000 in case of error
1019:one_wire.c    ****  *
1020:one_wire.c    ****  */
1021:one_wire.c    **** int16_t owiFindIdAndGetIndex(uint8_t id[])
1022:one_wire.c    **** 
1023:one_wire.c    **** {
 2836               	.LM226:
 2837               	.LFBB11:
 2838 10c0 CF93      		push r28
 2839               	/* prologue: function */
 2840               	/* frame size = 0 */
 2841               	/* stack size = 1 */
 2842               	.L__stack_usage = 1
1024:one_wire.c    ****    uint16_t deviceIndex = 0;
1025:one_wire.c    ****    uint16_t positionIndex = 0;
1026:one_wire.c    ****    uint8_t match_flag = TRUE;
1027:one_wire.c    **** 
1028:one_wire.c    ****    /*
1029:one_wire.c    ****     * check the inputs
1030:one_wire.c    ****     */
1031:one_wire.c    **** 
1032:one_wire.c    ****    if ( NULL == id)
 2844               	.LM227:
 2845 10c2 0097      		sbiw r24,0
 2846 10c4 01F0      		breq .L147
 2847 10c6 60E0      		ldi r22,lo8(owi_IDs)
 2848 10c8 70E0      		ldi r23,hi8(owi_IDs)
 2849 10ca 20E0      		ldi r18,0
 2850 10cc 30E0      		ldi r19,0
 2851               	.L141:
 2852 10ce FC01      		movw r30,r24
1023:one_wire.c    ****    uint16_t deviceIndex = 0;
 2854               	.LM228:
 2855 10d0 40E0      		ldi r20,0
 2856 10d2 50E0      		ldi r21,0
 2857               	.L140:
1033:one_wire.c    ****    {
1034:one_wire.c    ****       return -1000;
1035:one_wire.c    ****    }
1036:one_wire.c    **** 
1037:one_wire.c    ****    /* search algorithm:
1038:one_wire.c    ****     *   loop over all devices in the global list of found IDs,
1039:one_wire.c    ****     *    1. first set match_flag to true
1040:one_wire.c    ****     *    2. in a second loop compare each element of the 8 bytes array, representing the IDs with
1041:one_wire.c    ****     *       the elements of the current id.
1042:one_wire.c    ****     *    3a. If one comparison fails, the match_flag is set to FALSE, and the loop is left, so the 
1043:one_wire.c    ****     *    3b. If after the the second loop the match_flag still is TRUE, return the current index
1044:one_wire.c    ****     *    4. After finishing all devices, i.e. no matching id has been found, return -1
1045:one_wire.c    ****     */
1046:one_wire.c    **** 
1047:one_wire.c    ****    /* loop over all available and found device IDs*/
1048:one_wire.c    **** 
1049:one_wire.c    ****    for (deviceIndex = 0; deviceIndex < OWI_MAX_NUM_DEVICES; deviceIndex++)
1050:one_wire.c    ****    {
1051:one_wire.c    ****       /* reset match flag */
1052:one_wire.c    ****       match_flag = TRUE;
1053:one_wire.c    **** 
1054:one_wire.c    ****       /* loop over all 8 bytes of the 64bit ID*/
1055:one_wire.c    ****       for (positionIndex = 0; positionIndex < 8; positionIndex++)
1056:one_wire.c    ****       {
1057:one_wire.c    ****          /* compare each byte
1058:one_wire.c    ****           * if different break this loop*/
1059:one_wire.c    ****          if (owi_IDs[deviceIndex][positionIndex] != id[positionIndex])
 2859               	.LM229:
 2860 10d4 C191      		ld r28,Z+
 2861 10d6 DB01      		movw r26,r22
 2862 10d8 A40F      		add r26,r20
 2863 10da B51F      		adc r27,r21
 2864 10dc AC91      		ld r26,X
 2865 10de AC13      		cpse r26,r28
 2866 10e0 00C0      		rjmp .L137
1055:one_wire.c    ****       {
 2868               	.LM230:
 2869 10e2 4F5F      		subi r20,-1
 2870 10e4 5F4F      		sbci r21,-1
 2871 10e6 4830      		cpi r20,8
 2872 10e8 5105      		cpc r21,__zero_reg__
 2873 10ea 01F4      		brne .L140
1060:one_wire.c    ****          {
1061:one_wire.c    ****             match_flag = FALSE;
1062:one_wire.c    ****             break;
1063:one_wire.c    ****          }
1064:one_wire.c    ****       }
1065:one_wire.c    ****       /* if match_flag is still TRUE return current device index*/
1066:one_wire.c    ****       if (TRUE == match_flag ) {return deviceIndex;}
 2875               	.LM231:
 2876 10ec C901      		movw r24,r18
 2877 10ee 00C0      		rjmp .L146
 2878               	.L147:
1034:one_wire.c    ****    }
 2880               	.LM232:
 2881 10f0 88E1      		ldi r24,lo8(24)
 2882 10f2 9CEF      		ldi r25,lo8(-4)
 2883 10f4 00C0      		rjmp .L146
 2884               	.L137:
1049:one_wire.c    ****    {
 2886               	.LM233:
 2887 10f6 2F5F      		subi r18,-1
 2888 10f8 3F4F      		sbci r19,-1
 2889 10fa 685F      		subi r22,-8
 2890 10fc 7F4F      		sbci r23,-1
 2891 10fe 2431      		cpi r18,20
 2892 1100 3105      		cpc r19,__zero_reg__
 2893 1102 01F4      		brne .L141
1067:one_wire.c    ****    }
1068:one_wire.c    **** 
1069:one_wire.c    ****    return -1;
 2895               	.LM234:
 2896 1104 8FEF      		ldi r24,lo8(-1)
 2897 1106 9FEF      		ldi r25,lo8(-1)
 2898               	.L146:
 2899               	/* epilogue start */
1070:one_wire.c    **** }
 2901               	.LM235:
 2902 1108 CF91      		pop r28
 2903 110a 0895      		ret
 2909               	.Lscope11:
 2910               		.section	.rodata.str1.1
 2911               	.LC3:
 2912 0033 2573 2573 		.string	"%s%s"
 2912      00
 2913               	.LC4:
 2914 0038 2573 2025 		.string	"%s %.4lX"
 2914      2E34 6C58 
 2914      00
 2915               	.LC5:
 2916 0041 2573 2025 		.string	"%s %.2X"
 2916      2E32 5800 
 2917               		.text
 2923               	.global	owiFindFamilyDevicesAndAccessValues
 2925               	owiFindFamilyDevicesAndAccessValues:
 340:one_wire.c    ****    int8_t deviceIndex = 0;
 2927               	.LM236:
 2928               	.LFBB12:
 2929 110c 2F92      		push r2
 2930 110e 3F92      		push r3
 2931 1110 4F92      		push r4
 2932 1112 5F92      		push r5
 2933 1114 6F92      		push r6
 2934 1116 7F92      		push r7
 2935 1118 8F92      		push r8
 2936 111a 9F92      		push r9
 2937 111c AF92      		push r10
 2938 111e BF92      		push r11
 2939 1120 CF92      		push r12
 2940 1122 DF92      		push r13
 2941 1124 EF92      		push r14
 2942 1126 FF92      		push r15
 2943 1128 0F93      		push r16
 2944 112a 1F93      		push r17
 2945 112c CF93      		push r28
 2946 112e DF93      		push r29
 2947 1130 CDB7      		in r28,__SP_L__
 2948 1132 DEB7      		in r29,__SP_H__
 2949 1134 2F97      		sbiw r28,15
 2950 1136 0FB6      		in __tmp_reg__,__SREG__
 2951 1138 F894      		cli
 2952 113a DEBF      		out __SP_H__,r29
 2953 113c 0FBE      		out __SREG__,__tmp_reg__
 2954 113e CDBF      		out __SP_L__,r28
 2955               	/* prologue: function */
 2956               	/* frame size = 15 */
 2957               	/* stack size = 33 */
 2958               	.L__stack_usage = 33
 2959 1140 4987      		std Y+9,r20
 2960 1142 3C87      		std Y+12,r19
 2961 1144 2B87      		std Y+11,r18
 358:one_wire.c    ****    {
 2963               	.LM237:
 2964 1146 892B      		or r24,r25
 2965 1148 01F4      		brne .L149
 360:one_wire.c    ****       return -1;
 2967               	.LM238:
 2968 114a 80E0      		ldi r24,lo8(__c.3151)
 2969 114c 90E0      		ldi r25,hi8(__c.3151)
 2970 114e 00C0      		rjmp .L188
 2971               	.L149:
 364:one_wire.c    ****    {
 2973               	.LM239:
 2974 1150 6111      		cpse r22,__zero_reg__
 2975 1152 00C0      		rjmp .L151
 366:one_wire.c    ****       return 0;
 2977               	.LM240:
 2978 1154 1F92      		push __zero_reg__
 2979 1156 1F92      		push __zero_reg__
 2980 1158 1F92      		push __zero_reg__
 2981 115a 1F92      		push __zero_reg__
 2982 115c 84E0      		ldi r24,lo8(4)
 2983 115e 8F93      		push r24
 2984 1160 1F92      		push __zero_reg__
 2985 1162 E091 0000 		lds r30,CommunicationError_p
 2986 1166 F091 0000 		lds r31,CommunicationError_p+1
 2987 116a 0995      		icall
 2988 116c 90E0      		ldi r25,0
 2989 116e 9093 0000 		sts generalErrorCode+1,r25
 2990 1172 8093 0000 		sts generalErrorCode,r24
 367:one_wire.c    ****    }
 2992               	.LM241:
 2993 1176 0F90      		pop __tmp_reg__
 2994 1178 0F90      		pop __tmp_reg__
 2995 117a 0F90      		pop __tmp_reg__
 2996 117c 0F90      		pop __tmp_reg__
 2997 117e 0F90      		pop __tmp_reg__
 2998 1180 0F90      		pop __tmp_reg__
 2999 1182 00C0      		rjmp .L187
 3000               	.L151:
 370:one_wire.c    ****    {
 3002               	.LM242:
 3003 1184 8091 0000 		lds r24,ptr_owiStruct
 3004 1188 9091 0000 		lds r25,ptr_owiStruct+1
 3005 118c DC01      		movw r26,r24
 3006 118e 1896      		adiw r26,8
 3007 1190 2C91      		ld r18,X
 3008 1192 2223      		tst r18
 3009 1194 01F4      		brne .+2
 3010 1196 00C0      		rjmp .L172
 372:one_wire.c    ****       if ( -1 == selectedDeviceIndex)
 3012               	.LM243:
 3013 1198 6F87      		std Y+15,r22
 3014 119a 0E94 0000 		call owiFindIdAndGetIndex
 3015 119e 782E      		mov r7,r24
 373:one_wire.c    ****       {
 3017               	.LM244:
 3018 11a0 6F85      		ldd r22,Y+15
 3019 11a2 8F3F      		cpi r24,lo8(-1)
 3020 11a4 01F4      		brne .L153
 375:one_wire.c    ****          return 0;
 3022               	.LM245:
 3023 11a6 80E0      		ldi r24,lo8(__c.3153)
 3024 11a8 90E0      		ldi r25,hi8(__c.3153)
 3025 11aa 9F93      		push r25
 3026 11ac 8F93      		push r24
 3027 11ae 80E0      		ldi r24,lo8(filename)
 3028 11b0 90E0      		ldi r25,hi8(filename)
 3029 11b2 9F93      		push r25
 3030 11b4 8F93      		push r24
 3031 11b6 81E0      		ldi r24,lo8(1)
 3032 11b8 8F93      		push r24
 3033 11ba 87E7      		ldi r24,lo8(119)
 3034 11bc 8F93      		push r24
 3035 11be 1F92      		push __zero_reg__
 3036 11c0 1F92      		push __zero_reg__
 3037 11c2 1F92      		push __zero_reg__
 3038 11c4 88E0      		ldi r24,lo8(8)
 3039 11c6 8F93      		push r24
 3040 11c8 82E0      		ldi r24,lo8(2)
 3041 11ca 8F93      		push r24
 3042 11cc E091 0000 		lds r30,printDebug_p
 3043 11d0 F091 0000 		lds r31,printDebug_p+1
 3044 11d4 0995      		icall
 376:one_wire.c    ****       }
 3046               	.LM246:
 3047 11d6 0FB6      		in __tmp_reg__,__SREG__
 3048 11d8 F894      		cli
 3049 11da DEBF      		out __SP_H__,r29
 3050 11dc 0FBE      		out __SREG__,__tmp_reg__
 3051 11de CDBF      		out __SP_L__,r28
 3052               	.L187:
 3053 11e0 80E0      		ldi r24,0
 3054 11e2 00C0      		rjmp .L150
 3055               	.L153:
 378:one_wire.c    ****       {
 3057               	.LM247:
 3058 11e4 8F3F      		cpi r24,lo8(-1)
 3059 11e6 04F4      		brge .L152
 380:one_wire.c    ****          return -1;
 3061               	.LM248:
 3062 11e8 80E0      		ldi r24,lo8(__c.3155)
 3063 11ea 90E0      		ldi r25,hi8(__c.3155)
 3064 11ec 9F93      		push r25
 3065 11ee 8F93      		push r24
 3066 11f0 81E0      		ldi r24,lo8(1)
 3067 11f2 8F93      		push r24
 3068               	.L186:
 3069 11f4 8FEF      		ldi r24,lo8(-1)
 3070 11f6 8F93      		push r24
 3071 11f8 8CE9      		ldi r24,lo8(-100)
 3072 11fa 8F93      		push r24
 3073 11fc 1F92      		push __zero_reg__
 3074 11fe E091 0000 		lds r30,CommunicationError_p
 3075 1202 F091 0000 		lds r31,CommunicationError_p+1
 3076 1206 0995      		icall
 381:one_wire.c    ****       }
 3078               	.LM249:
 3079 1208 0F90      		pop __tmp_reg__
 3080 120a 0F90      		pop __tmp_reg__
 3081 120c 0F90      		pop __tmp_reg__
 3082 120e 0F90      		pop __tmp_reg__
 3083 1210 0F90      		pop __tmp_reg__
 3084 1212 0F90      		pop __tmp_reg__
 3085 1214 8FEF      		ldi r24,lo8(-1)
 3086 1216 00C0      		rjmp .L150
 3087               	.L172:
 355:one_wire.c    **** 
 3089               	.LM250:
 3090 1218 7724      		clr r7
 3091 121a 7A94      		dec r7
 3092               	.L152:
 385:one_wire.c    ****    {
 3094               	.LM251:
 3095 121c 262F      		mov r18,r22
 3096 121e 30E0      		ldi r19,0
 3097 1220 3E87      		std Y+14,r19
 3098 1222 2D87      		std Y+13,r18
 3099 1224 872D      		mov r24,r7
 3100 1226 9927      		clr r25
 3101 1228 87FD      		sbrc r24,7
 3102 122a 9095      		com r25
 3103 122c 8217      		cp r24,r18
 3104 122e 9307      		cpc r25,r19
 3105 1230 04F4      		brge .L154
 353:one_wire.c    ****    uint8_t write_flag = FALSE;
 3107               	.LM252:
 3108 1232 1A86      		std Y+10,__zero_reg__
 343:one_wire.c    ****    uint32_t readValueTemp = 0;/*variable to read temperature of sensor*/
 3110               	.LM253:
 3111 1234 C12C      		mov r12,__zero_reg__
 3112 1236 D12C      		mov r13,__zero_reg__
 3113 1238 7601      		movw r14,r12
 401:one_wire.c    ****    {
 3115               	.LM254:
 3116 123a 612C      		mov r6,__zero_reg__
 501:one_wire.c    **** 
 3118               	.LM255:
 3119 123c 40E0      		ldi r20,lo8(filename)
 3120 123e 242E      		mov r2,r20
 3121 1240 40E0      		ldi r20,hi8(filename)
 3122 1242 342E      		mov r3,r20
 516:one_wire.c    ****             break;
 3124               	.LM256:
 3125 1244 50E0      		ldi r21,lo8(.LC5)
 3126 1246 452E      		mov r4,r21
 3127 1248 50E0      		ldi r21,hi8(.LC5)
 3128 124a 552E      		mov r5,r21
 3129 124c 00C0      		rjmp .L155
 3130               	.L154:
 387:one_wire.c    ****       return -1;
 3132               	.LM257:
 3133 124e 80E0      		ldi r24,lo8(__c.3157)
 3134 1250 90E0      		ldi r25,hi8(__c.3157)
 3135               	.L188:
 3136 1252 9F93      		push r25
 3137 1254 8F93      		push r24
 3138 1256 1F92      		push __zero_reg__
 3139 1258 00C0      		rjmp .L186
 3140               	.L171:
 404:one_wire.c    **** 
 3142               	.LM258:
 3143 125a 3FEF      		ldi r19,lo8(-1)
 3144 125c 7316      		cp r7,r19
 3145 125e 01F0      		breq .L156
 404:one_wire.c    **** 
 3147               	.LM259:
 3148 1260 6714      		cp r6,r7
 3149 1262 01F0      		breq .L156
 3150               	.L157:
 3151 1264 6394      		inc r6
 3152               	.L155:
 401:one_wire.c    ****    {
 3154               	.LM260:
 3155 1266 062D      		mov r16,r6
 3156 1268 1127      		clr r17
 3157 126a 07FD      		sbrc r16,7
 3158 126c 1095      		com r17
 3159 126e 8D85      		ldd r24,Y+13
 3160 1270 9E85      		ldd r25,Y+14
 3161 1272 0817      		cp r16,r24
 3162 1274 1907      		cpc r17,r25
 3163 1276 04F0      		brlt .L171
 3164 1278 00C0      		rjmp .L193
 3165               	.L156:
 407:one_wire.c    **** 
 3167               	.LM261:
 3168 127a 5801      		movw r10,r16
 3169 127c 33E0      		ldi r19,3
 3170               		1:
 3171 127e AA0C      		lsl r10
 3172 1280 BB1C      		rol r11
 3173 1282 3A95      		dec r19
 3174 1284 01F4      		brne 1b
 3175 1286 C501      		movw r24,r10
 3176 1288 8050      		subi r24,lo8(-(owi_IDs))
 3177 128a 9040      		sbci r25,hi8(-(owi_IDs))
 3178 128c 5C01      		movw r10,r24
 3179 128e DC01      		movw r26,r24
 3180 1290 8C91      		ld r24,X
 3181 1292 B985      		ldd r27,Y+9
 3182 1294 B813      		cpse r27,r24
 3183 1296 00C0      		rjmp .L157
 410:one_wire.c    ****       {
 3185               	.LM262:
 3186 1298 8091 0000 		lds r24,owiBusMask
 3187 129c 9091 0000 		lds r25,owiBusMask+1
 3188 12a0 0050      		subi r16,lo8(-(owi_IDs_pinMask))
 3189 12a2 1040      		sbci r17,hi8(-(owi_IDs_pinMask))
 3190 12a4 F801      		movw r30,r16
 3191 12a6 4081      		ld r20,Z
 3192 12a8 242F      		mov r18,r20
 3193 12aa 30E0      		ldi r19,0
 3194 12ac 2823      		and r18,r24
 3195 12ae 3923      		and r19,r25
 3196 12b0 232B      		or r18,r19
 3197 12b2 01F4      		brne .L158
 412:one_wire.c    ****           continue;
 3199               	.LM263:
 3200 12b4 9F93      		push r25
 3201 12b6 8F93      		push r24
 3202 12b8 1F92      		push __zero_reg__
 3203 12ba 4F93      		push r20
 3204 12bc A0E0      		ldi r26,lo8(__c.3160)
 3205 12be B0E0      		ldi r27,hi8(__c.3160)
 3206 12c0 BF93      		push r27
 3207 12c2 AF93      		push r26
 3208 12c4 3F92      		push r3
 3209 12c6 2F92      		push r2
 3210 12c8 F1E0      		ldi r31,lo8(1)
 3211 12ca FF93      		push r31
 3212 12cc 8CE9      		ldi r24,lo8(-100)
 3213 12ce 8F93      		push r24
 3214 12d0 1F92      		push __zero_reg__
 3215 12d2 1F92      		push __zero_reg__
 3216 12d4 1F92      		push __zero_reg__
 3217 12d6 88E0      		ldi r24,lo8(8)
 3218 12d8 8F93      		push r24
 3219 12da 82E0      		ldi r24,lo8(2)
 3220 12dc 8F93      		push r24
 3221 12de E091 0000 		lds r30,printDebug_p
 3222 12e2 F091 0000 		lds r31,printDebug_p+1
 3223 12e6 0995      		icall
 413:one_wire.c    ****       }
 3225               	.LM264:
 3226 12e8 0FB6      		in __tmp_reg__,__SREG__
 3227 12ea F894      		cli
 3228 12ec DEBF      		out __SP_H__,r29
 3229 12ee 0FBE      		out __SREG__,__tmp_reg__
 3230 12f0 CDBF      		out __SP_L__,r28
 3231 12f2 00C0      		rjmp .L157
 3232               	.L158:
 417:one_wire.c    ****       clearString(resultString, BUFFER_SIZE);
 3234               	.LM265:
 3235 12f4 6CE8      		ldi r22,lo8(-116)
 3236 12f6 70E0      		ldi r23,0
 3237 12f8 80E0      		ldi r24,lo8(message)
 3238 12fa 90E0      		ldi r25,hi8(message)
 3239 12fc 0E94 0000 		call clearString
 418:one_wire.c    **** 
 3241               	.LM266:
 3242 1300 6CE8      		ldi r22,lo8(-116)
 3243 1302 70E0      		ldi r23,0
 3244 1304 80E0      		ldi r24,lo8(resultString)
 3245 1306 90E0      		ldi r25,hi8(resultString)
 3246 1308 0E94 0000 		call clearString
 421:one_wire.c    **** 
 3248               	.LM267:
 3249 130c B501      		movw r22,r10
 3250 130e 80E0      		ldi r24,lo8(owi_id_string)
 3251 1310 90E0      		ldi r25,hi8(owi_id_string)
 3252 1312 0E94 0000 		call owiCreateIdString
 3253 1316 E091 0000 		lds r30,printDebug_p
 3254 131a F091 0000 		lds r31,printDebug_p+1
 426:one_wire.c    ****       {
 3256               	.LM268:
 3257 131e 8B85      		ldd r24,Y+11
 3258 1320 9C85      		ldd r25,Y+12
 3259 1322 892B      		or r24,r25
 3260 1324 01F0      		breq .+2
 3261 1326 00C0      		rjmp .L159
 428:one_wire.c    ****          switch ( familyCode )
 3263               	.LM269:
 3264 1328 A0E0      		ldi r26,lo8(__c.3162)
 3265 132a B0E0      		ldi r27,hi8(__c.3162)
 3266 132c BF93      		push r27
 3267 132e AF93      		push r26
 3268 1330 3F92      		push r3
 3269 1332 2F92      		push r2
 3270 1334 31E0      		ldi r19,lo8(1)
 3271 1336 3F93      		push r19
 3272 1338 8CEA      		ldi r24,lo8(-84)
 3273 133a 8F93      		push r24
 3274 133c 1F92      		push __zero_reg__
 3275 133e 1F92      		push __zero_reg__
 3276 1340 1F92      		push __zero_reg__
 3277 1342 88E0      		ldi r24,lo8(8)
 3278 1344 8F93      		push r24
 3279 1346 22E0      		ldi r18,lo8(2)
 3280 1348 922E      		mov r9,r18
 3281 134a 9F92      		push r9
 3282 134c 0995      		icall
 429:one_wire.c    ****          {
 3284               	.LM270:
 3285 134e 0FB6      		in __tmp_reg__,__SREG__
 3286 1350 F894      		cli
 3287 1352 DEBF      		out __SP_H__,r29
 3288 1354 0FBE      		out __SREG__,__tmp_reg__
 3289 1356 CDBF      		out __SP_L__,r28
 3290 1358 9985      		ldd r25,Y+9
 3291 135a 9032      		cpi r25,lo8(32)
 3292 135c 01F0      		breq .L161
 3293 135e 00F4      		brsh .L162
 3294 1360 9530      		cpi r25,lo8(5)
 3295 1362 01F4      		brne .+2
 3296 1364 00C0      		rjmp .L163
 3297 1366 9031      		cpi r25,lo8(16)
 3298 1368 01F4      		brne .+2
 3299 136a 00C0      		rjmp .L164
 3300 136c 00C0      		rjmp .L182
 3301               	.L162:
 3302 136e A985      		ldd r26,Y+9
 3303 1370 A932      		cpi r26,lo8(41)
 3304 1372 01F4      		brne .+2
 3305 1374 00C0      		rjmp .L165
 3306 1376 AA33      		cpi r26,lo8(58)
 3307 1378 01F4      		brne .+2
 3308 137a 00C0      		rjmp .L166
 3309 137c A832      		cpi r26,lo8(40)
 3310 137e 01F0      		breq .+2
 3311 1380 00C0      		rjmp .L182
 3312 1382 00C0      		rjmp .L164
 3313               	.L161:
 432:one_wire.c    **** 
 3315               	.LM271:
 3316 1384 F801      		movw r30,r16
 3317 1386 8081      		ld r24,Z
 3318 1388 1F92      		push __zero_reg__
 3319 138a 8F93      		push r24
 3320 138c A0E0      		ldi r26,lo8(__c.3165)
 3321 138e B0E0      		ldi r27,hi8(__c.3165)
 3322 1390 BF93      		push r27
 3323 1392 AF93      		push r26
 3324 1394 3F92      		push r3
 3325 1396 2F92      		push r2
 3326 1398 F1E0      		ldi r31,lo8(1)
 3327 139a FF93      		push r31
 3328 139c 80EB      		ldi r24,lo8(-80)
 3329 139e 8F93      		push r24
 3330 13a0 1F92      		push __zero_reg__
 3331 13a2 1F92      		push __zero_reg__
 3332 13a4 1F92      		push __zero_reg__
 3333 13a6 8CE0      		ldi r24,lo8(12)
 3334 13a8 882E      		mov r8,r24
 3335 13aa 8F92      		push r8
 3336 13ac 9F92      		push r9
 3337 13ae E091 0000 		lds r30,printDebug_p
 3338 13b2 F091 0000 		lds r31,printDebug_p+1
 3339 13b6 0995      		icall
 434:one_wire.c    **** 
 3341               	.LM272:
 3342 13b8 24E0      		ldi r18,lo8(4)
 3343 13ba AE01      		movw r20,r28
 3344 13bc 4F5F      		subi r20,-1
 3345 13be 5F4F      		sbci r21,-1
 3346 13c0 B501      		movw r22,r10
 3347 13c2 D801      		movw r26,r16
 3348 13c4 8C91      		ld r24,X
 3349 13c6 0E94 0000 		call owiReadChannelsOfSingleADCs
 3350 13ca 6B01      		movw r12,r22
 3351 13cc 7C01      		movw r14,r24
 436:one_wire.c    **** 
 3353               	.LM273:
 3354 13ce FF92      		push r15
 3355 13d0 EF92      		push r14
 3356 13d2 DF92      		push r13
 3357 13d4 6F93      		push r22
 3358 13d6 F801      		movw r30,r16
 3359 13d8 8081      		ld r24,Z
 3360 13da 1F92      		push __zero_reg__
 3361 13dc 8F93      		push r24
 3362 13de A0E0      		ldi r26,lo8(__c.3167)
 3363 13e0 B0E0      		ldi r27,hi8(__c.3167)
 3364 13e2 BF93      		push r27
 3365 13e4 AF93      		push r26
 3366 13e6 3F92      		push r3
 3367 13e8 2F92      		push r2
 3368 13ea F1E0      		ldi r31,lo8(1)
 3369 13ec FF93      		push r31
 3370 13ee 84EB      		ldi r24,lo8(-76)
 3371 13f0 8F93      		push r24
 3372 13f2 1F92      		push __zero_reg__
 3373 13f4 1F92      		push __zero_reg__
 3374 13f6 1F92      		push __zero_reg__
 3375 13f8 8F92      		push r8
 3376 13fa 9F92      		push r9
 3377 13fc E091 0000 		lds r30,printDebug_p
 3378 1400 F091 0000 		lds r31,printDebug_p+1
 3379 1404 0995      		icall
 439:one_wire.c    **** 
 3381               	.LM274:
 3382 1406 B701      		movw r22,r14
 3383 1408 8827      		clr r24
 3384 140a 9927      		clr r25
 3385 140c 0E94 0000 		call owiCheckReadWriteReturnStatus
 3386 1410 0FB6      		in __tmp_reg__,__SREG__
 3387 1412 F894      		cli
 3388 1414 DEBF      		out __SP_H__,r29
 3389 1416 0FBE      		out __SREG__,__tmp_reg__
 3390 1418 CDBF      		out __SP_L__,r28
 3391 141a 8111      		cpse r24,__zero_reg__
 3392 141c 00C0      		rjmp .L157
 441:one_wire.c    ****                snprintf(message, BUFFER_SIZE - 1, "%s%s", owi_id_string, resultString);
 3394               	.LM275:
 3395 141e 6CE8      		ldi r22,lo8(-116)
 3396 1420 70E0      		ldi r23,0
 3397 1422 80E0      		ldi r24,lo8(message)
 3398 1424 90E0      		ldi r25,hi8(message)
 3399 1426 0E94 0000 		call clearString
 442:one_wire.c    **** //               snprintf(message, BUFFER_SIZE - 1, "%s %.4X %.4X %.4X %.4X",
 3401               	.LM276:
 3402 142a 80E0      		ldi r24,lo8(resultString)
 3403 142c 90E0      		ldi r25,hi8(resultString)
 3404 142e 9F93      		push r25
 3405 1430 8F93      		push r24
 3406 1432 80E0      		ldi r24,lo8(owi_id_string)
 3407 1434 90E0      		ldi r25,hi8(owi_id_string)
 3408 1436 9F93      		push r25
 3409 1438 8F93      		push r24
 3410 143a A0E0      		ldi r26,lo8(.LC3)
 3411 143c B0E0      		ldi r27,hi8(.LC3)
 3412 143e BF93      		push r27
 3413 1440 AF93      		push r26
 3414 1442 00C0      		rjmp .L190
 3415               	.L164:
 448:one_wire.c    **** 
 3417               	.LM277:
 3418 1444 FF92      		push r15
 3419 1446 EF92      		push r14
 3420 1448 DF92      		push r13
 3421 144a CF92      		push r12
 3422 144c D801      		movw r26,r16
 3423 144e 8C91      		ld r24,X
 3424 1450 1F92      		push __zero_reg__
 3425 1452 8F93      		push r24
 3426 1454 A0E0      		ldi r26,lo8(__c.3172)
 3427 1456 B0E0      		ldi r27,hi8(__c.3172)
 3428 1458 BF93      		push r27
 3429 145a AF93      		push r26
 3430 145c 3F92      		push r3
 3431 145e 2F92      		push r2
 3432 1460 F1E0      		ldi r31,lo8(1)
 3433 1462 FF93      		push r31
 3434 1464 80EC      		ldi r24,lo8(-64)
 3435 1466 8F93      		push r24
 3436 1468 1F92      		push __zero_reg__
 3437 146a 1F92      		push __zero_reg__
 3438 146c 1F92      		push __zero_reg__
 3439 146e 89E0      		ldi r24,lo8(9)
 3440 1470 8F93      		push r24
 3441 1472 82E0      		ldi r24,lo8(2)
 3442 1474 8F93      		push r24
 3443 1476 E091 0000 		lds r30,printDebug_p
 3444 147a F091 0000 		lds r31,printDebug_p+1
 3445 147e 0995      		icall
 450:one_wire.c    **** 
 3447               	.LM278:
 3448 1480 B501      		movw r22,r10
 3449 1482 D801      		movw r26,r16
 3450 1484 8C91      		ld r24,X
 3451 1486 0E94 0000 		call owiTemperatureReadSingleSensor
 3452 148a 4B01      		movw r8,r22
 3453 148c 5C01      		movw r10,r24
 453:one_wire.c    **** 
 3455               	.LM279:
 3456 148e BC01      		movw r22,r24
 3457 1490 8827      		clr r24
 3458 1492 9927      		clr r25
 3459 1494 0E94 0000 		call owiCheckReadWriteReturnStatus
 3460 1498 0FB6      		in __tmp_reg__,__SREG__
 3461 149a F894      		cli
 3462 149c DEBF      		out __SP_H__,r29
 3463 149e 0FBE      		out __SREG__,__tmp_reg__
 3464 14a0 CDBF      		out __SP_L__,r28
 3465 14a2 8111      		cpse r24,__zero_reg__
 3466 14a4 00C0      		rjmp .L157
 458:one_wire.c    ****                snprintf(message, BUFFER_SIZE - 1, "%s %.4lX", owi_id_string,readValueTemp);
 3468               	.LM280:
 3469 14a6 6CE8      		ldi r22,lo8(-116)
 3470 14a8 70E0      		ldi r23,0
 3471 14aa 80E0      		ldi r24,lo8(message)
 3472 14ac 90E0      		ldi r25,hi8(message)
 3473 14ae 0E94 0000 		call clearString
 456:one_wire.c    **** 
 3475               	.LM281:
 3476 14b2 D501      		movw r26,r10
 3477 14b4 C401      		movw r24,r8
 3478 14b6 AA27      		clr r26
 3479 14b8 BB27      		clr r27
 459:one_wire.c    ****                break;
 3481               	.LM282:
 3482 14ba BF93      		push r27
 3483 14bc AF93      		push r26
 3484 14be 9F93      		push r25
 3485 14c0 8F93      		push r24
 3486 14c2 80E0      		ldi r24,lo8(owi_id_string)
 3487 14c4 90E0      		ldi r25,hi8(owi_id_string)
 3488 14c6 9F93      		push r25
 3489 14c8 8F93      		push r24
 3490 14ca A0E0      		ldi r26,lo8(.LC4)
 3491 14cc B0E0      		ldi r27,hi8(.LC4)
 3492 14ce BF93      		push r27
 3493 14d0 AF93      		push r26
 3494 14d2 1F92      		push __zero_reg__
 3495 14d4 8BE8      		ldi r24,lo8(-117)
 3496 14d6 8F93      		push r24
 3497 14d8 80E0      		ldi r24,lo8(message)
 3498 14da 90E0      		ldi r25,hi8(message)
 3499 14dc 9F93      		push r25
 3500 14de 8F93      		push r24
 3501 14e0 0E94 0000 		call snprintf
 3502 14e4 00C0      		rjmp .L183
 3503               	.L165:
 462:one_wire.c    ****             	if ( 0 != owiCheckReadWriteReturnStatus( readValueOS >> 8)) { continue; }
 3505               	.LM283:
 3506 14e6 B501      		movw r22,r10
 3507 14e8 D801      		movw r26,r16
 3508 14ea 8C91      		ld r24,X
 3509 14ec 0E94 0000 		call ReadOctalSwitches
 3510 14f0 00C0      		rjmp .L192
 3511               	.L166:
 472:one_wire.c    ****                /* read return status checking */
 3513               	.LM284:
 3514 14f2 B501      		movw r22,r10
 3515 14f4 D801      		movw r26,r16
 3516 14f6 8C91      		ld r24,X
 3517 14f8 0E94 0000 		call ReadDualSwitches
 3518 14fc 00C0      		rjmp .L192
 3519               	.L163:
 483:one_wire.c    ****                /* read return status checking */
 3521               	.LM285:
 3522 14fe B501      		movw r22,r10
 3523 1500 D801      		movw r26,r16
 3524 1502 8C91      		ld r24,X
 3525 1504 0E94 0000 		call ReadSimpleSwitches
 3526 1508 00C0      		rjmp .L192
 3527               	.L159:
 501:one_wire.c    **** 
 3529               	.LM286:
 3530 150a A0E0      		ldi r26,lo8(__c.3178)
 3531 150c B0E0      		ldi r27,hi8(__c.3178)
 3532 150e BF93      		push r27
 3533 1510 AF93      		push r26
 3534 1512 3F92      		push r3
 3535 1514 2F92      		push r2
 3536 1516 31E0      		ldi r19,lo8(1)
 3537 1518 3F93      		push r19
 3538 151a 85EF      		ldi r24,lo8(-11)
 3539 151c 8F93      		push r24
 3540 151e 1F92      		push __zero_reg__
 3541 1520 1F92      		push __zero_reg__
 3542 1522 1F92      		push __zero_reg__
 3543 1524 88E0      		ldi r24,lo8(8)
 3544 1526 8F93      		push r24
 3545 1528 82E0      		ldi r24,lo8(2)
 3546 152a 8F93      		push r24
 3547 152c 0995      		icall
 503:one_wire.c    ****          {
 3549               	.LM287:
 3550 152e 0FB6      		in __tmp_reg__,__SREG__
 3551 1530 F894      		cli
 3552 1532 DEBF      		out __SP_H__,r29
 3553 1534 0FBE      		out __SREG__,__tmp_reg__
 3554 1536 CDBF      		out __SP_L__,r28
 3555 1538 B985      		ldd r27,Y+9
 3556 153a B932      		cpi r27,lo8(41)
 3557 153c 01F0      		breq .+2
 3558 153e 00C0      		rjmp .L194
 507:one_wire.c    **** 
 3560               	.LM288:
 3561 1540 EB85      		ldd r30,Y+11
 3562 1542 FC85      		ldd r31,Y+12
 3563 1544 4081      		ld r20,Z
 3564 1546 B501      		movw r22,r10
 3565 1548 D801      		movw r26,r16
 3566 154a 8C91      		ld r24,X
 3567 154c 0E94 0000 		call WriteOctalSwitches
 3568               	.L192:
 521:one_wire.c    **** 
 3570               	.LM289:
 3571 1550 8C01      		movw r16,r24
 524:one_wire.c    **** 
 3573               	.LM290:
 3574 1552 692F      		mov r22,r25
 3575 1554 7727      		clr r23
 3576 1556 80E0      		ldi r24,0
 3577 1558 90E0      		ldi r25,0
 3578 155a 0E94 0000 		call owiCheckReadWriteReturnStatus
 3579 155e 8111      		cpse r24,__zero_reg__
 3580 1560 00C0      		rjmp .L157
 490:one_wire.c    ****                snprintf(message, BUFFER_SIZE - 1, "%s %.2X", owi_id_string, readValueSS);
 3582               	.LM291:
 3583 1562 6CE8      		ldi r22,lo8(-116)
 3584 1564 70E0      		ldi r23,0
 3585 1566 80E0      		ldi r24,lo8(message)
 3586 1568 90E0      		ldi r25,hi8(message)
 3587 156a 0E94 0000 		call clearString
 488:one_wire.c    **** 
 3589               	.LM292:
 3590 156e 1127      		clr r17
 491:one_wire.c    ****                break;
 3592               	.LM293:
 3593 1570 1F93      		push r17
 3594 1572 0F93      		push r16
 3595 1574 80E0      		ldi r24,lo8(owi_id_string)
 3596 1576 90E0      		ldi r25,hi8(owi_id_string)
 3597 1578 9F93      		push r25
 3598 157a 8F93      		push r24
 3599 157c 5F92      		push r5
 3600 157e 4F92      		push r4
 3601               	.L190:
 3602 1580 1F92      		push __zero_reg__
 3603 1582 8BE8      		ldi r24,lo8(-117)
 3604 1584 8F93      		push r24
 3605 1586 80E0      		ldi r24,lo8(message)
 3606 1588 90E0      		ldi r25,hi8(message)
 3607 158a 9F93      		push r25
 3608 158c 8F93      		push r24
 3609 158e 0E94 0000 		call snprintf
 3610               	.L183:
 492:one_wire.c    ****             default:
 3612               	.LM294:
 3613 1592 0FB6      		in __tmp_reg__,__SREG__
 3614 1594 F894      		cli
 3615 1596 DEBF      		out __SP_H__,r29
 3616 1598 0FBE      		out __SREG__,__tmp_reg__
 3617 159a CDBF      		out __SP_L__,r28
 551:one_wire.c    ****       createReceiveHeader(ptr_uartStruct, uart_message_string, BUFFER_SIZE);
 3619               	.LM295:
 3620 159c 6CE8      		ldi r22,lo8(-116)
 3621 159e 70E0      		ldi r23,0
 3622 15a0 80E0      		ldi r24,lo8(uart_message_string)
 3623 15a2 90E0      		ldi r25,hi8(uart_message_string)
 3624 15a4 0E94 0000 		call clearString
 552:one_wire.c    **** 
 3626               	.LM296:
 3627 15a8 4CE8      		ldi r20,lo8(-116)
 3628 15aa 50E0      		ldi r21,0
 3629 15ac 60E0      		ldi r22,lo8(uart_message_string)
 3630 15ae 70E0      		ldi r23,hi8(uart_message_string)
 3631 15b0 8091 0000 		lds r24,ptr_uartStruct
 3632 15b4 9091 0000 		lds r25,ptr_uartStruct+1
 3633 15b8 0E94 0000 		call createReceiveHeader
 555:one_wire.c    **** 
 3635               	.LM297:
 3636 15bc 4BE8      		ldi r20,lo8(-117)
 3637 15be 50E0      		ldi r21,0
 3638 15c0 60E0      		ldi r22,lo8(message)
 3639 15c2 70E0      		ldi r23,hi8(message)
 3640 15c4 80E0      		ldi r24,lo8(uart_message_string)
 3641 15c6 90E0      		ldi r25,hi8(uart_message_string)
 3642 15c8 0E94 0000 		call strncat
 566:one_wire.c    **** #else
 3644               	.LM298:
 3645 15cc E091 0000 		lds r30,UART0_Send_Message_String_p
 3646 15d0 F091 0000 		lds r31,UART0_Send_Message_String_p+1
 3647 15d4 6BE8      		ldi r22,lo8(-117)
 3648 15d6 70E0      		ldi r23,0
 3649 15d8 80E0      		ldi r24,lo8(uart_message_string)
 3650 15da 90E0      		ldi r25,hi8(uart_message_string)
 3651 15dc 0995      		icall
 572:one_wire.c    ****       clearString(message, BUFFER_SIZE);
 3653               	.LM299:
 3654 15de 6CE8      		ldi r22,lo8(-116)
 3655 15e0 70E0      		ldi r23,0
 3656 15e2 80E0      		ldi r24,lo8(uart_message_string)
 3657 15e4 90E0      		ldi r25,hi8(uart_message_string)
 3658 15e6 0E94 0000 		call clearString
 573:one_wire.c    **** 
 3660               	.LM300:
 3661 15ea 6CE8      		ldi r22,lo8(-116)
 3662 15ec 70E0      		ldi r23,0
 3663 15ee 80E0      		ldi r24,lo8(message)
 3664 15f0 90E0      		ldi r25,hi8(message)
 3665 15f2 0E94 0000 		call clearString
 575:one_wire.c    ****    }//for (deviceIndex=0;deviceIndex<countDev;deviceIndex++)
 3667               	.LM301:
 3668 15f6 3A85      		ldd r19,Y+10
 3669 15f8 3F5F      		subi r19,lo8(-(1))
 3670 15fa 3A87      		std Y+10,r19
 3671 15fc 00C0      		rjmp .L157
 3672               	.L194:
 503:one_wire.c    ****          {
 3674               	.LM302:
 3675 15fe BA33      		cpi r27,lo8(58)
 3676 1600 01F4      		brne .L182
 521:one_wire.c    **** 
 3678               	.LM303:
 3679 1602 AB85      		ldd r26,Y+11
 3680 1604 BC85      		ldd r27,Y+12
 3681 1606 4C91      		ld r20,X
 3682 1608 B501      		movw r22,r10
 3683 160a F801      		movw r30,r16
 3684 160c 8081      		ld r24,Z
 3685 160e 0E94 0000 		call WriteDualSwitches
 3686 1612 00C0      		rjmp .L192
 3687               	.L182:
 544:one_wire.c    ****                continue;
 3689               	.LM304:
 3690 1614 1F92      		push __zero_reg__
 3691 1616 1F92      		push __zero_reg__
 3692 1618 1F92      		push __zero_reg__
 3693 161a 1F92      		push __zero_reg__
 3694 161c 89E0      		ldi r24,lo8(9)
 3695 161e 8F93      		push r24
 3696 1620 1F92      		push __zero_reg__
 3697 1622 E091 0000 		lds r30,CommunicationError_p
 3698 1626 F091 0000 		lds r31,CommunicationError_p+1
 3699 162a 0995      		icall
 3700 162c 90E0      		ldi r25,0
 3701 162e 9093 0000 		sts generalErrorCode+1,r25
 3702 1632 8093 0000 		sts generalErrorCode,r24
 545:one_wire.c    ****                break;
 3704               	.LM305:
 3705 1636 0F90      		pop __tmp_reg__
 3706 1638 0F90      		pop __tmp_reg__
 3707 163a 0F90      		pop __tmp_reg__
 3708 163c 0F90      		pop __tmp_reg__
 3709 163e 0F90      		pop __tmp_reg__
 3710 1640 0F90      		pop __tmp_reg__
 3711 1642 00C0      		rjmp .L157
 3712               	.L193:
 585:one_wire.c    **** }//END of owiFindFamilyDevicesAndAccessValues
 3714               	.LM306:
 3715 1644 8A85      		ldd r24,Y+10
 3716               	.L150:
 3717               	/* epilogue start */
 586:one_wire.c    **** 
 3719               	.LM307:
 3720 1646 2F96      		adiw r28,15
 3721 1648 0FB6      		in __tmp_reg__,__SREG__
 3722 164a F894      		cli
 3723 164c DEBF      		out __SP_H__,r29
 3724 164e 0FBE      		out __SREG__,__tmp_reg__
 3725 1650 CDBF      		out __SP_L__,r28
 3726 1652 DF91      		pop r29
 3727 1654 CF91      		pop r28
 3728 1656 1F91      		pop r17
 3729 1658 0F91      		pop r16
 3730 165a FF90      		pop r15
 3731 165c EF90      		pop r14
 3732 165e DF90      		pop r13
 3733 1660 CF90      		pop r12
 3734 1662 BF90      		pop r11
 3735 1664 AF90      		pop r10
 3736 1666 9F90      		pop r9
 3737 1668 8F90      		pop r8
 3738 166a 7F90      		pop r7
 3739 166c 6F90      		pop r6
 3740 166e 5F90      		pop r5
 3741 1670 4F90      		pop r4
 3742 1672 3F90      		pop r3
 3743 1674 2F90      		pop r2
 3744 1676 0895      		ret
 3753               	.Lscope12:
 3760               	.global	checkBusAndDeviceActivityMasks
 3762               	checkBusAndDeviceActivityMasks:
1071:one_wire.c    **** 
1072:one_wire.c    **** /*
1073:one_wire.c    ****  * checkBusAndDeviceActivityMasks(uint8_t pins, int8_t busPatternIndex, uint16_t owiBusMask, uint16
1074:one_wire.c    ****  *
1075:one_wire.c    ****  * checks pins against owiBusMask and owiDeviceMask (logical AND)
1076:one_wire.c    ****  * being verbose if verbose set to TRUE, quiet else
1077:one_wire.c    ****  *
1078:one_wire.c    ****  * returns 0
1079:one_wire.c    ****  *      if both masks have common pins
1080:one_wire.c    ****  * returns != 0
1081:one_wire.c    ****  *      if there is no common pin (either bus or device mask)
1082:one_wire.c    ****  */
1083:one_wire.c    **** 
1084:one_wire.c    **** uint8_t checkBusAndDeviceActivityMasks(uint8_t pins, int8_t busPatternIndex, uint16_t owiBusMask, u
1085:one_wire.c    **** {
 3764               	.LM308:
 3765               	.LFBB13:
 3766 1678 AF92      		push r10
 3767 167a BF92      		push r11
 3768 167c DF92      		push r13
 3769 167e EF92      		push r14
 3770 1680 FF92      		push r15
 3771 1682 0F93      		push r16
 3772 1684 1F93      		push r17
 3773 1686 CF93      		push r28
 3774 1688 DF93      		push r29
 3775 168a 1F92      		push __zero_reg__
 3776 168c CDB7      		in r28,__SP_L__
 3777 168e DEB7      		in r29,__SP_H__
 3778               	/* prologue: function */
 3779               	/* frame size = 1 */
 3780               	/* stack size = 10 */
 3781               	.L__stack_usage = 10
 3782 1690 D62E      		mov r13,r22
 3783 1692 5901      		movw r10,r18
1086:one_wire.c    ****    // continue if bus isn't active
1087:one_wire.c    ****    if ( 0 == ((owiBusMask & pins) & 0xFF) )
 3785               	.LM309:
 3786 1694 E82E      		mov r14,r24
 3787 1696 F12C      		mov r15,__zero_reg__
 3788 1698 9701      		movw r18,r14
 3789 169a 2423      		and r18,r20
 3790 169c 3523      		and r19,r21
 3791 169e 232B      		or r18,r19
 3792 16a0 01F4      		brne .L196
1088:one_wire.c    ****    {
1089:one_wire.c    **** 	   if (TRUE == verbose)
 3794               	.LM310:
 3795 16a2 0130      		cpi r16,lo8(1)
 3796 16a4 01F4      		brne .L203
1090:one_wire.c    **** 	   {
1091:one_wire.c    ****  		   printDebug_p(debugLevelEventDebugVerbose, debugSystemOWI, __LINE__, filename, PSTR("checkBusA
 3798               	.LM311:
 3799 16a6 5F93      		push r21
 3800 16a8 4F93      		push r20
 3801 16aa 1F92      		push __zero_reg__
 3802 16ac 8F93      		push r24
 3803 16ae 862F      		mov r24,r22
 3804 16b0 9927      		clr r25
 3805 16b2 87FD      		sbrc r24,7
 3806 16b4 9095      		com r25
 3807 16b6 9F93      		push r25
 3808 16b8 6F93      		push r22
 3809 16ba 80E0      		ldi r24,lo8(__c.3288)
 3810 16bc 90E0      		ldi r25,hi8(__c.3288)
 3811 16be 9F93      		push r25
 3812 16c0 8F93      		push r24
 3813 16c2 80E0      		ldi r24,lo8(filename)
 3814 16c4 90E0      		ldi r25,hi8(filename)
 3815 16c6 9F93      		push r25
 3816 16c8 8F93      		push r24
 3817 16ca 84E0      		ldi r24,lo8(4)
 3818 16cc 8F93      		push r24
 3819 16ce 83E4      		ldi r24,lo8(67)
 3820               	.L205:
 3821 16d0 8F93      		push r24
 3822 16d2 1F92      		push __zero_reg__
 3823 16d4 1F92      		push __zero_reg__
 3824 16d6 1F92      		push __zero_reg__
 3825 16d8 88E0      		ldi r24,lo8(8)
 3826 16da 8F93      		push r24
 3827 16dc 83E0      		ldi r24,lo8(3)
 3828 16de 8F93      		push r24
 3829 16e0 E091 0000 		lds r30,printDebug_p
 3830 16e4 F091 0000 		lds r31,printDebug_p+1
 3831 16e8 0995      		icall
 3832 16ea 0FB6      		in __tmp_reg__,__SREG__
 3833 16ec F894      		cli
 3834 16ee DEBF      		out __SP_H__,r29
 3835 16f0 0FBE      		out __SREG__,__tmp_reg__
 3836 16f2 CDBF      		out __SP_L__,r28
 3837               	.L203:
1092:one_wire.c    **** 	   }
1093:one_wire.c    ****       return 1;
 3839               	.LM312:
 3840 16f4 81E0      		ldi r24,lo8(1)
 3841 16f6 00C0      		rjmp .L198
 3842               	.L196:
1094:one_wire.c    **** 
1095:one_wire.c    ****    }
1096:one_wire.c    ****    else
1097:one_wire.c    ****    {
1098:one_wire.c    **** 	   if (TRUE == verbose)
 3844               	.LM313:
 3845 16f8 0130      		cpi r16,lo8(1)
 3846 16fa 01F4      		brne .L199
1099:one_wire.c    **** 	   {
1100:one_wire.c    ****  		   printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("checkBusAndDevic
 3848               	.LM314:
 3849 16fc 5F93      		push r21
 3850 16fe 4F93      		push r20
 3851 1700 1F92      		push __zero_reg__
 3852 1702 8F93      		push r24
 3853 1704 262F      		mov r18,r22
 3854 1706 3327      		clr r19
 3855 1708 27FD      		sbrc r18,7
 3856 170a 3095      		com r19
 3857 170c 3F93      		push r19
 3858 170e 6F93      		push r22
 3859 1710 20E0      		ldi r18,lo8(__c.3290)
 3860 1712 30E0      		ldi r19,hi8(__c.3290)
 3861 1714 3F93      		push r19
 3862 1716 2F93      		push r18
 3863 1718 20E0      		ldi r18,lo8(filename)
 3864 171a 30E0      		ldi r19,hi8(filename)
 3865 171c 3F93      		push r19
 3866 171e 2F93      		push r18
 3867 1720 94E0      		ldi r25,lo8(4)
 3868 1722 9F93      		push r25
 3869 1724 9CE4      		ldi r25,lo8(76)
 3870 1726 9F93      		push r25
 3871 1728 1F92      		push __zero_reg__
 3872 172a 1F92      		push __zero_reg__
 3873 172c 1F92      		push __zero_reg__
 3874 172e 98E0      		ldi r25,lo8(8)
 3875 1730 9F93      		push r25
 3876 1732 92E0      		ldi r25,lo8(2)
 3877 1734 9F93      		push r25
 3878 1736 E091 0000 		lds r30,printDebug_p
 3879 173a F091 0000 		lds r31,printDebug_p+1
 3880 173e 8983      		std Y+1,r24
 3881 1740 0995      		icall
 3882 1742 0FB6      		in __tmp_reg__,__SREG__
 3883 1744 F894      		cli
 3884 1746 DEBF      		out __SP_H__,r29
 3885 1748 0FBE      		out __SREG__,__tmp_reg__
 3886 174a CDBF      		out __SP_L__,r28
 3887 174c 8981      		ldd r24,Y+1
 3888               	.L199:
1101:one_wire.c    **** 	   }
1102:one_wire.c    ****    }
1103:one_wire.c    **** 
1104:one_wire.c    ****    // continue if bus doesn't contain any device typed sensors
1105:one_wire.c    ****    if ( 0 == ((owiDeviceMask & pins) & 0xFF ) )
 3890               	.LM315:
 3891 174e EA20      		and r14,r10
 3892 1750 FB20      		and r15,r11
 3893 1752 EF28      		or r14,r15
 3894 1754 01F4      		brne .L200
1106:one_wire.c    ****    {
1107:one_wire.c    **** 	   if (TRUE == verbose)
 3896               	.LM316:
 3897 1756 0130      		cpi r16,lo8(1)
 3898 1758 01F4      		brne .L203
1108:one_wire.c    **** 	   {
1109:one_wire.c    ****  		   printDebug_p(debugLevelEventDebugVerbose, debugSystemOWI, __LINE__, filename, PSTR("checkBusA
 3900               	.LM317:
 3901 175a BF92      		push r11
 3902 175c AF92      		push r10
 3903 175e 1F92      		push __zero_reg__
 3904 1760 8F93      		push r24
 3905 1762 8D2D      		mov r24,r13
 3906 1764 9927      		clr r25
 3907 1766 87FD      		sbrc r24,7
 3908 1768 9095      		com r25
 3909 176a 9F93      		push r25
 3910 176c DF92      		push r13
 3911 176e 80E0      		ldi r24,lo8(__c.3292)
 3912 1770 90E0      		ldi r25,hi8(__c.3292)
 3913 1772 9F93      		push r25
 3914 1774 8F93      		push r24
 3915 1776 80E0      		ldi r24,lo8(filename)
 3916 1778 90E0      		ldi r25,hi8(filename)
 3917 177a 9F93      		push r25
 3918 177c 8F93      		push r24
 3919 177e 84E0      		ldi r24,lo8(4)
 3920 1780 8F93      		push r24
 3921 1782 85E5      		ldi r24,lo8(85)
 3922 1784 00C0      		rjmp .L205
 3923               	.L200:
1110:one_wire.c    **** 	   }
1111:one_wire.c    **** 
1112:one_wire.c    ****       return 1;
1113:one_wire.c    ****    }
1114:one_wire.c    ****    else
1115:one_wire.c    ****    {
1116:one_wire.c    **** 	   if (TRUE == verbose)
 3925               	.LM318:
 3926 1786 0130      		cpi r16,lo8(1)
 3927 1788 01F0      		breq .+2
 3928 178a 00C0      		rjmp .L202
1117:one_wire.c    **** 	   {
1118:one_wire.c    ****  		   printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("checkBusAndDevic
 3930               	.LM319:
 3931 178c 0D2D      		mov r16,r13
 3932 178e 1127      		clr r17
 3933 1790 07FD      		sbrc r16,7
 3934 1792 1095      		com r17
 3935 1794 BF92      		push r11
 3936 1796 AF92      		push r10
 3937 1798 1F92      		push __zero_reg__
 3938 179a 8F93      		push r24
 3939 179c 1F93      		push r17
 3940 179e DF92      		push r13
 3941 17a0 80E0      		ldi r24,lo8(__c.3294)
 3942 17a2 90E0      		ldi r25,hi8(__c.3294)
 3943 17a4 9F93      		push r25
 3944 17a6 8F93      		push r24
 3945 17a8 60E0      		ldi r22,lo8(filename)
 3946 17aa A62E      		mov r10,r22
 3947 17ac 60E0      		ldi r22,hi8(filename)
 3948 17ae B62E      		mov r11,r22
 3949 17b0 BF92      		push r11
 3950 17b2 AF92      		push r10
 3951 17b4 74E0      		ldi r23,lo8(4)
 3952 17b6 E72E      		mov r14,r23
 3953 17b8 EF92      		push r14
 3954 17ba 8EE5      		ldi r24,lo8(94)
 3955 17bc 8F93      		push r24
 3956 17be 1F92      		push __zero_reg__
 3957 17c0 1F92      		push __zero_reg__
 3958 17c2 1F92      		push __zero_reg__
 3959 17c4 E8E0      		ldi r30,lo8(8)
 3960 17c6 FE2E      		mov r15,r30
 3961 17c8 FF92      		push r15
 3962 17ca 02E0      		ldi r16,lo8(2)
 3963 17cc 0F93      		push r16
 3964 17ce E091 0000 		lds r30,printDebug_p
 3965 17d2 F091 0000 		lds r31,printDebug_p+1
 3966 17d6 0995      		icall
1119:one_wire.c    **** 	   }
1120:one_wire.c    ****    }
1121:one_wire.c    **** 
1122:one_wire.c    ****    if (TRUE == verbose)
1123:one_wire.c    ****    {
1124:one_wire.c    ****  	   printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("checkBusAndDevice
 3968               	.LM320:
 3969 17d8 1F93      		push r17
 3970 17da DF92      		push r13
 3971 17dc 80E0      		ldi r24,lo8(__c.3296)
 3972 17de 90E0      		ldi r25,hi8(__c.3296)
 3973 17e0 9F93      		push r25
 3974 17e2 8F93      		push r24
 3975 17e4 BF92      		push r11
 3976 17e6 AF92      		push r10
 3977 17e8 EF92      		push r14
 3978 17ea 84E6      		ldi r24,lo8(100)
 3979 17ec 8F93      		push r24
 3980 17ee 1F92      		push __zero_reg__
 3981 17f0 1F92      		push __zero_reg__
 3982 17f2 1F92      		push __zero_reg__
 3983 17f4 FF92      		push r15
 3984 17f6 0F93      		push r16
 3985 17f8 E091 0000 		lds r30,printDebug_p
 3986 17fc F091 0000 		lds r31,printDebug_p+1
 3987 1800 0995      		icall
 3988 1802 0FB6      		in __tmp_reg__,__SREG__
 3989 1804 F894      		cli
 3990 1806 DEBF      		out __SP_H__,r29
 3991 1808 0FBE      		out __SREG__,__tmp_reg__
 3992 180a CDBF      		out __SP_L__,r28
 3993               	.L202:
1125:one_wire.c    ****    }
1126:one_wire.c    **** 
1127:one_wire.c    ****    return 0;
 3995               	.LM321:
 3996 180c 80E0      		ldi r24,0
 3997               	.L198:
 3998               	/* epilogue start */
1128:one_wire.c    **** }
 4000               	.LM322:
 4001 180e 0F90      		pop __tmp_reg__
 4002 1810 DF91      		pop r29
 4003 1812 CF91      		pop r28
 4004 1814 1F91      		pop r17
 4005 1816 0F91      		pop r16
 4006 1818 FF90      		pop r15
 4007 181a EF90      		pop r14
 4008 181c DF90      		pop r13
 4009 181e BF90      		pop r11
 4010 1820 AF90      		pop r10
 4011 1822 0895      		ret
 4013               	.Lscope13:
 4017               	.global	generateCommonPinsPattern
 4019               	generateCommonPinsPattern:
1129:one_wire.c    **** 
1130:one_wire.c    **** 
1131:one_wire.c    **** /*
1132:one_wire.c    ****  * uint8_t generateCommonPinsPattern(uint8_t *pins, const uint16_t owiBusMask, const uint16_t owiDe
1133:one_wire.c    ****  *
1134:one_wire.c    ****  * combines active pins (bus and device mask) of array pins into one common pins set returned
1135:one_wire.c    ****  *
1136:one_wire.c    ****  * input:
1137:one_wire.c    ****  *      pins: array of 8 pin mask
1138:one_wire.c    ****  *      owiBusMask: general activity bus mask
1139:one_wire.c    ****  *      owiDeviceMask: bus mask of currently available devices
1140:one_wire.c    ****  *
1141:one_wire.c    ****  * returns
1142:one_wire.c    ****  *      common pin pattern
1143:one_wire.c    ****  */
1144:one_wire.c    **** 
1145:one_wire.c    **** uint8_t generateCommonPinsPattern(uint8_t *pins, const uint16_t owiBusMask, const uint16_t owiDevic
1146:one_wire.c    **** {
 4021               	.LM323:
 4022               	.LFBB14:
 4023 1824 2F92      		push r2
 4024 1826 3F92      		push r3
 4025 1828 4F92      		push r4
 4026 182a 5F92      		push r5
 4027 182c 6F92      		push r6
 4028 182e 7F92      		push r7
 4029 1830 8F92      		push r8
 4030 1832 9F92      		push r9
 4031 1834 AF92      		push r10
 4032 1836 BF92      		push r11
 4033 1838 CF92      		push r12
 4034 183a DF92      		push r13
 4035 183c EF92      		push r14
 4036 183e FF92      		push r15
 4037 1840 0F93      		push r16
 4038 1842 1F93      		push r17
 4039 1844 CF93      		push r28
 4040 1846 DF93      		push r29
 4041               	/* prologue: function */
 4042               	/* frame size = 0 */
 4043               	/* stack size = 18 */
 4044               	.L__stack_usage = 18
 4045 1848 7C01      		movw r14,r24
 4046 184a 3B01      		movw r6,r22
 4047 184c 542E      		mov r5,r20
 4048 184e 452E      		mov r4,r21
1147:one_wire.c    ****    if ( NULL == pins)
 4050               	.LM324:
 4051 1850 0097      		sbiw r24,0
 4052 1852 01F4      		brne .+2
 4053 1854 00C0      		rjmp .L212
1148:one_wire.c    ****    { return 0; }
1149:one_wire.c    **** 
1150:one_wire.c    ****    uint8_t commonPins = 0;
1151:one_wire.c    **** 
1152:one_wire.c    ****     printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("bus: owiDeviceMask
 4055               	.LM325:
 4056 1856 5F93      		push r21
 4057 1858 4F93      		push r20
 4058 185a 80E0      		ldi r24,lo8(__c.3304)
 4059 185c 90E0      		ldi r25,hi8(__c.3304)
 4060 185e 9F93      		push r25
 4061 1860 8F93      		push r24
 4062 1862 80E0      		ldi r24,lo8(filename)
 4063 1864 90E0      		ldi r25,hi8(filename)
 4064 1866 9F93      		push r25
 4065 1868 8F93      		push r24
 4066 186a 84E0      		ldi r24,lo8(4)
 4067 186c 8F93      		push r24
 4068 186e 80E8      		ldi r24,lo8(-128)
 4069 1870 8F93      		push r24
 4070 1872 1F92      		push __zero_reg__
 4071 1874 1F92      		push __zero_reg__
 4072 1876 1F92      		push __zero_reg__
 4073 1878 88E0      		ldi r24,lo8(8)
 4074 187a 8F93      		push r24
 4075 187c 82E0      		ldi r24,lo8(2)
 4076 187e 8F93      		push r24
 4077 1880 E091 0000 		lds r30,printDebug_p
 4078 1884 F091 0000 		lds r31,printDebug_p+1
 4079 1888 0995      		icall
 4080 188a 8DB7      		in r24,__SP_L__
 4081 188c 9EB7      		in r25,__SP_H__
 4082 188e 0D96      		adiw r24,13
 4083 1890 0FB6      		in __tmp_reg__,__SREG__
 4084 1892 F894      		cli
 4085 1894 9EBF      		out __SP_H__,r25
 4086 1896 0FBE      		out __SREG__,__tmp_reg__
 4087 1898 8DBF      		out __SP_L__,r24
 4088 189a C0E0      		ldi r28,0
 4089 189c D0E0      		ldi r29,0
1150:one_wire.c    **** 
 4091               	.LM326:
 4092 189e 10E0      		ldi r17,0
 4093               	.LBB38:
1153:one_wire.c    **** 
1154:one_wire.c    ****    for ( int8_t busPatternIndex = 0 ; busPatternIndex < OWI_MAX_NUM_PIN_BUS ; busPatternIndex++ )
1155:one_wire.c    ****    {
1156:one_wire.c    ****       if ( 0 != checkBusAndDeviceActivityMasks(pins[busPatternIndex], busPatternIndex, owiBusMask, 
1157:one_wire.c    ****       {
1158:one_wire.c    ****           printDebug_p(debugLevelEventDebugVerbose, debugSystemOWI, __LINE__, filename, PSTR("bus: 
1159:one_wire.c    ****          continue;
1160:one_wire.c    ****       }
1161:one_wire.c    ****       else
1162:one_wire.c    ****       {
1163:one_wire.c    ****           printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("bus: %i comb
 4095               	.LM327:
 4096 18a0 F0E0      		ldi r31,lo8(__c.3310)
 4097 18a2 AF2E      		mov r10,r31
 4098 18a4 F0E0      		ldi r31,hi8(__c.3310)
 4099 18a6 BF2E      		mov r11,r31
 4100 18a8 A0E0      		ldi r26,lo8(filename)
 4101 18aa CA2E      		mov r12,r26
 4102 18ac A0E0      		ldi r26,hi8(filename)
 4103 18ae DA2E      		mov r13,r26
 4104 18b0 B4E0      		ldi r27,lo8(4)
 4105 18b2 3B2E      		mov r3,r27
 4106 18b4 08E0      		ldi r16,lo8(8)
 4107 18b6 202E      		mov r2,r16
1158:one_wire.c    ****          continue;
 4109               	.LM328:
 4110 18b8 80E0      		ldi r24,lo8(__c.3307)
 4111 18ba 882E      		mov r8,r24
 4112 18bc 80E0      		ldi r24,hi8(__c.3307)
 4113 18be 982E      		mov r9,r24
 4114               	.L211:
1156:one_wire.c    ****       {
 4116               	.LM329:
 4117 18c0 01E0      		ldi r16,lo8(1)
 4118 18c2 252D      		mov r18,r5
 4119 18c4 342D      		mov r19,r4
 4120 18c6 A301      		movw r20,r6
 4121 18c8 6C2F      		mov r22,r28
 4122 18ca D701      		movw r26,r14
 4123 18cc 8C91      		ld r24,X
 4124 18ce 0E94 0000 		call checkBusAndDeviceActivityMasks
 4125 18d2 E091 0000 		lds r30,printDebug_p
 4126 18d6 F091 0000 		lds r31,printDebug_p+1
 4127 18da D701      		movw r26,r14
 4128 18dc 9C91      		ld r25,X
 4129 18de 8823      		tst r24
 4130 18e0 01F0      		breq .L208
1158:one_wire.c    ****          continue;
 4132               	.LM330:
 4133 18e2 1F92      		push __zero_reg__
 4134 18e4 1F93      		push r17
 4135 18e6 1F92      		push __zero_reg__
 4136 18e8 9F93      		push r25
 4137 18ea DF93      		push r29
 4138 18ec CF93      		push r28
 4139 18ee 9F92      		push r9
 4140 18f0 8F92      		push r8
 4141 18f2 DF92      		push r13
 4142 18f4 CF92      		push r12
 4143 18f6 3F92      		push r3
 4144 18f8 96E8      		ldi r25,lo8(-122)
 4145 18fa 9F93      		push r25
 4146 18fc 1F92      		push __zero_reg__
 4147 18fe 1F92      		push __zero_reg__
 4148 1900 1F92      		push __zero_reg__
 4149 1902 2F92      		push r2
 4150 1904 A3E0      		ldi r26,lo8(3)
 4151 1906 AF93      		push r26
 4152 1908 0995      		icall
1159:one_wire.c    ****       }
 4154               	.LM331:
 4155 190a EDB7      		in r30,__SP_L__
 4156 190c FEB7      		in r31,__SP_H__
 4157 190e 7196      		adiw r30,17
 4158 1910 0FB6      		in __tmp_reg__,__SREG__
 4159 1912 F894      		cli
 4160 1914 FEBF      		out __SP_H__,r31
 4161 1916 0FBE      		out __SREG__,__tmp_reg__
 4162 1918 EDBF      		out __SP_L__,r30
 4163 191a 00C0      		rjmp .L209
 4164               	.L208:
 4166               	.LM332:
 4167 191c 1F92      		push __zero_reg__
 4168 191e 1F93      		push r17
 4169 1920 1F92      		push __zero_reg__
 4170 1922 9F93      		push r25
 4171 1924 DF93      		push r29
 4172 1926 CF93      		push r28
 4173 1928 BF92      		push r11
 4174 192a AF92      		push r10
 4175 192c DF92      		push r13
 4176 192e CF92      		push r12
 4177 1930 3F92      		push r3
 4178 1932 ABE8      		ldi r26,lo8(-117)
 4179 1934 AF93      		push r26
 4180 1936 1F92      		push __zero_reg__
 4181 1938 1F92      		push __zero_reg__
 4182 193a 1F92      		push __zero_reg__
 4183 193c 2F92      		push r2
 4184 193e B2E0      		ldi r27,lo8(2)
 4185 1940 BF93      		push r27
 4186 1942 0995      		icall
1164:one_wire.c    ****       }
1165:one_wire.c    **** 
1166:one_wire.c    ****       commonPins |= pins[busPatternIndex];
 4188               	.LM333:
 4189 1944 F701      		movw r30,r14
 4190 1946 8081      		ld r24,Z
 4191 1948 182B      		or r17,r24
 4192 194a 8DB7      		in r24,__SP_L__
 4193 194c 9EB7      		in r25,__SP_H__
 4194 194e 4196      		adiw r24,17
 4195 1950 0FB6      		in __tmp_reg__,__SREG__
 4196 1952 F894      		cli
 4197 1954 9EBF      		out __SP_H__,r25
 4198 1956 0FBE      		out __SREG__,__tmp_reg__
 4199 1958 8DBF      		out __SP_L__,r24
 4200               	.L209:
 4201 195a 2196      		adiw r28,1
 4202 195c 9FEF      		ldi r25,-1
 4203 195e E91A      		sub r14,r25
 4204 1960 F90A      		sbc r15,r25
1154:one_wire.c    ****    {
 4206               	.LM334:
 4207 1962 C630      		cpi r28,6
 4208 1964 D105      		cpc r29,__zero_reg__
 4209 1966 01F0      		breq .+2
 4210 1968 00C0      		rjmp .L211
 4211               	.LBE38:
1167:one_wire.c    ****    }
1168:one_wire.c    ****     printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("final common pins:
 4213               	.LM335:
 4214 196a 1F92      		push __zero_reg__
 4215 196c 1F93      		push r17
 4216 196e 80E0      		ldi r24,lo8(__c.3315)
 4217 1970 90E0      		ldi r25,hi8(__c.3315)
 4218 1972 9F93      		push r25
 4219 1974 8F93      		push r24
 4220 1976 80E0      		ldi r24,lo8(filename)
 4221 1978 90E0      		ldi r25,hi8(filename)
 4222 197a 9F93      		push r25
 4223 197c 8F93      		push r24
 4224 197e 84E0      		ldi r24,lo8(4)
 4225 1980 8F93      		push r24
 4226 1982 80E9      		ldi r24,lo8(-112)
 4227 1984 8F93      		push r24
 4228 1986 1F92      		push __zero_reg__
 4229 1988 1F92      		push __zero_reg__
 4230 198a 1F92      		push __zero_reg__
 4231 198c 88E0      		ldi r24,lo8(8)
 4232 198e 8F93      		push r24
 4233 1990 82E0      		ldi r24,lo8(2)
 4234 1992 8F93      		push r24
 4235 1994 E091 0000 		lds r30,printDebug_p
 4236 1998 F091 0000 		lds r31,printDebug_p+1
 4237 199c 0995      		icall
1169:one_wire.c    ****    return commonPins;
 4239               	.LM336:
 4240 199e ADB7      		in r26,__SP_L__
 4241 19a0 BEB7      		in r27,__SP_H__
 4242 19a2 1D96      		adiw r26,13
 4243 19a4 0FB6      		in __tmp_reg__,__SREG__
 4244 19a6 F894      		cli
 4245 19a8 BEBF      		out __SP_H__,r27
 4246 19aa 0FBE      		out __SREG__,__tmp_reg__
 4247 19ac ADBF      		out __SP_L__,r26
 4248 19ae 812F      		mov r24,r17
 4249 19b0 00C0      		rjmp .L207
 4250               	.L212:
1148:one_wire.c    **** 
 4252               	.LM337:
 4253 19b2 80E0      		ldi r24,0
 4254               	.L207:
 4255               	/* epilogue start */
1170:one_wire.c    **** }
 4257               	.LM338:
 4258 19b4 DF91      		pop r29
 4259 19b6 CF91      		pop r28
 4260 19b8 1F91      		pop r17
 4261 19ba 0F91      		pop r16
 4262 19bc FF90      		pop r15
 4263 19be EF90      		pop r14
 4264 19c0 DF90      		pop r13
 4265 19c2 CF90      		pop r12
 4266 19c4 BF90      		pop r11
 4267 19c6 AF90      		pop r10
 4268 19c8 9F90      		pop r9
 4269 19ca 8F90      		pop r8
 4270 19cc 7F90      		pop r7
 4271 19ce 6F90      		pop r6
 4272 19d0 5F90      		pop r5
 4273 19d2 4F90      		pop r4
 4274 19d4 3F90      		pop r3
 4275 19d6 2F90      		pop r2
 4276 19d8 0895      		ret
 4278               	.Lscope14:
 4281               	.global	owiFindParasitePoweredDevices
 4283               	owiFindParasitePoweredDevices:
1171:one_wire.c    **** 
1172:one_wire.c    **** 
1173:one_wire.c    **** /*
1174:one_wire.c    ****  * find parasite powered devices
1175:one_wire.c    ****  */
1176:one_wire.c    **** 
1177:one_wire.c    **** void owiFindParasitePoweredDevices(unsigned char verbose)
1178:one_wire.c    **** {
 4285               	.LM339:
 4286               	.LFBB15:
 4287 19da 2F92      		push r2
 4288 19dc 3F92      		push r3
 4289 19de 4F92      		push r4
 4290 19e0 5F92      		push r5
 4291 19e2 6F92      		push r6
 4292 19e4 7F92      		push r7
 4293 19e6 8F92      		push r8
 4294 19e8 9F92      		push r9
 4295 19ea AF92      		push r10
 4296 19ec BF92      		push r11
 4297 19ee CF92      		push r12
 4298 19f0 DF92      		push r13
 4299 19f2 EF92      		push r14
 4300 19f4 FF92      		push r15
 4301 19f6 0F93      		push r16
 4302 19f8 1F93      		push r17
 4303 19fa CF93      		push r28
 4304 19fc DF93      		push r29
 4305 19fe 00D0      		rcall .
 4306 1a00 CDB7      		in r28,__SP_L__
 4307 1a02 DEB7      		in r29,__SP_H__
 4308               	/* prologue: function */
 4309               	/* frame size = 2 */
 4310               	/* stack size = 20 */
 4311               	.L__stack_usage = 20
 4312 1a04 582E      		mov r5,r24
 4313 1a06 20E0      		ldi r18,lo8(BUSES)
 4314 1a08 222E      		mov r2,r18
 4315 1a0a 20E0      		ldi r18,hi8(BUSES)
 4316 1a0c 322E      		mov r3,r18
 4317               	.LBB39:
 4318               	.LBB40:
1179:one_wire.c    **** 
1180:one_wire.c    ****    /* In some situations the bus master may not know whether the DS18B20s on the bus are parasite p
1181:one_wire.c    ****     * or powered by external supplies. The master needs this information to determine if the strong
1182:one_wire.c    ****     * should be used during temperature conversions. To get this information, the master can issue 
1183:one_wire.c    ****     * [CCh] command followed by a Read Power Supply [B4h] command followed by a â€œread time slotâ€
1184:one_wire.c    ****     * During the read time slot, parasite powered DS18B20s will pull the bus low, and externally po
1185:one_wire.c    ****     * DS18B20s will let the bus remain high. If the bus is pulled low, the master knows that it mus
1186:one_wire.c    ****     * strong pullup on the 1-Wire bus during temperature conversions
1187:one_wire.c    ****     */
1188:one_wire.c    **** 
1189:one_wire.c    **** 
1190:one_wire.c    ****    uint8_t *pins = BUSES;
1191:one_wire.c    ****    uint8_t busPatternIndexMax = OWI_MAX_NUM_PIN_BUS;
1192:one_wire.c    **** 
1193:one_wire.c    ****    for ( int8_t busPatternIndex = 0 ; busPatternIndex < busPatternIndexMax ; busPatternIndex++ )
1194:one_wire.c    ****    {
1195:one_wire.c    ****       uint8_t currentPins = pins[busPatternIndex];
1196:one_wire.c    **** 
1197:one_wire.c    ****       /*
1198:one_wire.c    ****        * detect presence
1199:one_wire.c    ****        */
1200:one_wire.c    **** 
1201:one_wire.c    ****       if ( 0 == OWI_DetectPresence(currentPins) )
1202:one_wire.c    ****       {
1203:one_wire.c    ****           printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("no Device pr
1204:one_wire.c    ****          continue;
1205:one_wire.c    ****       }
1206:one_wire.c    ****       else
1207:one_wire.c    ****       {
1208:one_wire.c    ****           printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("some devices
 4320               	.LM340:
 4321 1a0e 00E0      		ldi r16,lo8(filename)
 4322 1a10 10E0      		ldi r17,hi8(filename)
 4323 1a12 34E0      		ldi r19,lo8(4)
 4324 1a14 632E      		mov r6,r19
 4325 1a16 48E0      		ldi r20,lo8(8)
 4326 1a18 442E      		mov r4,r20
1209:one_wire.c    ****       }
1210:one_wire.c    **** 
1211:one_wire.c    **** 
1212:one_wire.c    ****       /*
1213:one_wire.c    ****        * send read power supply to all devices
1214:one_wire.c    ****        */
1215:one_wire.c    **** 
1216:one_wire.c    ****       OWI_SendByte(OWI_ROM_SKIP, currentPins);
1217:one_wire.c    ****       OWI_SendByte(DS1820_READ_POWER_SUPPLY, currentPins);
1218:one_wire.c    **** 
1219:one_wire.c    ****       /*
1220:one_wire.c    ****        * wait
1221:one_wire.c    ****        */
1222:one_wire.c    **** 
1223:one_wire.c    ****       uint32_t maxcount = 5; /* 5ms */
1224:one_wire.c    ****       uint32_t count = maxcount;
 4328               	.LM341:
 4329 1a1a 55E0      		ldi r21,lo8(5)
 4330 1a1c 852E      		mov r8,r21
 4331 1a1e 912C      		mov r9,__zero_reg__
 4332 1a20 A12C      		mov r10,__zero_reg__
 4333 1a22 B12C      		mov r11,__zero_reg__
 4334               	.L223:
1195:one_wire.c    **** 
 4336               	.LM342:
 4337 1a24 D101      		movw r26,r2
 4338 1a26 7D90      		ld r7,X+
 4339 1a28 1D01      		movw r2,r26
1201:one_wire.c    ****       {
 4341               	.LM343:
 4342 1a2a 872D      		mov r24,r7
 4343 1a2c 0E94 0000 		call OWI_DetectPresence
 4344 1a30 E091 0000 		lds r30,printDebug_p
 4345 1a34 F091 0000 		lds r31,printDebug_p+1
 4346 1a38 8111      		cpse r24,__zero_reg__
 4347 1a3a 00C0      		rjmp .L214
1203:one_wire.c    ****          continue;
 4349               	.LM344:
 4350 1a3c 1F92      		push __zero_reg__
 4351 1a3e 7F92      		push r7
 4352 1a40 A0E0      		ldi r26,lo8(__c.3324)
 4353 1a42 B0E0      		ldi r27,hi8(__c.3324)
 4354 1a44 BF93      		push r27
 4355 1a46 AF93      		push r26
 4356 1a48 1F93      		push r17
 4357 1a4a 0F93      		push r16
 4358 1a4c 6F92      		push r6
 4359 1a4e 83EB      		ldi r24,lo8(-77)
 4360 1a50 8F93      		push r24
 4361 1a52 1F92      		push __zero_reg__
 4362 1a54 1F92      		push __zero_reg__
 4363 1a56 1F92      		push __zero_reg__
 4364 1a58 4F92      		push r4
 4365 1a5a 82E0      		ldi r24,lo8(2)
 4366 1a5c 8F93      		push r24
 4367 1a5e 00C0      		rjmp .L235
 4368               	.L214:
1208:one_wire.c    ****       }
 4370               	.LM345:
 4371 1a60 1F92      		push __zero_reg__
 4372 1a62 7F92      		push r7
 4373 1a64 A0E0      		ldi r26,lo8(__c.3327)
 4374 1a66 B0E0      		ldi r27,hi8(__c.3327)
 4375 1a68 BF93      		push r27
 4376 1a6a AF93      		push r26
 4377 1a6c 1F93      		push r17
 4378 1a6e 0F93      		push r16
 4379 1a70 6F92      		push r6
 4380 1a72 98EB      		ldi r25,lo8(-72)
 4381 1a74 9F93      		push r25
 4382 1a76 1F92      		push __zero_reg__
 4383 1a78 1F92      		push __zero_reg__
 4384 1a7a 1F92      		push __zero_reg__
 4385 1a7c 4F92      		push r4
 4386 1a7e 82E0      		ldi r24,lo8(2)
 4387 1a80 8F93      		push r24
 4388 1a82 0995      		icall
1216:one_wire.c    ****       OWI_SendByte(DS1820_READ_POWER_SUPPLY, currentPins);
 4390               	.LM346:
 4391 1a84 672D      		mov r22,r7
 4392 1a86 8CEC      		ldi r24,lo8(-52)
 4393 1a88 0E94 0000 		call OWI_SendByte
1217:one_wire.c    **** 
 4395               	.LM347:
 4396 1a8c 672D      		mov r22,r7
 4397 1a8e 84EB      		ldi r24,lo8(-76)
 4398 1a90 0E94 0000 		call OWI_SendByte
 4399 1a94 0FB6      		in __tmp_reg__,__SREG__
 4400 1a96 F894      		cli
 4401 1a98 DEBF      		out __SP_H__,r29
 4402 1a9a 0FBE      		out __SREG__,__tmp_reg__
 4403 1a9c CDBF      		out __SP_L__,r28
 4405               	.LM348:
 4406 1a9e 95E0      		ldi r25,lo8(5)
 4407 1aa0 C92E      		mov r12,r25
 4408 1aa2 D12C      		mov r13,__zero_reg__
 4409 1aa4 E12C      		mov r14,__zero_reg__
 4410 1aa6 F12C      		mov r15,__zero_reg__
 4411               	.L218:
1225:one_wire.c    ****       uint8_t timeout_flag = FALSE;
1226:one_wire.c    ****       uint8_t owiReadBit = 0;
1227:one_wire.c    ****       static uint8_t delay = 1; /*ms*/
1228:one_wire.c    **** 
1229:one_wire.c    ****       while ( 0 == owiReadBit)
1230:one_wire.c    ****       {
1231:one_wire.c    ****           owiReadBit = OWI_ReadBit(currentPins);
 4413               	.LM349:
 4414 1aa8 872D      		mov r24,r7
 4415 1aaa 0E94 0000 		call OWI_ReadBit
 4416               	.LBB41:
 4417               	.LBB42:
 4419               	.Ltext1:
   1:/usr/lib/avr/include/util/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:/usr/lib/avr/include/util/delay.h ****    Copyright (c) 2004,2005,2007 Joerg Wunsch
   3:/usr/lib/avr/include/util/delay.h ****    Copyright (c) 2007  Florin-Viorel Petrov
   4:/usr/lib/avr/include/util/delay.h ****    All rights reserved.
   5:/usr/lib/avr/include/util/delay.h **** 
   6:/usr/lib/avr/include/util/delay.h ****    Redistribution and use in source and binary forms, with or without
   7:/usr/lib/avr/include/util/delay.h ****    modification, are permitted provided that the following conditions are met:
   8:/usr/lib/avr/include/util/delay.h **** 
   9:/usr/lib/avr/include/util/delay.h ****    * Redistributions of source code must retain the above copyright
  10:/usr/lib/avr/include/util/delay.h ****      notice, this list of conditions and the following disclaimer.
  11:/usr/lib/avr/include/util/delay.h **** 
  12:/usr/lib/avr/include/util/delay.h ****    * Redistributions in binary form must reproduce the above copyright
  13:/usr/lib/avr/include/util/delay.h ****      notice, this list of conditions and the following disclaimer in
  14:/usr/lib/avr/include/util/delay.h ****      the documentation and/or other materials provided with the
  15:/usr/lib/avr/include/util/delay.h ****      distribution.
  16:/usr/lib/avr/include/util/delay.h **** 
  17:/usr/lib/avr/include/util/delay.h ****    * Neither the name of the copyright holders nor the names of
  18:/usr/lib/avr/include/util/delay.h ****      contributors may be used to endorse or promote products derived
  19:/usr/lib/avr/include/util/delay.h ****      from this software without specific prior written permission.
  20:/usr/lib/avr/include/util/delay.h **** 
  21:/usr/lib/avr/include/util/delay.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  22:/usr/lib/avr/include/util/delay.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23:/usr/lib/avr/include/util/delay.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24:/usr/lib/avr/include/util/delay.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  25:/usr/lib/avr/include/util/delay.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  26:/usr/lib/avr/include/util/delay.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  27:/usr/lib/avr/include/util/delay.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  28:/usr/lib/avr/include/util/delay.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  29:/usr/lib/avr/include/util/delay.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  30:/usr/lib/avr/include/util/delay.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  31:/usr/lib/avr/include/util/delay.h ****   POSSIBILITY OF SUCH DAMAGE. */
  32:/usr/lib/avr/include/util/delay.h **** 
  33:/usr/lib/avr/include/util/delay.h **** /* $Id$ */
  34:/usr/lib/avr/include/util/delay.h **** 
  35:/usr/lib/avr/include/util/delay.h **** #ifndef _UTIL_DELAY_H_
  36:/usr/lib/avr/include/util/delay.h **** #define _UTIL_DELAY_H_ 1
  37:/usr/lib/avr/include/util/delay.h **** 
  38:/usr/lib/avr/include/util/delay.h **** #ifndef __HAS_DELAY_CYCLES
  39:/usr/lib/avr/include/util/delay.h **** #define __HAS_DELAY_CYCLES 1
  40:/usr/lib/avr/include/util/delay.h **** #endif
  41:/usr/lib/avr/include/util/delay.h **** 
  42:/usr/lib/avr/include/util/delay.h **** #include <inttypes.h>
  43:/usr/lib/avr/include/util/delay.h **** #include <util/delay_basic.h>
  44:/usr/lib/avr/include/util/delay.h **** #include <math.h>
  45:/usr/lib/avr/include/util/delay.h **** 
  46:/usr/lib/avr/include/util/delay.h **** /** \file */
  47:/usr/lib/avr/include/util/delay.h **** /** \defgroup util_delay <util/delay.h>: Convenience functions for busy-wait delay loops
  48:/usr/lib/avr/include/util/delay.h ****     \code
  49:/usr/lib/avr/include/util/delay.h ****     #define F_CPU 1000000UL  // 1 MHz
  50:/usr/lib/avr/include/util/delay.h ****     //#define F_CPU 14.7456E6
  51:/usr/lib/avr/include/util/delay.h ****     #include <util/delay.h>
  52:/usr/lib/avr/include/util/delay.h ****     \endcode
  53:/usr/lib/avr/include/util/delay.h **** 
  54:/usr/lib/avr/include/util/delay.h ****     \note As an alternative method, it is possible to pass the
  55:/usr/lib/avr/include/util/delay.h ****     F_CPU macro down to the compiler from the Makefile.
  56:/usr/lib/avr/include/util/delay.h ****     Obviously, in that case, no \c \#define statement should be
  57:/usr/lib/avr/include/util/delay.h ****     used.
  58:/usr/lib/avr/include/util/delay.h **** 
  59:/usr/lib/avr/include/util/delay.h ****     The functions in this header file are wrappers around the basic
  60:/usr/lib/avr/include/util/delay.h ****     busy-wait functions from <util/delay_basic.h>.  They are meant as
  61:/usr/lib/avr/include/util/delay.h ****     convenience functions where actual time values can be specified
  62:/usr/lib/avr/include/util/delay.h ****     rather than a number of cycles to wait for.  The idea behind is
  63:/usr/lib/avr/include/util/delay.h ****     that compile-time constant expressions will be eliminated by
  64:/usr/lib/avr/include/util/delay.h ****     compiler optimization so floating-point expressions can be used
  65:/usr/lib/avr/include/util/delay.h ****     to calculate the number of delay cycles needed based on the CPU
  66:/usr/lib/avr/include/util/delay.h ****     frequency passed by the macro F_CPU.
  67:/usr/lib/avr/include/util/delay.h **** 
  68:/usr/lib/avr/include/util/delay.h ****     \note In order for these functions to work as intended, compiler
  69:/usr/lib/avr/include/util/delay.h ****     optimizations <em>must</em> be enabled, and the delay time
  70:/usr/lib/avr/include/util/delay.h ****     <em>must</em> be an expression that is a known constant at
  71:/usr/lib/avr/include/util/delay.h ****     compile-time.  If these requirements are not met, the resulting
  72:/usr/lib/avr/include/util/delay.h ****     delay will be much longer (and basically unpredictable), and
  73:/usr/lib/avr/include/util/delay.h ****     applications that otherwise do not use floating-point calculations
  74:/usr/lib/avr/include/util/delay.h ****     will experience severe code bloat by the floating-point library
  75:/usr/lib/avr/include/util/delay.h ****     routines linked into the application.
  76:/usr/lib/avr/include/util/delay.h **** 
  77:/usr/lib/avr/include/util/delay.h ****     The functions available allow the specification of microsecond, and
  78:/usr/lib/avr/include/util/delay.h ****     millisecond delays directly, using the application-supplied macro
  79:/usr/lib/avr/include/util/delay.h ****     F_CPU as the CPU clock frequency (in Hertz).
  80:/usr/lib/avr/include/util/delay.h **** 
  81:/usr/lib/avr/include/util/delay.h **** */
  82:/usr/lib/avr/include/util/delay.h **** 
  83:/usr/lib/avr/include/util/delay.h **** #if !defined(__DOXYGEN__)
  84:/usr/lib/avr/include/util/delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline));
  85:/usr/lib/avr/include/util/delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline));
  86:/usr/lib/avr/include/util/delay.h **** #endif
  87:/usr/lib/avr/include/util/delay.h **** 
  88:/usr/lib/avr/include/util/delay.h **** #ifndef F_CPU
  89:/usr/lib/avr/include/util/delay.h **** /* prevent compiler error by supplying a default */
  90:/usr/lib/avr/include/util/delay.h **** # warning "F_CPU not defined for <util/delay.h>"
  91:/usr/lib/avr/include/util/delay.h **** # define F_CPU 1000000UL
  92:/usr/lib/avr/include/util/delay.h **** #endif
  93:/usr/lib/avr/include/util/delay.h **** 
  94:/usr/lib/avr/include/util/delay.h **** #ifndef __OPTIMIZE__
  95:/usr/lib/avr/include/util/delay.h **** # warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
  96:/usr/lib/avr/include/util/delay.h **** #endif
  97:/usr/lib/avr/include/util/delay.h **** 
  98:/usr/lib/avr/include/util/delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \
  99:/usr/lib/avr/include/util/delay.h ****   !defined(__DELAY_BACKWARD_COMPATIBLE__) &&	   \
 100:/usr/lib/avr/include/util/delay.h ****   __STDC_HOSTED__
 101:/usr/lib/avr/include/util/delay.h **** #  include <math.h>
 102:/usr/lib/avr/include/util/delay.h **** #endif
 103:/usr/lib/avr/include/util/delay.h **** 
 104:/usr/lib/avr/include/util/delay.h **** /**
 105:/usr/lib/avr/include/util/delay.h ****    \ingroup util_delay
 106:/usr/lib/avr/include/util/delay.h **** 
 107:/usr/lib/avr/include/util/delay.h ****    Perform a delay of \c __ms milliseconds, using _delay_loop_2().
 108:/usr/lib/avr/include/util/delay.h **** 
 109:/usr/lib/avr/include/util/delay.h ****    The macro F_CPU is supposed to be defined to a
 110:/usr/lib/avr/include/util/delay.h ****    constant defining the CPU clock frequency (in Hertz).
 111:/usr/lib/avr/include/util/delay.h **** 
 112:/usr/lib/avr/include/util/delay.h ****    The maximal possible delay is 262.14 ms / F_CPU in MHz.
 113:/usr/lib/avr/include/util/delay.h **** 
 114:/usr/lib/avr/include/util/delay.h ****    When the user request delay which exceed the maximum possible one,
 115:/usr/lib/avr/include/util/delay.h ****    _delay_ms() provides a decreased resolution functionality. In this
 116:/usr/lib/avr/include/util/delay.h ****    mode _delay_ms() will work with a resolution of 1/10 ms, providing
 117:/usr/lib/avr/include/util/delay.h ****    delays up to 6.5535 seconds (independent from CPU frequency).  The
 118:/usr/lib/avr/include/util/delay.h ****    user will not be informed about decreased resolution.
 119:/usr/lib/avr/include/util/delay.h **** 
 120:/usr/lib/avr/include/util/delay.h ****    If the avr-gcc toolchain has __builtin_avr_delay_cycles(unsigned long)
 121:/usr/lib/avr/include/util/delay.h ****    support, maximal possible delay is 4294967.295 ms/ F_CPU in MHz. For
 122:/usr/lib/avr/include/util/delay.h ****    values greater than the maximal possible delay, overflows results in
 123:/usr/lib/avr/include/util/delay.h ****    no delay i.e., 0ms.
 124:/usr/lib/avr/include/util/delay.h **** 
 125:/usr/lib/avr/include/util/delay.h ****    Conversion of __us into clock cycles may not always result in integer.
 126:/usr/lib/avr/include/util/delay.h ****    By default, the clock cycles rounded up to next integer. This ensures that
 127:/usr/lib/avr/include/util/delay.h ****    the user gets atleast __us microseconds of delay.
 128:/usr/lib/avr/include/util/delay.h **** 
 129:/usr/lib/avr/include/util/delay.h ****    Alternatively, user can define __DELAY_ROUND_DOWN__ and __DELAY_ROUND_CLOSEST__
 130:/usr/lib/avr/include/util/delay.h ****    to round down and round to closest integer.
 131:/usr/lib/avr/include/util/delay.h **** 
 132:/usr/lib/avr/include/util/delay.h ****    Note: The new implementation of _delay_ms(double __ms) with 
 133:/usr/lib/avr/include/util/delay.h ****     __builtin_avr_delay_cycles(unsigned long) support is not backward compatible. 
 134:/usr/lib/avr/include/util/delay.h ****    User can define __DELAY_BACKWARD_COMPATIBLE__ to get a backward compatible delay.
 135:/usr/lib/avr/include/util/delay.h ****    Also, the backward compatible
 136:/usr/lib/avr/include/util/delay.h ****    algorithm will be chosen if the code is compiled in a <em>freestanding
 137:/usr/lib/avr/include/util/delay.h ****    environment</em> (GCC option \c -ffreestanding), as the math functions
 138:/usr/lib/avr/include/util/delay.h ****    required for rounding are not available to the compiler then.
 139:/usr/lib/avr/include/util/delay.h **** 
 140:/usr/lib/avr/include/util/delay.h ****  */
 141:/usr/lib/avr/include/util/delay.h **** void
 142:/usr/lib/avr/include/util/delay.h **** _delay_ms(double __ms)
 143:/usr/lib/avr/include/util/delay.h **** {
 144:/usr/lib/avr/include/util/delay.h **** 	double __tmp ; 
 145:/usr/lib/avr/include/util/delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \
 146:/usr/lib/avr/include/util/delay.h ****   !defined(__DELAY_BACKWARD_COMPATIBLE__) &&	   \
 147:/usr/lib/avr/include/util/delay.h ****   __STDC_HOSTED__
 148:/usr/lib/avr/include/util/delay.h **** 	uint32_t __ticks_dc;
 149:/usr/lib/avr/include/util/delay.h **** 	extern void __builtin_avr_delay_cycles(unsigned long);
 150:/usr/lib/avr/include/util/delay.h **** 	__tmp = ((F_CPU) / 1e3) * __ms;
 151:/usr/lib/avr/include/util/delay.h **** 
 152:/usr/lib/avr/include/util/delay.h **** 	#if defined(__DELAY_ROUND_DOWN__)
 153:/usr/lib/avr/include/util/delay.h **** 		__ticks_dc = (uint32_t)fabs(__tmp);
 154:/usr/lib/avr/include/util/delay.h **** 
 155:/usr/lib/avr/include/util/delay.h **** 	#elif defined(__DELAY_ROUND_CLOSEST__)
 156:/usr/lib/avr/include/util/delay.h **** 		__ticks_dc = (uint32_t)(fabs(__tmp)+0.5);
 157:/usr/lib/avr/include/util/delay.h **** 
 158:/usr/lib/avr/include/util/delay.h **** 	#else
 159:/usr/lib/avr/include/util/delay.h **** 		//round up by default
 160:/usr/lib/avr/include/util/delay.h **** 		__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
 161:/usr/lib/avr/include/util/delay.h **** 	#endif
 162:/usr/lib/avr/include/util/delay.h **** 
 163:/usr/lib/avr/include/util/delay.h **** 	__builtin_avr_delay_cycles(__ticks_dc);
 4421               	.LM350:
 4422 1aae E3EC      		ldi r30,lo8(2499)
 4423 1ab0 F9E0      		ldi r31,hi8(2499)
 4424 1ab2 3197      		1: sbiw r30,1
 4425 1ab4 01F4      		brne 1b
 4426 1ab6 00C0      		rjmp .
 4427 1ab8 0000      		nop
 4428               	.LBE42:
 4429               	.LBE41:
 4431               	.Ltext2:
1232:one_wire.c    **** 
1233:one_wire.c    ****           _delay_ms(delay);
1234:one_wire.c    **** 
1235:one_wire.c    ****             /* timeout check */
1236:one_wire.c    ****           if ( 0 == --count)
 4433               	.LM351:
 4434 1aba F1E0      		ldi r31,1
 4435 1abc CF1A      		sub r12,r31
 4436 1abe D108      		sbc r13,__zero_reg__
 4437 1ac0 E108      		sbc r14,__zero_reg__
 4438 1ac2 F108      		sbc r15,__zero_reg__
 4439 1ac4 C114      		cp r12,__zero_reg__
 4440 1ac6 D104      		cpc r13,__zero_reg__
 4441 1ac8 E104      		cpc r14,__zero_reg__
 4442 1aca F104      		cpc r15,__zero_reg__
 4443 1acc 01F4      		brne .+2
 4444 1ace 00C0      		rjmp .L216
1229:one_wire.c    ****       {
 4446               	.LM352:
 4447 1ad0 8823      		tst r24
 4448 1ad2 01F0      		breq .L218
 4449 1ad4 00C0      		rjmp .L236
 4450               	.L237:
1237:one_wire.c    ****           {
1238:one_wire.c    ****                timeout_flag = TRUE;
1239:one_wire.c    ****                break;
1240:one_wire.c    ****           }
1241:one_wire.c    ****       }
1242:one_wire.c    **** 
1243:one_wire.c    ****       /* prepare verbose output header */
1244:one_wire.c    **** 		if (FALSE != verbose)
1245:one_wire.c    **** 		{
1246:one_wire.c    **** 			int8_t oldKeyword = ptr_uartStruct->commandKeywordIndex;
1247:one_wire.c    **** 			ptr_uartStruct->commandKeywordIndex = commandKeyNumber_PARA;
1248:one_wire.c    **** 			createReceiveHeader(NULL, NULL, 0);
1249:one_wire.c    **** 			ptr_uartStruct->commandKeywordIndex = oldKeyword;
1250:one_wire.c    **** 
1251:one_wire.c    **** 			snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("%sparasitic devices "), uart_message_stri
1252:one_wire.c    **** 		}
1253:one_wire.c    **** 
1254:one_wire.c    ****       if ( TRUE == timeout_flag )
1255:one_wire.c    ****       {
1256:one_wire.c    ****          /* some devices are parasitic mode*/
1257:one_wire.c    **** 
1258:one_wire.c    ****          if ( FALSE != verbose)
1259:one_wire.c    ****          {
1260:one_wire.c    ****         	 snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("%sSOME on pins %#x "),
 4452               	.LM353:
 4453 1ad6 1F92      		push __zero_reg__
 4454 1ad8 7F92      		push r7
 4455 1ada A0E0      		ldi r26,lo8(uart_message_string)
 4456 1adc B0E0      		ldi r27,hi8(uart_message_string)
 4457 1ade BF93      		push r27
 4458 1ae0 AF93      		push r26
 4459 1ae2 A0E0      		ldi r26,lo8(__c.3340)
 4460 1ae4 B0E0      		ldi r27,hi8(__c.3340)
 4461 1ae6 BF93      		push r27
 4462 1ae8 AF93      		push r26
 4463 1aea 1F92      		push __zero_reg__
 4464 1aec 3F93      		push r19
 4465 1aee A0E0      		ldi r26,lo8(uart_message_string)
 4466 1af0 B0E0      		ldi r27,hi8(uart_message_string)
 4467 1af2 BF93      		push r27
 4468 1af4 AF93      		push r26
 4469 1af6 0E94 0000 		call snprintf_P
1261:one_wire.c    ****         			    uart_message_string, currentPins);
1262:one_wire.c    ****         	 UART0_Send_Message_String_p(NULL,0);
 4471               	.LM354:
 4472 1afa E091 0000 		lds r30,UART0_Send_Message_String_p
 4473 1afe F091 0000 		lds r31,UART0_Send_Message_String_p+1
 4474 1b02 60E0      		ldi r22,0
 4475 1b04 70E0      		ldi r23,0
 4476 1b06 80E0      		ldi r24,0
 4477 1b08 90E0      		ldi r25,0
 4478 1b0a 0995      		icall
 4479 1b0c 0FB6      		in __tmp_reg__,__SREG__
 4480 1b0e F894      		cli
 4481 1b10 DEBF      		out __SP_H__,r29
 4482 1b12 0FBE      		out __SREG__,__tmp_reg__
 4483 1b14 CDBF      		out __SP_L__,r28
 4484               	.L224:
1263:one_wire.c    ****          }
1264:one_wire.c    ****          /*set current pins in parasitic mode mask*/
1265:one_wire.c    ****          owiTemperatureParasiticModeMask |= (currentPins & 0xF);
 4486               	.LM355:
 4487 1b16 972D      		mov r25,r7
 4488 1b18 9F70      		andi r25,lo8(15)
 4489 1b1a 8091 0000 		lds r24,owiTemperatureParasiticModeMask
 4490 1b1e 892B      		or r24,r25
 4491 1b20 8093 0000 		sts owiTemperatureParasiticModeMask,r24
1266:one_wire.c    ****          printDebug_p(debugLevelEventDebug, debugSystemOWITemperatures, __LINE__, filename, PSTR("p
 4493               	.LM356:
 4494 1b24 1F92      		push __zero_reg__
 4495 1b26 7F92      		push r7
 4496 1b28 A0E0      		ldi r26,lo8(__c.3342)
 4497 1b2a B0E0      		ldi r27,hi8(__c.3342)
 4498 1b2c BF93      		push r27
 4499 1b2e AF93      		push r26
 4500 1b30 1F93      		push r17
 4501 1b32 0F93      		push r16
 4502 1b34 6F92      		push r6
 4503 1b36 82EF      		ldi r24,lo8(-14)
 4504               	.L234:
1267:one_wire.c    ****       }
1268:one_wire.c    ****       else
1269:one_wire.c    ****       {
1270:one_wire.c    ****          //owiTemperatureParasiticModeMask |= pins;
1271:one_wire.c    ****          if ( FALSE != verbose)
1272:one_wire.c    ****          {
1273:one_wire.c    ****         	 snprintf_P(uart_message_string, BUFFER_SIZE - 1, PSTR("%sNONE on pins %#x (pulled HIGH wi
1274:one_wire.c    ****         			    uart_message_string, currentPins, (maxcount - count) * delay);
1275:one_wire.c    ****         	 UART0_Send_Message_String_p(NULL,0);
1276:one_wire.c    ****          }
1277:one_wire.c    ****          /*set current pins in parasitic mode mask*/
1278:one_wire.c    ****          owiTemperatureParasiticModeMask &= !(currentPins & 0xF);
1279:one_wire.c    ****           printDebug_p(debugLevelEventDebug, debugSystemOWITemperatures, __LINE__, filename, PSTR("
 4506               	.LM357:
 4507 1b38 8F93      		push r24
 4508 1b3a 1F92      		push __zero_reg__
 4509 1b3c 1F92      		push __zero_reg__
 4510 1b3e 1F92      		push __zero_reg__
 4511 1b40 89E0      		ldi r24,lo8(9)
 4512 1b42 8F93      		push r24
 4513 1b44 82E0      		ldi r24,lo8(2)
 4514 1b46 8F93      		push r24
 4515 1b48 E091 0000 		lds r30,printDebug_p
 4516 1b4c F091 0000 		lds r31,printDebug_p+1
 4517               	.L235:
 4518 1b50 0995      		icall
 4519 1b52 0FB6      		in __tmp_reg__,__SREG__
 4520 1b54 F894      		cli
 4521 1b56 DEBF      		out __SP_H__,r29
 4522 1b58 0FBE      		out __SREG__,__tmp_reg__
 4523 1b5a CDBF      		out __SP_L__,r28
 4524               	.LBE40:
1193:one_wire.c    ****    {
 4526               	.LM358:
 4527 1b5c 90E0      		ldi r25,lo8(BUSES+6)
 4528 1b5e 2916      		cp r2,r25
 4529 1b60 90E0      		ldi r25,hi8(BUSES+6)
 4530 1b62 3906      		cpc r3,r25
 4531 1b64 01F0      		breq .+2
 4532 1b66 00C0      		rjmp .L223
 4533               	/* epilogue start */
 4534               	.LBE39:
1280:one_wire.c    ****       }
1281:one_wire.c    ****    }
1282:one_wire.c    **** }
 4536               	.LM359:
 4537 1b68 0F90      		pop __tmp_reg__
 4538 1b6a 0F90      		pop __tmp_reg__
 4539 1b6c DF91      		pop r29
 4540 1b6e CF91      		pop r28
 4541 1b70 1F91      		pop r17
 4542 1b72 0F91      		pop r16
 4543 1b74 FF90      		pop r15
 4544 1b76 EF90      		pop r14
 4545 1b78 DF90      		pop r13
 4546 1b7a CF90      		pop r12
 4547 1b7c BF90      		pop r11
 4548 1b7e AF90      		pop r10
 4549 1b80 9F90      		pop r9
 4550 1b82 8F90      		pop r8
 4551 1b84 7F90      		pop r7
 4552 1b86 6F90      		pop r6
 4553 1b88 5F90      		pop r5
 4554 1b8a 4F90      		pop r4
 4555 1b8c 3F90      		pop r3
 4556 1b8e 2F90      		pop r2
 4557 1b90 0895      		ret
 4558               	.L236:
 4559               	.LBB45:
 4560               	.LBB44:
1244:one_wire.c    **** 		{
 4562               	.LM360:
 4563 1b92 5520      		tst r5
 4564 1b94 01F4      		brne .+2
 4565 1b96 00C0      		rjmp .L226
1225:one_wire.c    ****       uint8_t owiReadBit = 0;
 4567               	.LM361:
 4568 1b98 20E0      		ldi r18,0
 4569 1b9a 00C0      		rjmp .L225
 4570               	.L216:
1244:one_wire.c    **** 		{
 4572               	.LM362:
 4573 1b9c 5520      		tst r5
 4574 1b9e 01F4      		brne .+2
 4575 1ba0 00C0      		rjmp .L224
1238:one_wire.c    ****                break;
 4577               	.LM363:
 4578 1ba2 21E0      		ldi r18,lo8(1)
 4579               	.L225:
 4580               	.LBB43:
1246:one_wire.c    **** 			ptr_uartStruct->commandKeywordIndex = commandKeyNumber_PARA;
 4582               	.LM364:
 4583 1ba4 E091 0000 		lds r30,ptr_uartStruct
 4584 1ba8 F091 0000 		lds r31,ptr_uartStruct+1
 4585 1bac 328D      		ldd r19,Z+26
1247:one_wire.c    **** 			createReceiveHeader(NULL, NULL, 0);
 4587               	.LM365:
 4588 1bae 8DE1      		ldi r24,lo8(29)
 4589 1bb0 828F      		std Z+26,r24
1248:one_wire.c    **** 			ptr_uartStruct->commandKeywordIndex = oldKeyword;
 4591               	.LM366:
 4592 1bb2 40E0      		ldi r20,0
 4593 1bb4 50E0      		ldi r21,0
 4594 1bb6 60E0      		ldi r22,0
 4595 1bb8 70E0      		ldi r23,0
 4596 1bba 80E0      		ldi r24,0
 4597 1bbc 90E0      		ldi r25,0
 4598 1bbe 2A83      		std Y+2,r18
 4599 1bc0 3983      		std Y+1,r19
 4600 1bc2 0E94 0000 		call createReceiveHeader
1249:one_wire.c    **** 
 4602               	.LM367:
 4603 1bc6 E091 0000 		lds r30,ptr_uartStruct
 4604 1bca F091 0000 		lds r31,ptr_uartStruct+1
 4605 1bce 3981      		ldd r19,Y+1
 4606 1bd0 328F      		std Z+26,r19
1251:one_wire.c    **** 		}
 4608               	.LM368:
 4609 1bd2 A0E0      		ldi r26,lo8(uart_message_string)
 4610 1bd4 B0E0      		ldi r27,hi8(uart_message_string)
 4611 1bd6 BF93      		push r27
 4612 1bd8 AF93      		push r26
 4613 1bda A0E0      		ldi r26,lo8(__c.3338)
 4614 1bdc B0E0      		ldi r27,hi8(__c.3338)
 4615 1bde BF93      		push r27
 4616 1be0 AF93      		push r26
 4617 1be2 1F92      		push __zero_reg__
 4618 1be4 3BE8      		ldi r19,lo8(-117)
 4619 1be6 3F93      		push r19
 4620 1be8 A0E0      		ldi r26,lo8(uart_message_string)
 4621 1bea B0E0      		ldi r27,hi8(uart_message_string)
 4622 1bec BF93      		push r27
 4623 1bee AF93      		push r26
 4624 1bf0 3983      		std Y+1,r19
 4625 1bf2 0E94 0000 		call snprintf_P
 4626               	.LBE43:
1254:one_wire.c    ****       {
 4628               	.LM369:
 4629 1bf6 0FB6      		in __tmp_reg__,__SREG__
 4630 1bf8 F894      		cli
 4631 1bfa DEBF      		out __SP_H__,r29
 4632 1bfc 0FBE      		out __SREG__,__tmp_reg__
 4633 1bfe CDBF      		out __SP_L__,r28
 4634 1c00 2A81      		ldd r18,Y+2
 4635 1c02 3981      		ldd r19,Y+1
 4636 1c04 2130      		cpi r18,lo8(1)
 4637 1c06 01F4      		brne .+2
 4638 1c08 00C0      		rjmp .L237
1274:one_wire.c    ****         	 UART0_Send_Message_String_p(NULL,0);
 4640               	.LM370:
 4641 1c0a D501      		movw r26,r10
 4642 1c0c C401      		movw r24,r8
 4643 1c0e 8C19      		sub r24,r12
 4644 1c10 9D09      		sbc r25,r13
 4645 1c12 AE09      		sbc r26,r14
 4646 1c14 BF09      		sbc r27,r15
1273:one_wire.c    ****         			    uart_message_string, currentPins, (maxcount - count) * delay);
 4648               	.LM371:
 4649 1c16 BF93      		push r27
 4650 1c18 AF93      		push r26
 4651 1c1a 9F93      		push r25
 4652 1c1c 8F93      		push r24
 4653 1c1e 1F92      		push __zero_reg__
 4654 1c20 7F92      		push r7
 4655 1c22 A0E0      		ldi r26,lo8(uart_message_string)
 4656 1c24 B0E0      		ldi r27,hi8(uart_message_string)
 4657 1c26 BF93      		push r27
 4658 1c28 AF93      		push r26
 4659 1c2a A0E0      		ldi r26,lo8(__c.3344)
 4660 1c2c B0E0      		ldi r27,hi8(__c.3344)
 4661 1c2e BF93      		push r27
 4662 1c30 AF93      		push r26
 4663 1c32 1F92      		push __zero_reg__
 4664 1c34 3F93      		push r19
 4665 1c36 A0E0      		ldi r26,lo8(uart_message_string)
 4666 1c38 B0E0      		ldi r27,hi8(uart_message_string)
 4667 1c3a BF93      		push r27
 4668 1c3c AF93      		push r26
 4669 1c3e 0E94 0000 		call snprintf_P
1275:one_wire.c    ****          }
 4671               	.LM372:
 4672 1c42 E091 0000 		lds r30,UART0_Send_Message_String_p
 4673 1c46 F091 0000 		lds r31,UART0_Send_Message_String_p+1
 4674 1c4a 60E0      		ldi r22,0
 4675 1c4c 70E0      		ldi r23,0
 4676 1c4e 80E0      		ldi r24,0
 4677 1c50 90E0      		ldi r25,0
 4678 1c52 0995      		icall
 4679 1c54 0FB6      		in __tmp_reg__,__SREG__
 4680 1c56 F894      		cli
 4681 1c58 DEBF      		out __SP_H__,r29
 4682 1c5a 0FBE      		out __SREG__,__tmp_reg__
 4683 1c5c CDBF      		out __SP_L__,r28
 4684               	.L226:
1278:one_wire.c    ****           printDebug_p(debugLevelEventDebug, debugSystemOWITemperatures, __LINE__, filename, PSTR("
 4686               	.LM373:
 4687 1c5e 91E0      		ldi r25,lo8(1)
 4688 1c60 872D      		mov r24,r7
 4689 1c62 8F70      		andi r24,lo8(15)
 4690 1c64 01F0      		breq .L221
 4691 1c66 90E0      		ldi r25,0
 4692               	.L221:
 4693 1c68 8091 0000 		lds r24,owiTemperatureParasiticModeMask
 4694 1c6c 8923      		and r24,r25
 4695 1c6e 8093 0000 		sts owiTemperatureParasiticModeMask,r24
1279:one_wire.c    ****       }
 4697               	.LM374:
 4698 1c72 1F92      		push __zero_reg__
 4699 1c74 7F92      		push r7
 4700 1c76 A0E0      		ldi r26,lo8(__c.3346)
 4701 1c78 B0E0      		ldi r27,hi8(__c.3346)
 4702 1c7a BF93      		push r27
 4703 1c7c AF93      		push r26
 4704 1c7e 1F93      		push r17
 4705 1c80 0F93      		push r16
 4706 1c82 6F92      		push r6
 4707 1c84 8FEF      		ldi r24,lo8(-1)
 4708 1c86 00C0      		rjmp .L234
 4709               	.LBE44:
 4710               	.LBE45:
 4727               	.Lscope15:
 4732               	.global	vOwiComputeCRC16
 4734               	vOwiComputeCRC16:
1283:one_wire.c    **** 
1284:one_wire.c    **** /*
1285:one_wire.c    ****  * send variable (nArgs) number of bytes to bus_pattern
1286:one_wire.c    ****  * 		note:
1287:one_wire.c    ****  * 				due to the limitation of variable argument lists,
1288:one_wire.c    ****  * 			  	bytes are of type int masked down to (byte & 0xFF)
1289:one_wire.c    ****  * 			  	and converted to unsigned char
1290:one_wire.c    ****  * compute CRC16 of the whole data stream and
1291:one_wire.c    ****  * compare with received CRC16.
1292:one_wire.c    ****  *
1293:one_wire.c    ****  * In case of mismatch:
1294:one_wire.c    ****  * 		repeat generate via DetectPresence a reset pulse and repeat OWI_SEND_BYTE_MAX_TRIALS times
1295:one_wire.c    ****  *
1296:one_wire.c    ****  * return 0 on success
1297:one_wire.c    ****  * return 1 else
1298:one_wire.c    ****  */
1299:one_wire.c    **** uint8_t owiSendBytesAndCheckCRC16(unsigned char bus_pattern, uint8_t nArgs, ... )
1300:one_wire.c    **** {
1301:one_wire.c    **** 	uint8_t arg = 0;
1302:one_wire.c    **** 	uint16_t receiveCRC16 = 0;
1303:one_wire.c    **** 	uint16_t computeCRC16 = 0; //or 0xFFFF ?
1304:one_wire.c    **** 	va_list argumentPointers;
1305:one_wire.c    **** 
1306:one_wire.c    **** 	receiveCRC16 = 0;
1307:one_wire.c    **** 	computeCRC16 = 0;
1308:one_wire.c    **** 
1309:one_wire.c    **** 	// compute expected CRC16
1310:one_wire.c    **** 	printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("CRC16 computing input
1311:one_wire.c    **** 
1312:one_wire.c    **** 	va_start(argumentPointers, nArgs);
1313:one_wire.c    **** 	computeCRC16 = vOwiComputeCRC16(computeCRC16, nArgs, argumentPointers);
1314:one_wire.c    **** 	va_end(argumentPointers);
1315:one_wire.c    **** 
1316:one_wire.c    **** 	// send bytes
1317:one_wire.c    **** 	va_start(argumentPointers, nArgs);
1318:one_wire.c    **** 	for (uint8_t argCounter = 0; argCounter < nArgs; argCounter++)
1319:one_wire.c    **** 	{
1320:one_wire.c    **** 		arg = va_arg(argumentPointers, int);
1321:one_wire.c    **** 		OWI_SendByte((unsigned char)(arg & 0xFF), bus_pattern);
1322:one_wire.c    **** 	}
1323:one_wire.c    **** 	va_end(argumentPointers);
1324:one_wire.c    **** 
1325:one_wire.c    **** 	receiveCRC16 = OWI_ReceiveWord(bus_pattern);           /*IMPORTANT AFTER EACH 'MEMORY WRITE' OPERA
1326:one_wire.c    **** 
1327:one_wire.c    **** 	if ( computeCRC16 != receiveCRC16 )
1328:one_wire.c    **** 	{
1329:one_wire.c    **** 		OWI_DetectPresence(bus_pattern); /*the "DetectPresence" function includes sending a Reset Pulse*/
1330:one_wire.c    **** 
1331:one_wire.c    **** 		printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("CRC16 check send byt
1332:one_wire.c    **** 
1333:one_wire.c    **** 		return RESULT_FAILURE;
1334:one_wire.c    **** 	}
1335:one_wire.c    **** 	else
1336:one_wire.c    **** 	{
1337:one_wire.c    **** 		return RESULT_OK;
1338:one_wire.c    **** 	}
1339:one_wire.c    **** }
1340:one_wire.c    **** 
1341:one_wire.c    **** uint16_t owiComputeCRC16(uint16_t seed, uint8_t nArgs, ...)
1342:one_wire.c    **** {
1343:one_wire.c    **** 	uint16_t computeCRC16 = 0;
1344:one_wire.c    **** 	va_list argumentPointers;
1345:one_wire.c    **** 
1346:one_wire.c    **** 	va_start (argumentPointers, nArgs);
1347:one_wire.c    **** 	computeCRC16 = vOwiComputeCRC16(seed, nArgs, argumentPointers);
1348:one_wire.c    **** 	va_end(argumentPointers);
1349:one_wire.c    **** 
1350:one_wire.c    **** 	return computeCRC16;
1351:one_wire.c    **** }
1352:one_wire.c    **** 
1353:one_wire.c    **** uint16_t vOwiComputeCRC16(uint16_t seed, uint8_t nArgs, va_list argumentPointers)
1354:one_wire.c    **** {
 4736               	.LM375:
 4737               	.LFBB16:
 4738 1c88 2F92      		push r2
 4739 1c8a 3F92      		push r3
 4740 1c8c 5F92      		push r5
 4741 1c8e 6F92      		push r6
 4742 1c90 7F92      		push r7
 4743 1c92 8F92      		push r8
 4744 1c94 9F92      		push r9
 4745 1c96 AF92      		push r10
 4746 1c98 BF92      		push r11
 4747 1c9a CF92      		push r12
 4748 1c9c DF92      		push r13
 4749 1c9e EF92      		push r14
 4750 1ca0 FF92      		push r15
 4751 1ca2 0F93      		push r16
 4752 1ca4 1F93      		push r17
 4753 1ca6 CF93      		push r28
 4754 1ca8 DF93      		push r29
 4755 1caa 00D0      		rcall .
 4756 1cac CDB7      		in r28,__SP_L__
 4757 1cae DEB7      		in r29,__SP_H__
 4758               	/* prologue: function */
 4759               	/* frame size = 2 */
 4760               	/* stack size = 19 */
 4761               	.L__stack_usage = 19
 4762 1cb0 562E      		mov r5,r22
 4763 1cb2 5A01      		movw r10,r20
 4764               	.LBB46:
1355:one_wire.c    **** 	uint16_t computeCRC16 = seed;
1356:one_wire.c    **** 	uint8_t arg = 0;
1357:one_wire.c    **** 
1358:one_wire.c    **** 	computeCRC16 = 0;
1359:one_wire.c    **** 	for (uint8_t argCounter = 0; argCounter < nArgs; argCounter++)
 4766               	.LM376:
 4767 1cb4 212C      		mov r2,__zero_reg__
 4768 1cb6 312C      		mov r3,__zero_reg__
 4769               	.LBE46:
1358:one_wire.c    **** 	for (uint8_t argCounter = 0; argCounter < nArgs; argCounter++)
 4771               	.LM377:
 4772 1cb8 80E0      		ldi r24,0
 4773 1cba 90E0      		ldi r25,0
 4774               	.LBB47:
1360:one_wire.c    **** 	{
1361:one_wire.c    **** 		arg = va_arg(argumentPointers, int);
1362:one_wire.c    **** 		computeCRC16 = OWI_ComputeCRC16((unsigned char)(arg & 0xFF), computeCRC16);
1363:one_wire.c    **** 		printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("CRC16 computing no %
 4776               	.LM378:
 4777 1cbc 00E0      		ldi r16,lo8(__c.3381)
 4778 1cbe 10E0      		ldi r17,hi8(__c.3381)
 4779 1cc0 60E0      		ldi r22,lo8(filename)
 4780 1cc2 E62E      		mov r14,r22
 4781 1cc4 60E0      		ldi r22,hi8(filename)
 4782 1cc6 F62E      		mov r15,r22
 4783 1cc8 75E0      		ldi r23,lo8(5)
 4784 1cca 972E      		mov r9,r23
 4785 1ccc E3E5      		ldi r30,lo8(83)
 4786 1cce 8E2E      		mov r8,r30
 4787 1cd0 F8E0      		ldi r31,lo8(8)
 4788 1cd2 7F2E      		mov r7,r31
 4789 1cd4 A2E0      		ldi r26,lo8(2)
 4790 1cd6 6A2E      		mov r6,r26
 4791               	.L239:
1359:one_wire.c    **** 	{
 4793               	.LM379:
 4794 1cd8 2514      		cp r2,r5
 4795 1cda 00F4      		brsh .L241
1361:one_wire.c    **** 		computeCRC16 = OWI_ComputeCRC16((unsigned char)(arg & 0xFF), computeCRC16);
 4797               	.LM380:
 4798 1cdc D501      		movw r26,r10
 4799 1cde CD90      		ld r12,X+
 4800 1ce0 DD90      		ld r13,X+
 4801 1ce2 5D01      		movw r10,r26
1362:one_wire.c    **** 		printDebug_p(debugLevelEventDebug, debugSystemOWI, __LINE__, filename, PSTR("CRC16 computing no %
 4803               	.LM381:
 4804 1ce4 BC01      		movw r22,r24
 4805 1ce6 8C2D      		mov r24,r12
 4806 1ce8 0E94 0000 		call OWI_ComputeCRC16
 4808               	.LM382:
 4809 1cec DD24      		clr r13
 4810 1cee DF92      		push r13
 4811 1cf0 CF92      		push r12
 4812 1cf2 3F92      		push r3
 4813 1cf4 2F92      		push r2
 4814 1cf6 1F93      		push r17
 4815 1cf8 0F93      		push r16
 4816 1cfa FF92      		push r15
 4817 1cfc EF92      		push r14
 4818 1cfe 9F92      		push r9
 4819 1d00 8F92      		push r8
 4820 1d02 1F92      		push __zero_reg__
 4821 1d04 1F92      		push __zero_reg__
 4822 1d06 1F92      		push __zero_reg__
 4823 1d08 7F92      		push r7
 4824 1d0a 6F92      		push r6
 4825 1d0c E091 0000 		lds r30,printDebug_p
 4826 1d10 F091 0000 		lds r31,printDebug_p+1
 4827 1d14 8983      		std Y+1,r24
 4828 1d16 9A83      		std Y+2,r25
 4829 1d18 0995      		icall
 4830 1d1a BFEF      		ldi r27,-1
 4831 1d1c 2B1A      		sub r2,r27
 4832 1d1e 3B0A      		sbc r3,r27
 4833 1d20 0FB6      		in __tmp_reg__,__SREG__
 4834 1d22 F894      		cli
 4835 1d24 DEBF      		out __SP_H__,r29
 4836 1d26 0FBE      		out __SREG__,__tmp_reg__
 4837 1d28 CDBF      		out __SP_L__,r28
 4838 1d2a 9A81      		ldd r25,Y+2
 4839 1d2c 8981      		ldd r24,Y+1
 4840 1d2e 00C0      		rjmp .L239
 4841               	.L241:
 4842               	/* epilogue start */
 4843               	.LBE47:
1364:one_wire.c    **** 	}
1365:one_wire.c    **** 
1366:one_wire.c    **** 	return computeCRC16;
1367:one_wire.c    **** }
 4845               	.LM383:
 4846 1d30 0F90      		pop __tmp_reg__
 4847 1d32 0F90      		pop __tmp_reg__
 4848 1d34 DF91      		pop r29
 4849 1d36 CF91      		pop r28
 4850 1d38 1F91      		pop r17
 4851 1d3a 0F91      		pop r16
 4852 1d3c FF90      		pop r15
 4853 1d3e EF90      		pop r14
 4854 1d40 DF90      		pop r13
 4855 1d42 CF90      		pop r12
 4856 1d44 BF90      		pop r11
 4857 1d46 AF90      		pop r10
 4858 1d48 9F90      		pop r9
 4859 1d4a 8F90      		pop r8
 4860 1d4c 7F90      		pop r7
 4861 1d4e 6F90      		pop r6
 4862 1d50 5F90      		pop r5
 4863 1d52 3F90      		pop r3
 4864 1d54 2F90      		pop r2
 4865 1d56 0895      		ret
 4870               	.Lscope16:
 4874               	.global	owiSendBytesAndCheckCRC16
 4876               	owiSendBytesAndCheckCRC16:
1300:one_wire.c    **** 	uint8_t arg = 0;
 4878               	.LM384:
 4879               	.LFBB17:
 4880 1d58 BF92      		push r11
 4881 1d5a CF92      		push r12
 4882 1d5c DF92      		push r13
 4883 1d5e EF92      		push r14
 4884 1d60 FF92      		push r15
 4885 1d62 0F93      		push r16
 4886 1d64 1F93      		push r17
 4887 1d66 CF93      		push r28
 4888 1d68 DF93      		push r29
 4889 1d6a CDB7      		in r28,__SP_L__
 4890 1d6c DEB7      		in r29,__SP_H__
 4891               	/* prologue: function */
 4892               	/* frame size = 0 */
 4893               	/* stack size = 9 */
 4894               	.L__stack_usage = 9
 4895 1d6e DC84      		ldd r13,Y+12
 4896 1d70 BD84      		ldd r11,Y+13
1310:one_wire.c    **** 
 4898               	.LM385:
 4899 1d72 20E0      		ldi r18,lo8(__c.3359)
 4900 1d74 30E0      		ldi r19,hi8(__c.3359)
 4901 1d76 3F93      		push r19
 4902 1d78 2F93      		push r18
 4903 1d7a 20E0      		ldi r18,lo8(filename)
 4904 1d7c 30E0      		ldi r19,hi8(filename)
 4905 1d7e 3F93      		push r19
 4906 1d80 2F93      		push r18
 4907 1d82 85E0      		ldi r24,lo8(5)
 4908 1d84 8F93      		push r24
 4909 1d86 8EE1      		ldi r24,lo8(30)
 4910 1d88 8F93      		push r24
 4911 1d8a 1F92      		push __zero_reg__
 4912 1d8c 1F92      		push __zero_reg__
 4913 1d8e 1F92      		push __zero_reg__
 4914 1d90 88E0      		ldi r24,lo8(8)
 4915 1d92 8F93      		push r24
 4916 1d94 82E0      		ldi r24,lo8(2)
 4917 1d96 8F93      		push r24
 4918 1d98 E091 0000 		lds r30,printDebug_p
 4919 1d9c F091 0000 		lds r31,printDebug_p+1
 4920 1da0 0995      		icall
1313:one_wire.c    **** 	va_end(argumentPointers);
 4922               	.LM386:
 4923 1da2 AE01      		movw r20,r28
 4924 1da4 425F      		subi r20,-14
 4925 1da6 5F4F      		sbci r21,-1
 4926 1da8 6B2D      		mov r22,r11
 4927 1daa 80E0      		ldi r24,0
 4928 1dac 90E0      		ldi r25,0
 4929 1dae 0E94 0000 		call vOwiComputeCRC16
 4930 1db2 8C01      		movw r16,r24
1317:one_wire.c    **** 	for (uint8_t argCounter = 0; argCounter < nArgs; argCounter++)
 4932               	.LM387:
 4933 1db4 FE01      		movw r30,r28
 4934 1db6 3E96      		adiw r30,14
 4935               	.LBB48:
1318:one_wire.c    **** 	{
 4937               	.LM388:
 4938 1db8 0FB6      		in __tmp_reg__,__SREG__
 4939 1dba F894      		cli
 4940 1dbc DEBF      		out __SP_H__,r29
 4941 1dbe 0FBE      		out __SREG__,__tmp_reg__
 4942 1dc0 CDBF      		out __SP_L__,r28
 4943 1dc2 C12C      		mov r12,__zero_reg__
 4944               	.L243:
1318:one_wire.c    **** 	{
 4946               	.LM389:
 4947 1dc4 CB14      		cp r12,r11
 4948 1dc6 01F0      		breq .L247
1320:one_wire.c    **** 		OWI_SendByte((unsigned char)(arg & 0xFF), bus_pattern);
 4950               	.LM390:
 4951 1dc8 7F01      		movw r14,r30
 4952 1dca 92E0      		ldi r25,2
 4953 1dcc E90E      		add r14,r25
 4954 1dce F11C      		adc r15,__zero_reg__
1321:one_wire.c    **** 	}
 4956               	.LM391:
 4957 1dd0 6D2D      		mov r22,r13
 4958 1dd2 8081      		ld r24,Z
 4959 1dd4 0E94 0000 		call OWI_SendByte
1318:one_wire.c    **** 	{
 4961               	.LM392:
 4962 1dd8 C394      		inc r12
1320:one_wire.c    **** 		OWI_SendByte((unsigned char)(arg & 0xFF), bus_pattern);
 4964               	.LM393:
 4965 1dda F701      		movw r30,r14
 4966 1ddc 00C0      		rjmp .L243
 4967               	.L247:
 4968               	.LBE48:
1325:one_wire.c    **** 
 4970               	.LM394:
 4971 1dde 8D2D      		mov r24,r13
 4972 1de0 0E94 0000 		call OWI_ReceiveWord
 4973 1de4 7C01      		movw r14,r24
1327:one_wire.c    **** 	{
 4975               	.LM395:
 4976 1de6 0817      		cp r16,r24
 4977 1de8 1907      		cpc r17,r25
 4978 1dea 01F0      		breq .L246
1329:one_wire.c    **** 
 4980               	.LM396:
 4981 1dec 8D2D      		mov r24,r13
 4982 1dee 0E94 0000 		call OWI_DetectPresence
1331:one_wire.c    **** 
 4984               	.LM397:
 4985 1df2 FF92      		push r15
 4986 1df4 EF92      		push r14
 4987 1df6 1F93      		push r17
 4988 1df8 0F93      		push r16
 4989 1dfa 80E0      		ldi r24,lo8(__c.3365)
 4990 1dfc 90E0      		ldi r25,hi8(__c.3365)
 4991 1dfe 9F93      		push r25
 4992 1e00 8F93      		push r24
 4993 1e02 80E0      		ldi r24,lo8(filename)
 4994 1e04 90E0      		ldi r25,hi8(filename)
 4995 1e06 9F93      		push r25
 4996 1e08 8F93      		push r24
 4997 1e0a 85E0      		ldi r24,lo8(5)
 4998 1e0c 8F93      		push r24
 4999 1e0e 83E3      		ldi r24,lo8(51)
 5000 1e10 8F93      		push r24
 5001 1e12 1F92      		push __zero_reg__
 5002 1e14 1F92      		push __zero_reg__
 5003 1e16 1F92      		push __zero_reg__
 5004 1e18 88E0      		ldi r24,lo8(8)
 5005 1e1a 8F93      		push r24
 5006 1e1c 82E0      		ldi r24,lo8(2)
 5007 1e1e 8F93      		push r24
 5008 1e20 E091 0000 		lds r30,printDebug_p
 5009 1e24 F091 0000 		lds r31,printDebug_p+1
 5010 1e28 0995      		icall
1333:one_wire.c    **** 	}
 5012               	.LM398:
 5013 1e2a 0FB6      		in __tmp_reg__,__SREG__
 5014 1e2c F894      		cli
 5015 1e2e DEBF      		out __SP_H__,r29
 5016 1e30 0FBE      		out __SREG__,__tmp_reg__
 5017 1e32 CDBF      		out __SP_L__,r28
 5018 1e34 81E0      		ldi r24,lo8(1)
 5019 1e36 00C0      		rjmp .L245
 5020               	.L246:
1337:one_wire.c    **** 	}
 5022               	.LM399:
 5023 1e38 80E0      		ldi r24,0
 5024               	.L245:
 5025               	/* epilogue start */
1339:one_wire.c    **** 
 5027               	.LM400:
 5028 1e3a DF91      		pop r29
 5029 1e3c CF91      		pop r28
 5030 1e3e 1F91      		pop r17
 5031 1e40 0F91      		pop r16
 5032 1e42 FF90      		pop r15
 5033 1e44 EF90      		pop r14
 5034 1e46 DF90      		pop r13
 5035 1e48 CF90      		pop r12
 5036 1e4a BF90      		pop r11
 5037 1e4c 0895      		ret
 5048               	.Lscope17:
 5052               	.global	owiComputeCRC16
 5054               	owiComputeCRC16:
1342:one_wire.c    **** 	uint16_t computeCRC16 = 0;
 5056               	.LM401:
 5057               	.LFBB18:
 5058 1e4e CF93      		push r28
 5059 1e50 DF93      		push r29
 5060 1e52 CDB7      		in r28,__SP_L__
 5061 1e54 DEB7      		in r29,__SP_H__
 5062               	/* prologue: function */
 5063               	/* frame size = 0 */
 5064               	/* stack size = 2 */
 5065               	.L__stack_usage = 2
1347:one_wire.c    **** 	va_end(argumentPointers);
 5067               	.LM402:
 5068 1e56 AE01      		movw r20,r28
 5069 1e58 485F      		subi r20,-8
 5070 1e5a 5F4F      		sbci r21,-1
 5071 1e5c 6F81      		ldd r22,Y+7
 5072 1e5e 8D81      		ldd r24,Y+5
 5073 1e60 9E81      		ldd r25,Y+6
 5074 1e62 0E94 0000 		call vOwiComputeCRC16
 5075               	/* epilogue start */
1351:one_wire.c    **** 
 5077               	.LM403:
 5078 1e66 DF91      		pop r29
 5079 1e68 CF91      		pop r28
 5080 1e6a 0895      		ret
 5082               	.Lscope18:
 5083               		.section	.progmem.data,"a",@progbits
 5086               	__c.3381:
 5087 0000 4352 4331 		.string	"CRC16 computing no %i: %#x"
 5087      3620 636F 
 5087      6D70 7574 
 5087      696E 6720 
 5087      6E6F 2025 
 5090               	__c.3365:
 5091 001b 4352 4331 		.string	"CRC16 check send byte failed - computed %#x != received %#x"
 5091      3620 6368 
 5091      6563 6B20 
 5091      7365 6E64 
 5091      2062 7974 
 5094               	__c.3359:
 5095 0057 4352 4331 		.string	"CRC16 computing inputs:"
 5095      3620 636F 
 5095      6D70 7574 
 5095      696E 6720 
 5095      696E 7075 
 5098               	__c.3346:
 5099 006f 7061 7261 		.string	"parasitic devices NONE on pins %#x "
 5099      7369 7469 
 5099      6320 6465 
 5099      7669 6365 
 5099      7320 4E4F 
 5102               	__c.3344:
 5103 0093 2573 4E4F 		.string	"%sNONE on pins %#x (pulled HIGH within %i ms)"
 5103      4E45 206F 
 5103      6E20 7069 
 5103      6E73 2025 
 5103      2378 2028 
 5106               	__c.3342:
 5107 00c1 7061 7261 		.string	"parasitic devices SOME on pins %#x "
 5107      7369 7469 
 5107      6320 6465 
 5107      7669 6365 
 5107      7320 534F 
 5110               	__c.3340:
 5111 00e5 2573 534F 		.string	"%sSOME on pins %#x "
 5111      4D45 206F 
 5111      6E20 7069 
 5111      6E73 2025 
 5111      2378 2000 
 5114               	__c.3338:
 5115 00f9 2573 7061 		.string	"%sparasitic devices "
 5115      7261 7369 
 5115      7469 6320 
 5115      6465 7669 
 5115      6365 7320 
 5118               	__c.3327:
 5119 010e 736F 6D65 		.string	"some devices present (pin pattern %#x)"
 5119      2064 6576 
 5119      6963 6573 
 5119      2070 7265 
 5119      7365 6E74 
 5122               	__c.3324:
 5123 0135 6E6F 2044 		.string	"no Device present (pin pattern %#x)"
 5123      6576 6963 
 5123      6520 7072 
 5123      6573 656E 
 5123      7420 2870 
 5126               	__c.3315:
 5127 0159 6669 6E61 		.string	"final common pins: %#x"
 5127      6C20 636F 
 5127      6D6D 6F6E 
 5127      2070 696E 
 5127      733A 2025 
 5130               	__c.3310:
 5131 0170 6275 733A 		.string	"bus: %i combining %#x to common set of pins %#x)"
 5131      2025 6920 
 5131      636F 6D62 
 5131      696E 696E 
 5131      6720 2523 
 5134               	__c.3307:
 5135 01a1 6275 733A 		.string	"bus: checkBusAndDeviceActivityMasks failed"
 5135      2063 6865 
 5135      636B 4275 
 5135      7341 6E64 
 5135      4465 7669 
 5138               	__c.3304:
 5139 01cc 6275 733A 		.string	"bus: owiDeviceMask = %#x"
 5139      206F 7769 
 5139      4465 7669 
 5139      6365 4D61 
 5139      736B 203D 
 5142               	__c.3296:
 5143 01e5 6368 6563 		.string	"checkBusAndDeviceActivityMasks bus: %i passed all criteria)"
 5143      6B42 7573 
 5143      416E 6444 
 5143      6576 6963 
 5143      6541 6374 
 5146               	__c.3294:
 5147 0221 6368 6563 		.string	"checkBusAndDeviceActivityMasks bus: %i Devices: some (pin pattern %#x owiDeviceMask %#x)"
 5147      6B42 7573 
 5147      416E 6444 
 5147      6576 6963 
 5147      6541 6374 
 5150               	__c.3292:
 5151 027a 6368 6563 		.string	"checkBusAndDeviceActivityMasks bus: %i Devices: NONE (pin pattern %#x owiDeviceMask %#x)"
 5151      6B42 7573 
 5151      416E 6444 
 5151      6576 6963 
 5151      6541 6374 
 5154               	__c.3290:
 5155 02d3 6368 6563 		.string	"checkBusAndDeviceActivityMasks bus: %i active  (pin pattern %#x owiBusMask %#x)"
 5155      6B42 7573 
 5155      416E 6444 
 5155      6576 6963 
 5155      6541 6374 
 5158               	__c.3288:
 5159 0323 6368 6563 		.string	"checkBusAndDeviceActivityMasks bus: %i differs (pin pattern %#x owiBusMask %#x)"
 5159      6B42 7573 
 5159      416E 6444 
 5159      6576 6963 
 5159      6541 6374 
 5162               	__c.3267:
 5163 0373 696E 7661 		.string	"invalid number of arguments"
 5163      6C69 6420 
 5163      6E75 6D62 
 5163      6572 206F 
 5163      6620 6172 
 5166               	__c.3263:
 5167 038f 7365 636F 		.string	"second argument sets init_flag to: %i "
 5167      6E64 2061 
 5167      7267 756D 
 5167      656E 7420 
 5167      7365 7473 
 5170               	__c.3261:
 5171 03b6 7365 636F 		.string	"second argument sets init_flag to: %i "
 5171      6E64 2061 
 5171      7267 756D 
 5171      656E 7420 
 5171      7365 7473 
 5174               	__c.3255:
 5175 03dd 6E75 6D62 		.string	"number of arguments: %i"
 5175      6572 206F 
 5175      6620 6172 
 5175      6775 6D65 
 5175      6E74 733A 
 5178               	__c.3248:
 5179 03f5 6172 6775 		.string	"argument %i is NOT an ID"
 5179      6D65 6E74 
 5179      2025 6920 
 5179      6973 204E 
 5179      4F54 2061 
 5182               	__c.3246:
 5183 040e 6172 6775 		.string	"argument %i is an ID: %s"
 5183      6D65 6E74 
 5183      2025 6920 
 5183      6973 2061 
 5183      6E20 4944 
 5186               	__c.3241:
 5187 0427 6E75 6D65 		.string	"numeric length of argument '%s' is %i"
 5187      7269 6320 
 5187      6C65 6E67 
 5187      7468 206F 
 5187      6620 6172 
 5190               	__c.3239:
 5191 044d 696E 7661 		.string	"invalid argument index"
 5191      6C69 6420 
 5191      6172 6775 
 5191      6D65 6E74 
 5191      2069 6E64 
 5194               	__c.3220:
 5195 0464 4572 726F 		.string	"Error reading %s"
 5195      7220 7265 
 5195      6164 696E 
 5195      6720 2573 
 5195      00
 5198               	__c.3215:
 5199 0475 6F77 6920 		.string	"owi bus mask didn't match"
 5199      6275 7320 
 5199      6D61 736B 
 5199      2064 6964 
 5199      6E27 7420 
 5202               	__c.3196:
 5203 048f 256C 782C 		.string	"%lx, [%#lx ... %#lx]"
 5203      205B 2523 
 5203      6C78 202E 
 5203      2E2E 2025 
 5203      236C 785D 
 5206               	__c.3191:
 5207 04a4 2573 2025 		.string	"%s %x"
 5207      7800 
 5210               	__c.3178:
 5211 04aa 5752 4954 		.string	"WRITE ACCESS"
 5211      4520 4143 
 5211      4345 5353 
 5211      00
 5214               	__c.3172:
 5215 04b7 6275 735F 		.string	"bus_pattern %x : returned %i"
 5215      7061 7474 
 5215      6572 6E20 
 5215      2578 203A 
 5215      2072 6574 
 5218               	__c.3167:
 5219 04d4 6275 7320 		.string	"bus %i: returned %i"
 5219      2569 3A20 
 5219      7265 7475 
 5219      726E 6564 
 5219      2025 6900 
 5222               	__c.3165:
 5223 04e8 6275 7320 		.string	"bus %i call: ReadADCchannels"
 5223      2569 2063 
 5223      616C 6C3A 
 5223      2052 6561 
 5223      6441 4443 
 5226               	__c.3162:
 5227 0505 5245 4144 		.string	"READ ACCESS"
 5227      2041 4343 
 5227      4553 5300 
 5230               	__c.3160:
 5231 0511 6275 7320 		.string	"bus %i doesn't match owiBusMask (%#x)"
 5231      2569 2064 
 5231      6F65 736E 
 5231      2774 206D 
 5231      6174 6368 
 5234               	__c.3157:
 5235 0537 6663 6E3A 		.string	"fcn:FindFamilyDevicesAndGetValues: selected device index (arg 4) is out of range ... skip
 5235      4669 6E64 
 5235      4661 6D69 
 5235      6C79 4465 
 5235      7669 6365 
 5238               	__c.3155:
 5239 0595 6663 6E3A 		.string	"fcn:owiFindFamilyDevicesAndGetValues: error while searching for id's index ... skipping"
 5239      6F77 6946 
 5239      696E 6446 
 5239      616D 696C 
 5239      7944 6576 
 5242               	__c.3153:
 5243 05ed 6E6F 206D 		.string	"no matching ID found"
 5243      6174 6368 
 5243      696E 6720 
 5243      4944 2066 
 5243      6F75 6E64 
 5246               	__c.3151:
 5247 0602 6663 6E3A 		.string	"fcn:FindFamilyDevicesAndGetValues: 1st argument is NULL ... skipping"
 5247      4669 6E64 
 5247      4661 6D69 
 5247      6C79 4465 
 5247      7669 6365 
 5250               	__c.3131:
 5251 0647 2573 666F 		.string	"%sfound %i devices"
 5251      756E 6420 
 5251      2569 2064 
 5251      6576 6963 
 5251      6573 00
 5254               	__c.3126:
 5255 065a 2573 4944 		.string	"%sID: %s"
 5255      3A20 2573 
 5255      00
 5258               	__c.3124:
 5259 0663 2573 6275 		.string	"%sbus mask: "
 5259      7320 6D61 
 5259      736B 3A20 
 5259      00
 5262               	__c.3121:
 5263 0670 7661 6C69 		.string	"valid family code %i"
 5263      6420 6661 
 5263      6D69 6C79 
 5263      2063 6F64 
 5263      6520 2569 
 5266               	__c.3119:
 5267 0685 696E 7661 		.string	"invalid family code, exceeding limits [0,0xFF]"
 5267      6C69 6420 
 5267      6661 6D69 
 5267      6C79 2063 
 5267      6F64 652C 
 5270               	__c.3117:
 5271 06b4 696E 7661 		.string	"invalid family code %i"
 5271      6C69 6420 
 5271      6661 6D69 
 5271      6C79 2063 
 5271      6F64 6520 
 5274               	__c.3115:
 5275 06cb 00        		.zero	1
 5278               	__c.3106:
 5279 06cc 666F 756E 		.string	"found %i devices"
 5279      6420 2569 
 5279      2064 6576 
 5279      6963 6573 
 5279      00
 5282               	__c.3101:
 5283 06dd 6E6F 5F64 		.string	"no_device_is_connected_to_the_bus"
 5283      6576 6963 
 5283      655F 6973 
 5283      5F63 6F6E 
 5283      6E65 6374 
 5286               	__c.3099:
 5287 06ff 6275 733A 		.string	"bus: %i found %i valid devices, within %i trials"
 5287      2025 6920 
 5287      666F 756E 
 5287      6420 2569 
 5287      2076 616C 
 5290               	__c.3095:
 5291 0730 6275 733A 		.string	"bus: %i (%#x), search loop total: %i 1/bus: %i ID: %s"
 5291      2025 6920 
 5291      2825 2378 
 5291      292C 2073 
 5291      6561 7263 
 5294               	__c.3088:
 5295 0766 4F57 4920 		.string	"OWI CRC check internal failure"
 5295      4352 4320 
 5295      6368 6563 
 5295      6B20 696E 
 5295      7465 726E 
 5298               	__c.3085:
 5299 0785 6275 733A 		.string	"bus: %i (Mask:%#x) - OWI CRC check failure, skipping current id: %s"
 5299      2025 6920 
 5299      284D 6173 
 5299      6B3A 2523 
 5299      7829 202D 
 5302               	__c.3081:
 5303 07c9 4F57 4920 		.string	"OWI CRC check passed"
 5303      4352 4320 
 5303      6368 6563 
 5303      6B20 7061 
 5303      7373 6564 
 5306               	__c.3075:
 5307 07de 6465 7669 		.string	"devices detected"
 5307      6365 7320 
 5307      6465 7465 
 5307      6374 6564 
 5307      00
 5310               	__c.3073:
 5311 07ef 6275 733A 		.string	"bus: %i active  (pin pattern %#x owiBusMask %#x)"
 5311      2025 6920 
 5311      6163 7469 
 5311      7665 2020 
 5311      2870 696E 
 5314               	__c.3071:
 5315 0820 6275 733A 		.string	"bus: %i active  (pin pattern %#x owiBusMask %#x)"
 5315      2025 6920 
 5315      6163 7469 
 5315      7665 2020 
 5315      2870 696E 
 5318               	__c.3068:
 5319 0851 6275 733A 		.string	"bus: %i passive (pin pattern %#x owiBusMask %#x)"
 5319      2025 6920 
 5319      7061 7373 
 5319      6976 6520 
 5319      2870 696E 
 5322               	__c.3066:
 5323 0882 6D65 7373 		.string	"message %s"
 5323      6167 6520 
 5323      2573 00
 5324               		.comm	owi_id_string,17,1
 5327               	filename:
 5328 088d 6F6E 655F 		.string	"one_wire.c"
 5328      7769 7265 
 5328      2E63 00
 5329               		.comm	ErrorCodes,1,1
 5330               		.comm	canTimerInterval,4,1
 5335               		.text
 5337               	.Letext0:
 5338               		.ident	"GCC: (GNU) 4.8.1"
 5339               	.global __do_copy_data
 5340               	.global __do_clear_bss
DEFINED SYMBOLS
                            *ABS*:00000000 one_wire.c
     /tmp/cccYmLDB.s:2      *ABS*:0000003e __SP_H__
     /tmp/cccYmLDB.s:3      *ABS*:0000003d __SP_L__
     /tmp/cccYmLDB.s:4      *ABS*:0000003f __SREG__
     /tmp/cccYmLDB.s:5      *ABS*:0000003b __RAMPZ__
     /tmp/cccYmLDB.s:6      *ABS*:00000000 __tmp_reg__
     /tmp/cccYmLDB.s:7      *ABS*:00000001 __zero_reg__
     /tmp/cccYmLDB.s:165    .text:00000000 owiCreateIdString
     /tmp/cccYmLDB.s:243    .text:00000076 owiReadDevicesID
     /tmp/cccYmLDB.s:5314   .progmem.data:00000820 __c.3071
     /tmp/cccYmLDB.s:5282   .progmem.data:000006dd __c.3101
     /tmp/cccYmLDB.s:5306   .progmem.data:000007de __c.3075
     /tmp/cccYmLDB.s:5322   .progmem.data:00000882 __c.3066
     /tmp/cccYmLDB.s:5327   .progmem.data:0000088d filename
     /tmp/cccYmLDB.s:5318   .progmem.data:00000851 __c.3068
     /tmp/cccYmLDB.s:5310   .progmem.data:000007ef __c.3073
                            *COM*:00000011 owi_id_string
     /tmp/cccYmLDB.s:5298   .progmem.data:00000785 __c.3085
     /tmp/cccYmLDB.s:5302   .progmem.data:000007c9 __c.3081
     /tmp/cccYmLDB.s:5294   .progmem.data:00000766 __c.3088
     /tmp/cccYmLDB.s:5290   .progmem.data:00000730 __c.3095
     /tmp/cccYmLDB.s:5286   .progmem.data:000006ff __c.3099
     /tmp/cccYmLDB.s:5278   .progmem.data:000006cc __c.3106
     /tmp/cccYmLDB.s:1030   .text:0000059e owiShowDevicesID
     /tmp/cccYmLDB.s:5274   .progmem.data:000006cb __c.3115
     /tmp/cccYmLDB.s:5270   .progmem.data:000006b4 __c.3117
     /tmp/cccYmLDB.s:5266   .progmem.data:00000685 __c.3119
     /tmp/cccYmLDB.s:5262   .progmem.data:00000670 __c.3121
     /tmp/cccYmLDB.s:5258   .progmem.data:00000663 __c.3124
     /tmp/cccYmLDB.s:5254   .progmem.data:0000065a __c.3126
     /tmp/cccYmLDB.s:5250   .progmem.data:00000647 __c.3131
     /tmp/cccYmLDB.s:1530   .text:000008f4 setOneWireBusMask
     /tmp/cccYmLDB.s:5206   .progmem.data:000004a4 __c.3191
     /tmp/cccYmLDB.s:5202   .progmem.data:0000048f __c.3196
     /tmp/cccYmLDB.s:1701   .text:00000a02 getOneWireBusMask
     /tmp/cccYmLDB.s:1732   .text:00000a18 owiScanIDS
     /tmp/cccYmLDB.s:1819   .text:00000a7c owiCheckReadWriteReturnStatus
     /tmp/cccYmLDB.s:5198   .progmem.data:00000475 __c.3215
     /tmp/cccYmLDB.s:5194   .progmem.data:00000464 __c.3220
     /tmp/cccYmLDB.s:1977   .text:00000b50 owiInitOwiStruct
     /tmp/cccYmLDB.s:2045   .text:00000b88 isParameterIDThenFillOwiStructure
     /tmp/cccYmLDB.s:5190   .progmem.data:0000044d __c.3239
     /tmp/cccYmLDB.s:5186   .progmem.data:00000427 __c.3241
     /tmp/cccYmLDB.s:5182   .progmem.data:0000040e __c.3246
     /tmp/cccYmLDB.s:5178   .progmem.data:000003f5 __c.3248
     /tmp/cccYmLDB.s:2353   .text:00000d92 owiConvertUartDataToOwiStruct
     /tmp/cccYmLDB.s:5174   .progmem.data:000003dd __c.3255
     /tmp/cccYmLDB.s:5170   .progmem.data:000003b6 __c.3261
     /tmp/cccYmLDB.s:5166   .progmem.data:0000038f __c.3263
     /tmp/cccYmLDB.s:5162   .progmem.data:00000373 __c.3267
     /tmp/cccYmLDB.s:2834   .text:000010c0 owiFindIdAndGetIndex
     /tmp/cccYmLDB.s:2925   .text:0000110c owiFindFamilyDevicesAndAccessValues
     /tmp/cccYmLDB.s:5246   .progmem.data:00000602 __c.3151
     /tmp/cccYmLDB.s:5242   .progmem.data:000005ed __c.3153
     /tmp/cccYmLDB.s:5238   .progmem.data:00000595 __c.3155
     /tmp/cccYmLDB.s:5234   .progmem.data:00000537 __c.3157
     /tmp/cccYmLDB.s:5230   .progmem.data:00000511 __c.3160
     /tmp/cccYmLDB.s:5226   .progmem.data:00000505 __c.3162
     /tmp/cccYmLDB.s:5222   .progmem.data:000004e8 __c.3165
     /tmp/cccYmLDB.s:5218   .progmem.data:000004d4 __c.3167
     /tmp/cccYmLDB.s:5214   .progmem.data:000004b7 __c.3172
     /tmp/cccYmLDB.s:5210   .progmem.data:000004aa __c.3178
     /tmp/cccYmLDB.s:3762   .text:00001678 checkBusAndDeviceActivityMasks
     /tmp/cccYmLDB.s:5158   .progmem.data:00000323 __c.3288
     /tmp/cccYmLDB.s:5154   .progmem.data:000002d3 __c.3290
     /tmp/cccYmLDB.s:5150   .progmem.data:0000027a __c.3292
     /tmp/cccYmLDB.s:5146   .progmem.data:00000221 __c.3294
     /tmp/cccYmLDB.s:5142   .progmem.data:000001e5 __c.3296
     /tmp/cccYmLDB.s:4019   .text:00001824 generateCommonPinsPattern
     /tmp/cccYmLDB.s:5138   .progmem.data:000001cc __c.3304
     /tmp/cccYmLDB.s:5130   .progmem.data:00000170 __c.3310
     /tmp/cccYmLDB.s:5134   .progmem.data:000001a1 __c.3307
     /tmp/cccYmLDB.s:5126   .progmem.data:00000159 __c.3315
     /tmp/cccYmLDB.s:4283   .text:000019da owiFindParasitePoweredDevices
     /tmp/cccYmLDB.s:5122   .progmem.data:00000135 __c.3324
     /tmp/cccYmLDB.s:5118   .progmem.data:0000010e __c.3327
     /tmp/cccYmLDB.s:5110   .progmem.data:000000e5 __c.3340
     /tmp/cccYmLDB.s:5106   .progmem.data:000000c1 __c.3342
     /tmp/cccYmLDB.s:5114   .progmem.data:000000f9 __c.3338
     /tmp/cccYmLDB.s:5102   .progmem.data:00000093 __c.3344
     /tmp/cccYmLDB.s:5098   .progmem.data:0000006f __c.3346
     /tmp/cccYmLDB.s:4734   .text:00001c88 vOwiComputeCRC16
     /tmp/cccYmLDB.s:5086   .progmem.data:00000000 __c.3381
     /tmp/cccYmLDB.s:4876   .text:00001d58 owiSendBytesAndCheckCRC16
     /tmp/cccYmLDB.s:5094   .progmem.data:00000057 __c.3359
     /tmp/cccYmLDB.s:5090   .progmem.data:0000001b __c.3365
     /tmp/cccYmLDB.s:5054   .text:00001e4e owiComputeCRC16
                            *COM*:00000001 ErrorCodes
                            *COM*:00000004 canTimerInterval

UNDEFINED SYMBOLS
clearString
snprintf
countDEV
CommunicationError_p
generalErrorCode
owi_IDs
owiBusMask
printDebug_p
globalDebugLevel
globalDebugSystemMask
OWI_DetectPresence
countDEVbus
owi_IDs_pinMask
OWI_SearchRom
OWI_CheckRomCRC
BUSES
ptr_uartStruct
message
createReceiveHeader
snprintf_P
UART0_Send_Message_String_p
uart_message_string
NumDevicesFound
ptr_owiStruct
setParameter
getNumberOfHexDigits
strtol
isNumericArgument
getUnsignedNumericValueFromParameterIndex
__cmpdi2_s8
strncpy
ptr_setParameter
strtoul
resultString
owiReadChannelsOfSingleADCs
owiTemperatureReadSingleSensor
ReadOctalSwitches
ReadDualSwitches
ReadSimpleSwitches
WriteOctalSwitches
strncat
WriteDualSwitches
OWI_SendByte
OWI_ReadBit
owiTemperatureParasiticModeMask
OWI_ComputeCRC16
OWI_ReceiveWord
__do_copy_data
__do_clear_bss
