   1               		.file	"one_wire_dualSwitch.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:
 159               	.global	owiDualSwitches
 161               	owiDualSwitches:
   1:one_wire_dualSwitch.c **** /*
   2:one_wire_dualSwitch.c ****    Licensed under the EUPL V.1.1, Lizenziert unter EUPL V.1.1 
   3:one_wire_dualSwitch.c **** */
   4:one_wire_dualSwitch.c **** #include <stdint.h>
   5:one_wire_dualSwitch.c **** #include <stdio.h>
   6:one_wire_dualSwitch.c **** #include <stdarg.h>
   7:one_wire_dualSwitch.c **** #include <string.h>
   8:one_wire_dualSwitch.c **** /*
   9:one_wire_dualSwitch.c ****  * VERSION 1.0 Januar 7th 2010 LATE  File: 'one_wire_dualSwitch.c'
  10:one_wire_dualSwitch.c ****  * Author: Linda Fouedjio  based on Alejandro Gil
  11:one_wire_dualSwitch.c ****  * modified (heavily rather rebuild): Peter Zumbruch
  12:one_wire_dualSwitch.c ****  */
  13:one_wire_dualSwitch.c **** #include <math.h>
  14:one_wire_dualSwitch.c **** #include <stdlib.h>
  15:one_wire_dualSwitch.c **** #include <util/delay.h>
  16:one_wire_dualSwitch.c **** #include <avr/pgmspace.h>
  17:one_wire_dualSwitch.c **** #include <ctype.h>
  18:one_wire_dualSwitch.c **** 
  19:one_wire_dualSwitch.c **** #include <avr/io.h>
  20:one_wire_dualSwitch.c **** #include <avr/interrupt.h>
  21:one_wire_dualSwitch.c **** #include <avr/sleep.h>
  22:one_wire_dualSwitch.c **** #include <avr/iocan128.h>
  23:one_wire_dualSwitch.c **** 
  24:one_wire_dualSwitch.c **** #include "one_wire.h"
  25:one_wire_dualSwitch.c **** #include "one_wire_adc.h"
  26:one_wire_dualSwitch.c **** #include "one_wire_dualSwitch.h"
  27:one_wire_dualSwitch.c **** #include "one_wire_simpleSwitch.h"
  28:one_wire_dualSwitch.c **** #include "read_write_register.h"
  29:one_wire_dualSwitch.c **** #include "one_wire_temperature.h"
  30:one_wire_dualSwitch.c **** 
  31:one_wire_dualSwitch.c **** #include "adc.h"
  32:one_wire_dualSwitch.c **** #include "api.h"
  33:one_wire_dualSwitch.c **** #include "api_define.h"
  34:one_wire_dualSwitch.c **** #include "api_global.h"
  35:one_wire_dualSwitch.c **** 
  36:one_wire_dualSwitch.c **** #include "api_debug.h"
  37:one_wire_dualSwitch.c **** #include "can.h"
  38:one_wire_dualSwitch.c **** #include "mem-check.h"
  39:one_wire_dualSwitch.c **** 
  40:one_wire_dualSwitch.c **** #include "OWIDeviceSpecific.h"
  41:one_wire_dualSwitch.c **** #include "OWIHighLevelFunctions.h"
  42:one_wire_dualSwitch.c **** #include "OWIBitFunctions.h"
  43:one_wire_dualSwitch.c **** 
  44:one_wire_dualSwitch.c **** #define DS2413_PIO_ACCESS_READ  0xF5
  45:one_wire_dualSwitch.c **** #define DS2413_PIO_ACCESS_WRITE 0x5A
  46:one_wire_dualSwitch.c **** #define DS2413_WRITE_CONFIRMATION_PATTERN 0xAA
  47:one_wire_dualSwitch.c **** 
  48:one_wire_dualSwitch.c **** #define DS2413_MAX_WRITE_VALUE 0x03
  49:one_wire_dualSwitch.c **** 
  50:one_wire_dualSwitch.c **** #warning TODO: make this max value switchable
  51:one_wire_dualSwitch.c **** #define OWI_DUAL_SWITCHES_MAXIMUM_WRITE_ACCESS_COUNTS 100
  52:one_wire_dualSwitch.c **** 
  53:one_wire_dualSwitch.c **** static const char filename[] 		PROGMEM = __FILE__;
  54:one_wire_dualSwitch.c **** 
  55:one_wire_dualSwitch.c **** uint16_t owiDualSwitchMask = 0;
  56:one_wire_dualSwitch.c **** uint16_t* p_owiDualSwitchMask = &owiDualSwitchMask;
  57:one_wire_dualSwitch.c **** 
  58:one_wire_dualSwitch.c **** 
  59:one_wire_dualSwitch.c **** void owiDualSwitches( struct uartStruct *ptr_uartStruct )
  60:one_wire_dualSwitch.c **** {
 163               	.LM0:
 164               	.LFBB1:
 165 0000 CF93      		push r28
 166 0002 DF93      		push r29
 167               	/* prologue: function */
 168               	/* frame size = 0 */
 169               	/* stack size = 2 */
 170               	.L__stack_usage = 2
 171 0004 EC01      		movw r28,r24
  61:one_wire_dualSwitch.c ****    //int index = -1;
  62:one_wire_dualSwitch.c **** #warning TODO? owiReadDevicesID, depending on some settings, might be replaced by a conditional sea
  63:one_wire_dualSwitch.c ****    NumDevicesFound = owiReadDevicesID(BUSES);
 173               	.LM1:
 174 0006 80E0      		ldi r24,lo8(BUSES)
 175 0008 90E0      		ldi r25,hi8(BUSES)
 176 000a 0E94 0000 		call owiReadDevicesID
 177 000e 8093 0000 		sts NumDevicesFound,r24
  64:one_wire_dualSwitch.c ****    if ( 0 < NumDevicesFound )
 179               	.LM2:
 180 0012 8823      		tst r24
 181 0014 01F4      		brne .+2
 182 0016 00C0      		rjmp .L1
  65:one_wire_dualSwitch.c ****    {
  66:one_wire_dualSwitch.c ****       owiDualSwitchMask = 0x0;
 184               	.LM3:
 185 0018 1092 0000 		sts owiDualSwitchMask+1,__zero_reg__
 186 001c 1092 0000 		sts owiDualSwitchMask,__zero_reg__
  67:one_wire_dualSwitch.c **** 
  68:one_wire_dualSwitch.c ****       if ( 0 < ( owiScanIDS(OWI_FAMILY_DS2413_DUAL_SWITCH, p_owiDualSwitchMask))) /* Dual Switch co
 188               	.LM4:
 189 0020 6091 0000 		lds r22,p_owiDualSwitchMask
 190 0024 7091 0000 		lds r23,p_owiDualSwitchMask+1
 191 0028 8AE3      		ldi r24,lo8(58)
 192 002a 90E0      		ldi r25,0
 193 002c 0E94 0000 		call owiScanIDS
 194 0030 8823      		tst r24
 195 0032 01F4      		brne .+2
 196 0034 00C0      		rjmp .L1
  69:one_wire_dualSwitch.c ****       {
  70:one_wire_dualSwitch.c ****          /* additional arguments ?
  71:one_wire_dualSwitch.c ****           *  0:
  72:one_wire_dualSwitch.c ****           *     read all;
  73:one_wire_dualSwitch.c ****           *  1:
  74:one_wire_dualSwitch.c ****           *       read: id,
  75:one_wire_dualSwitch.c ****           *       write: value,
  76:one_wire_dualSwitch.c ****           *  2:
  77:one_wire_dualSwitch.c ****           *       write: id value
  78:one_wire_dualSwitch.c ****           */
  79:one_wire_dualSwitch.c ****          /* 0xff> id >> 56 > 0x01 */
  80:one_wire_dualSwitch.c ****          /* needs own parsing */
  81:one_wire_dualSwitch.c **** 
  82:one_wire_dualSwitch.c ****          switch(ptr_uartStruct->number_of_arguments)
 198               	.LM5:
 199 0036 CB8D      		ldd r28,Y+27
 200 0038 C130      		cpi r28,lo8(1)
 201 003a 01F0      		breq .L6
 202 003c C230      		cpi r28,lo8(2)
 203 003e 01F4      		brne .+2
 204 0040 00C0      		rjmp .L7
 205 0042 C111      		cpse r28,__zero_reg__
 206 0044 00C0      		rjmp .L16
  83:one_wire_dualSwitch.c ****          {
  84:one_wire_dualSwitch.c ****             case 0: /*read all*/
  85:one_wire_dualSwitch.c ****                 printDebug_p(debugLevelEventDebug, debugSystemOWIDualSwitches, __LINE__, filename, 
 208               	.LM6:
 209 0046 80E0      		ldi r24,lo8(__c.3038)
 210 0048 90E0      		ldi r25,hi8(__c.3038)
 211 004a 9F93      		push r25
 212 004c 8F93      		push r24
 213 004e 80E0      		ldi r24,lo8(filename)
 214 0050 90E0      		ldi r25,hi8(filename)
 215 0052 9F93      		push r25
 216 0054 8F93      		push r24
 217 0056 1F92      		push __zero_reg__
 218 0058 85E5      		ldi r24,lo8(85)
 219 005a 8F93      		push r24
 220 005c 1F92      		push __zero_reg__
 221 005e 1F92      		push __zero_reg__
 222 0060 1F92      		push __zero_reg__
 223 0062 8DE0      		ldi r24,lo8(13)
 224 0064 8F93      		push r24
 225 0066 82E0      		ldi r24,lo8(2)
 226 0068 8F93      		push r24
 227 006a E091 0000 		lds r30,printDebug_p
 228 006e F091 0000 		lds r31,printDebug_p+1
 229 0072 0995      		icall
  86:one_wire_dualSwitch.c **** 
  87:one_wire_dualSwitch.c ****                owiFindFamilyDevicesAndAccessValues(BUSES, NumDevicesFound, OWI_FAMILY_DS2413_DUAL_S
 231               	.LM7:
 232 0074 2DB7      		in r18,__SP_L__
 233 0076 3EB7      		in r19,__SP_H__
 234 0078 255F      		subi r18,-11
 235 007a 3F4F      		sbci r19,-1
 236 007c 0FB6      		in __tmp_reg__,__SREG__
 237 007e F894      		cli
 238 0080 3EBF      		out __SP_H__,r19
 239 0082 0FBE      		out __SREG__,__tmp_reg__
 240 0084 2DBF      		out __SP_L__,r18
 241 0086 00C0      		rjmp .L20
 242               	.L6:
  88:one_wire_dualSwitch.c ****                break;
  89:one_wire_dualSwitch.c ****             case 1: /*read single ID / write all / invalid */
  90:one_wire_dualSwitch.c ****                if (TRUE == ptr_owiStruct->idSelect_flag) /* read ID */
 244               	.LM8:
 245 0088 A091 0000 		lds r26,ptr_owiStruct
 246 008c B091 0000 		lds r27,ptr_owiStruct+1
 247 0090 1896      		adiw r26,8
 248 0092 8C91      		ld r24,X
 249 0094 1897      		sbiw r26,8
 250 0096 E091 0000 		lds r30,printDebug_p
 251 009a F091 0000 		lds r31,printDebug_p+1
 252 009e 8130      		cpi r24,lo8(1)
 253 00a0 01F4      		brne .L9
  91:one_wire_dualSwitch.c ****                {
  92:one_wire_dualSwitch.c ****                    printDebug_p(debugLevelEventDebug, debugSystemOWIDualSwitches, __LINE__, filenam
 255               	.LM9:
 256 00a2 80E0      		ldi r24,lo8(__c.3042)
 257 00a4 90E0      		ldi r25,hi8(__c.3042)
 258 00a6 9F93      		push r25
 259 00a8 8F93      		push r24
 260 00aa 80E0      		ldi r24,lo8(filename)
 261 00ac 90E0      		ldi r25,hi8(filename)
 262 00ae 9F93      		push r25
 263 00b0 8F93      		push r24
 264 00b2 1F92      		push __zero_reg__
 265 00b4 8CE5      		ldi r24,lo8(92)
 266 00b6 8F93      		push r24
 267 00b8 1F92      		push __zero_reg__
 268 00ba 1F92      		push __zero_reg__
 269 00bc 1F92      		push __zero_reg__
 270 00be 8DE0      		ldi r24,lo8(13)
 271 00c0 8F93      		push r24
 272 00c2 82E0      		ldi r24,lo8(2)
 273 00c4 8F93      		push r24
 274 00c6 0995      		icall
  93:one_wire_dualSwitch.c **** 
  94:one_wire_dualSwitch.c ****                   owiFindFamilyDevicesAndAccessValues(BUSES, NumDevicesFound, OWI_FAMILY_DS2413_DUA
 276               	.LM10:
 277 00c8 8DB7      		in r24,__SP_L__
 278 00ca 9EB7      		in r25,__SP_H__
 279 00cc 0B96      		adiw r24,11
 280 00ce 0FB6      		in __tmp_reg__,__SREG__
 281 00d0 F894      		cli
 282 00d2 9EBF      		out __SP_H__,r25
 283 00d4 0FBE      		out __SREG__,__tmp_reg__
 284 00d6 8DBF      		out __SP_L__,r24
 285               	.L20:
 286 00d8 20E0      		ldi r18,0
 287 00da 30E0      		ldi r19,0
 288 00dc 00C0      		rjmp .L18
 289               	.L9:
  95:one_wire_dualSwitch.c ****                }
  96:one_wire_dualSwitch.c ****                else /* write value / invalid */
  97:one_wire_dualSwitch.c ****                {
  98:one_wire_dualSwitch.c ****                    printDebug_p(debugLevelEventDebug, debugSystemOWIDualSwitches, __LINE__, filenam
 291               	.LM11:
 292 00de 1A96      		adiw r26,10
 293 00e0 8C91      		ld r24,X
 294 00e2 1A97      		sbiw r26,10
 295 00e4 8F93      		push r24
 296 00e6 1996      		adiw r26,9
 297 00e8 8C91      		ld r24,X
 298 00ea 1997      		sbiw r26,9
 299 00ec 8F93      		push r24
 300 00ee 1C96      		adiw r26,12
 301 00f0 8C91      		ld r24,X
 302 00f2 1C97      		sbiw r26,12
 303 00f4 8F93      		push r24
 304 00f6 1B96      		adiw r26,11
 305 00f8 8C91      		ld r24,X
 306 00fa 8F93      		push r24
 307 00fc 80E0      		ldi r24,lo8(__c.3044)
 308 00fe 90E0      		ldi r25,hi8(__c.3044)
 309 0100 9F93      		push r25
 310 0102 8F93      		push r24
 311 0104 80E0      		ldi r24,lo8(filename)
 312 0106 90E0      		ldi r25,hi8(filename)
 313 0108 9F93      		push r25
 314 010a 8F93      		push r24
 315 010c 1F92      		push __zero_reg__
 316 010e 82E6      		ldi r24,lo8(98)
 317 0110 8F93      		push r24
 318 0112 1F92      		push __zero_reg__
 319 0114 1F92      		push __zero_reg__
 320 0116 1F92      		push __zero_reg__
 321 0118 8DE0      		ldi r24,lo8(13)
 322 011a 8F93      		push r24
 323 011c 82E0      		ldi r24,lo8(2)
 324 011e 8F93      		push r24
 325 0120 0995      		icall
  99:one_wire_dualSwitch.c **** 
 100:one_wire_dualSwitch.c ****                   if ( DS2413_MAX_WRITE_VALUE >= ptr_owiStruct->value)
 327               	.LM12:
 328 0122 E091 0000 		lds r30,ptr_owiStruct
 329 0126 F091 0000 		lds r31,ptr_owiStruct+1
 330 012a 8385      		ldd r24,Z+11
 331 012c 9485      		ldd r25,Z+12
 332 012e 2DB7      		in r18,__SP_L__
 333 0130 3EB7      		in r19,__SP_H__
 334 0132 215F      		subi r18,-15
 335 0134 3F4F      		sbci r19,-1
 336 0136 0FB6      		in __tmp_reg__,__SREG__
 337 0138 F894      		cli
 338 013a 3EBF      		out __SP_H__,r19
 339 013c 0FBE      		out __SREG__,__tmp_reg__
 340 013e 2DBF      		out __SP_L__,r18
 341 0140 8430      		cpi r24,4
 342 0142 9105      		cpc r25,__zero_reg__
 343 0144 00F4      		brsh .+2
 344 0146 00C0      		rjmp .L19
 101:one_wire_dualSwitch.c ****                   {
 102:one_wire_dualSwitch.c ****                      owiFindFamilyDevicesAndAccessValues(BUSES, NumDevicesFound, OWI_FAMILY_DS2413_
 103:one_wire_dualSwitch.c ****                   }
 104:one_wire_dualSwitch.c ****                   else
 105:one_wire_dualSwitch.c ****                   {
 106:one_wire_dualSwitch.c ****                      CommunicationError_p(ERRA, dynamicMessage_ErrorIndex, TRUE, PSTR("write argume
 346               	.LM13:
 347 0148 1F92      		push __zero_reg__
 348 014a 23E0      		ldi r18,lo8(3)
 349 014c 2F93      		push r18
 350 014e 9F93      		push r25
 351 0150 8F93      		push r24
 352 0152 80E0      		ldi r24,lo8(__c.3046)
 353 0154 90E0      		ldi r25,hi8(__c.3046)
 354 0156 9F93      		push r25
 355 0158 8F93      		push r24
 356 015a CF93      		push r28
 357 015c 8FEF      		ldi r24,lo8(-1)
 358 015e 8F93      		push r24
 359 0160 8CE9      		ldi r24,lo8(-100)
 360 0162 8F93      		push r24
 361 0164 CF93      		push r28
 362 0166 E091 0000 		lds r30,CommunicationError_p
 363 016a F091 0000 		lds r31,CommunicationError_p+1
 364 016e 0995      		icall
 107:one_wire_dualSwitch.c ****                      return;
 366               	.LM14:
 367 0170 8DB7      		in r24,__SP_L__
 368 0172 9EB7      		in r25,__SP_H__
 369 0174 0A96      		adiw r24,10
 370 0176 0FB6      		in __tmp_reg__,__SREG__
 371 0178 F894      		cli
 372 017a 9EBF      		out __SP_H__,r25
 373 017c 0FBE      		out __SREG__,__tmp_reg__
 374 017e 8DBF      		out __SP_L__,r24
 375 0180 00C0      		rjmp .L1
 376               	.L7:
 108:one_wire_dualSwitch.c ****                   }
 109:one_wire_dualSwitch.c ****                }
 110:one_wire_dualSwitch.c ****                break;
 111:one_wire_dualSwitch.c ****             case 2: /* write ID value / invalid */
 112:one_wire_dualSwitch.c ****                if (TRUE == ptr_owiStruct->idSelect_flag) /* write ID value*/
 378               	.LM15:
 379 0182 E091 0000 		lds r30,ptr_owiStruct
 380 0186 F091 0000 		lds r31,ptr_owiStruct+1
 381 018a D085      		ldd r29,Z+8
 382 018c D130      		cpi r29,lo8(1)
 383 018e 01F0      		breq .+2
 384 0190 00C0      		rjmp .L11
 113:one_wire_dualSwitch.c ****                {
 114:one_wire_dualSwitch.c ****                    printDebug_p(debugLevelEventDebug, debugSystemOWIDualSwitches, __LINE__, filenam
 386               	.LM16:
 387 0192 8285      		ldd r24,Z+10
 388 0194 8F93      		push r24
 389 0196 8185      		ldd r24,Z+9
 390 0198 8F93      		push r24
 391 019a 8485      		ldd r24,Z+12
 392 019c 8F93      		push r24
 393 019e 8385      		ldd r24,Z+11
 394 01a0 8F93      		push r24
 395 01a2 80E0      		ldi r24,lo8(__c.3049)
 396 01a4 90E0      		ldi r25,hi8(__c.3049)
 397 01a6 9F93      		push r25
 398 01a8 8F93      		push r24
 399 01aa 80E0      		ldi r24,lo8(filename)
 400 01ac 90E0      		ldi r25,hi8(filename)
 401 01ae 9F93      		push r25
 402 01b0 8F93      		push r24
 403 01b2 1F92      		push __zero_reg__
 404 01b4 82E7      		ldi r24,lo8(114)
 405 01b6 8F93      		push r24
 406 01b8 1F92      		push __zero_reg__
 407 01ba 1F92      		push __zero_reg__
 408 01bc 1F92      		push __zero_reg__
 409 01be 8DE0      		ldi r24,lo8(13)
 410 01c0 8F93      		push r24
 411 01c2 CF93      		push r28
 412 01c4 E091 0000 		lds r30,printDebug_p
 413 01c8 F091 0000 		lds r31,printDebug_p+1
 414 01cc 0995      		icall
 115:one_wire_dualSwitch.c **** 
 116:one_wire_dualSwitch.c ****                   if ( DS2413_MAX_WRITE_VALUE >= ptr_owiStruct->value)
 416               	.LM17:
 417 01ce E091 0000 		lds r30,ptr_owiStruct
 418 01d2 F091 0000 		lds r31,ptr_owiStruct+1
 419 01d6 8385      		ldd r24,Z+11
 420 01d8 9485      		ldd r25,Z+12
 421 01da 2DB7      		in r18,__SP_L__
 422 01dc 3EB7      		in r19,__SP_H__
 423 01de 215F      		subi r18,-15
 424 01e0 3F4F      		sbci r19,-1
 425 01e2 0FB6      		in __tmp_reg__,__SREG__
 426 01e4 F894      		cli
 427 01e6 3EBF      		out __SP_H__,r19
 428 01e8 0FBE      		out __SREG__,__tmp_reg__
 429 01ea 2DBF      		out __SP_L__,r18
 430 01ec 8430      		cpi r24,4
 431 01ee 9105      		cpc r25,__zero_reg__
 432 01f0 00F4      		brsh .L12
 433               	.L19:
 117:one_wire_dualSwitch.c ****                   {
 118:one_wire_dualSwitch.c ****                      owiFindFamilyDevicesAndAccessValues(BUSES, NumDevicesFound, OWI_FAMILY_DS2413_
 435               	.LM18:
 436 01f2 2185      		ldd r18,Z+9
 437 01f4 3285      		ldd r19,Z+10
 438               	.L18:
 439 01f6 4AE3      		ldi r20,lo8(58)
 440 01f8 6091 0000 		lds r22,NumDevicesFound
 441 01fc 80E0      		ldi r24,lo8(BUSES)
 442 01fe 90E0      		ldi r25,hi8(BUSES)
 443               	/* epilogue start */
 119:one_wire_dualSwitch.c ****                   }
 120:one_wire_dualSwitch.c ****                   else
 121:one_wire_dualSwitch.c ****                   {
 122:one_wire_dualSwitch.c ****                      CommunicationError_p(ERRA, dynamicMessage_ErrorIndex, TRUE, PSTR("write argume
 123:one_wire_dualSwitch.c ****                      return;
 124:one_wire_dualSwitch.c ****                   }
 125:one_wire_dualSwitch.c ****                }
 126:one_wire_dualSwitch.c ****                else
 127:one_wire_dualSwitch.c ****                {
 128:one_wire_dualSwitch.c ****                   CommunicationError_p(ERRA, dynamicMessage_ErrorIndex, TRUE, PSTR("write argument:
 129:one_wire_dualSwitch.c ****                   return;
 130:one_wire_dualSwitch.c ****                }
 131:one_wire_dualSwitch.c ****                break;
 132:one_wire_dualSwitch.c ****             default: /* invalid */
 133:one_wire_dualSwitch.c ****                CommunicationError_p(ERRA, dynamicMessage_ErrorIndex, TRUE, PSTR("write argument: to
 134:one_wire_dualSwitch.c ****                break;
 135:one_wire_dualSwitch.c ****          }
 136:one_wire_dualSwitch.c ****       }
 137:one_wire_dualSwitch.c ****    }
 138:one_wire_dualSwitch.c **** }
 445               	.LM19:
 446 0200 DF91      		pop r29
 447 0202 CF91      		pop r28
 118:one_wire_dualSwitch.c ****                   }
 449               	.LM20:
 450 0204 0C94 0000 		jmp owiFindFamilyDevicesAndAccessValues
 451               	.L12:
 122:one_wire_dualSwitch.c ****                      return;
 453               	.LM21:
 454 0208 1F92      		push __zero_reg__
 455 020a 23E0      		ldi r18,lo8(3)
 456 020c 2F93      		push r18
 457 020e 9F93      		push r25
 458 0210 8F93      		push r24
 459 0212 80E0      		ldi r24,lo8(__c.3051)
 460 0214 90E0      		ldi r25,hi8(__c.3051)
 461 0216 9F93      		push r25
 462 0218 8F93      		push r24
 463 021a DF93      		push r29
 464 021c 8FEF      		ldi r24,lo8(-1)
 465 021e 8F93      		push r24
 466 0220 8CE9      		ldi r24,lo8(-100)
 467 0222 8F93      		push r24
 468 0224 DF93      		push r29
 469 0226 E091 0000 		lds r30,CommunicationError_p
 470 022a F091 0000 		lds r31,CommunicationError_p+1
 471 022e 0995      		icall
 123:one_wire_dualSwitch.c ****                   }
 473               	.LM22:
 474 0230 8DB7      		in r24,__SP_L__
 475 0232 9EB7      		in r25,__SP_H__
 476 0234 0A96      		adiw r24,10
 477 0236 0FB6      		in __tmp_reg__,__SREG__
 478 0238 F894      		cli
 479 023a 9EBF      		out __SP_H__,r25
 480 023c 0FBE      		out __SREG__,__tmp_reg__
 481 023e 8DBF      		out __SP_L__,r24
 482 0240 00C0      		rjmp .L1
 483               	.L11:
 128:one_wire_dualSwitch.c ****                   return;
 485               	.LM23:
 486 0242 80E0      		ldi r24,lo8(__c.3053)
 487 0244 90E0      		ldi r25,hi8(__c.3053)
 488 0246 00C0      		rjmp .L17
 489               	.L16:
 133:one_wire_dualSwitch.c ****                break;
 491               	.LM24:
 492 0248 80E0      		ldi r24,lo8(__c.3056)
 493 024a 90E0      		ldi r25,hi8(__c.3056)
 494               	.L17:
 495 024c 9F93      		push r25
 496 024e 8F93      		push r24
 497 0250 81E0      		ldi r24,lo8(1)
 498 0252 8F93      		push r24
 499 0254 9FEF      		ldi r25,lo8(-1)
 500 0256 9F93      		push r25
 501 0258 9CE9      		ldi r25,lo8(-100)
 502 025a 9F93      		push r25
 503 025c 8F93      		push r24
 504 025e E091 0000 		lds r30,CommunicationError_p
 505 0262 F091 0000 		lds r31,CommunicationError_p+1
 506 0266 0995      		icall
 134:one_wire_dualSwitch.c ****          }
 508               	.LM25:
 509 0268 0F90      		pop __tmp_reg__
 510 026a 0F90      		pop __tmp_reg__
 511 026c 0F90      		pop __tmp_reg__
 512 026e 0F90      		pop __tmp_reg__
 513 0270 0F90      		pop __tmp_reg__
 514 0272 0F90      		pop __tmp_reg__
 515               	.L1:
 516               	/* epilogue start */
 518               	.LM26:
 519 0274 DF91      		pop r29
 520 0276 CF91      		pop r28
 521 0278 0895      		ret
 523               	.Lscope1:
 527               	.global	ReadDualSwitches
 529               	ReadDualSwitches:
 139:one_wire_dualSwitch.c **** 
 140:one_wire_dualSwitch.c **** /*
 141:one_wire_dualSwitch.c ****  *this function reads the state of dual switch
 142:one_wire_dualSwitch.c ****  */
 143:one_wire_dualSwitch.c **** uint16_t ReadDualSwitches( unsigned char bus_pattern, unsigned char * id )
 144:one_wire_dualSwitch.c **** {
 531               	.LM27:
 532               	.LFBB2:
 533 027a 1F93      		push r17
 534 027c CF93      		push r28
 535 027e DF93      		push r29
 536               	/* prologue: function */
 537               	/* frame size = 0 */
 538               	/* stack size = 3 */
 539               	.L__stack_usage = 3
 540 0280 182F      		mov r17,r24
 541 0282 EB01      		movw r28,r22
 145:one_wire_dualSwitch.c ****    uint16_t value = 0x0;
 146:one_wire_dualSwitch.c **** 
 147:one_wire_dualSwitch.c ****    // continue if bus isn't active
 148:one_wire_dualSwitch.c ****    if ( 0 == ( ( owiBusMask & bus_pattern ) & 0xFF ) )
 543               	.LM28:
 544 0284 482F      		mov r20,r24
 545 0286 50E0      		ldi r21,0
 546 0288 2091 0000 		lds r18,owiBusMask
 547 028c 3091 0000 		lds r19,owiBusMask+1
 548 0290 2423      		and r18,r20
 549 0292 3523      		and r19,r21
 550 0294 232B      		or r18,r19
 551 0296 01F0      		breq .L25
 149:one_wire_dualSwitch.c ****    {
 150:one_wire_dualSwitch.c ****       return owiReadStatus_owi_bus_mismatch << 8;
 151:one_wire_dualSwitch.c ****    }
 152:one_wire_dualSwitch.c **** 
 153:one_wire_dualSwitch.c ****    // continue if bus doesn't contain any Dual Switches
 154:one_wire_dualSwitch.c ****    if ( 0 == ( ( owiDualSwitchMask & bus_pattern ) & 0xFF ) )
 553               	.LM29:
 554 0298 2091 0000 		lds r18,owiDualSwitchMask
 555 029c 3091 0000 		lds r19,owiDualSwitchMask+1
 556 02a0 2423      		and r18,r20
 557 02a2 3523      		and r19,r21
 558 02a4 232B      		or r18,r19
 559 02a6 01F0      		breq .L25
 155:one_wire_dualSwitch.c ****    {
 156:one_wire_dualSwitch.c ****       return owiReadStatus_owi_bus_mismatch << 8;
 157:one_wire_dualSwitch.c ****    }
 158:one_wire_dualSwitch.c **** 
 159:one_wire_dualSwitch.c ****    /* Reset, presence.*/
 160:one_wire_dualSwitch.c ****    if ( OWI_DetectPresence(bus_pattern) == 0 )
 561               	.LM30:
 562 02a8 0E94 0000 		call OWI_DetectPresence
 563 02ac 8823      		tst r24
 564 02ae 01F0      		breq .L26
 161:one_wire_dualSwitch.c ****    {
 162:one_wire_dualSwitch.c ****       return owiReadStatus_no_device_presence << 8;
 163:one_wire_dualSwitch.c ****    }
 164:one_wire_dualSwitch.c **** 
 165:one_wire_dualSwitch.c ****    OWI_MatchRom(id, bus_pattern); /* Match id found earlier*/
 566               	.LM31:
 567 02b0 612F      		mov r22,r17
 568 02b2 CE01      		movw r24,r28
 569 02b4 0E94 0000 		call OWI_MatchRom
 166:one_wire_dualSwitch.c ****    OWI_SendByte(DS2413_PIO_ACCESS_READ, bus_pattern); //PIO Access read command
 571               	.LM32:
 572 02b8 612F      		mov r22,r17
 573 02ba 85EF      		ldi r24,lo8(-11)
 574 02bc 0E94 0000 		call OWI_SendByte
 167:one_wire_dualSwitch.c **** 
 168:one_wire_dualSwitch.c ****    /*Read first byte and place them in the 16 bit channel variable*/
 169:one_wire_dualSwitch.c ****    value = OWI_ReceiveByte(bus_pattern);
 576               	.LM33:
 577 02c0 812F      		mov r24,r17
 578 02c2 0E94 0000 		call OWI_ReceiveByte
 170:one_wire_dualSwitch.c ****    value &= 0xFF;
 580               	.LM34:
 581 02c6 C82F      		mov r28,r24
 582 02c8 D0E0      		ldi r29,0
 171:one_wire_dualSwitch.c **** 
 172:one_wire_dualSwitch.c ****    OWI_DetectPresence(bus_pattern); /* generate RESET to stop slave sending its status and presence
 584               	.LM35:
 585 02ca 812F      		mov r24,r17
 586 02cc 0E94 0000 		call OWI_DetectPresence
 173:one_wire_dualSwitch.c **** 
 174:one_wire_dualSwitch.c ****    return value | owiReadWriteStatus_OK << 8;
 588               	.LM36:
 589 02d0 CE01      		movw r24,r28
 590 02d2 00C0      		rjmp .L23
 591               	.L25:
 150:one_wire_dualSwitch.c ****    }
 593               	.LM37:
 594 02d4 80E0      		ldi r24,0
 595 02d6 91E0      		ldi r25,lo8(1)
 596 02d8 00C0      		rjmp .L23
 597               	.L26:
 162:one_wire_dualSwitch.c ****    }
 599               	.LM38:
 600 02da 80E0      		ldi r24,0
 601 02dc 94E0      		ldi r25,lo8(4)
 602               	.L23:
 603               	/* epilogue start */
 175:one_wire_dualSwitch.c **** }//END of ReadDualSwitches function
 605               	.LM39:
 606 02de DF91      		pop r29
 607 02e0 CF91      		pop r28
 608 02e2 1F91      		pop r17
 609 02e4 0895      		ret
 614               	.Lscope2:
 619               	.global	WriteDualSwitches
 621               	WriteDualSwitches:
 176:one_wire_dualSwitch.c **** 
 177:one_wire_dualSwitch.c **** /*
 178:one_wire_dualSwitch.c ****  *this function writes the state of dual switch
 179:one_wire_dualSwitch.c ****  */
 180:one_wire_dualSwitch.c **** 
 181:one_wire_dualSwitch.c **** uint16_t WriteDualSwitches( unsigned char bus_pattern, unsigned char * id, uint8_t value )
 182:one_wire_dualSwitch.c **** {
 623               	.LM40:
 624               	.LFBB3:
 625 02e6 EF92      		push r14
 626 02e8 FF92      		push r15
 627 02ea 0F93      		push r16
 628 02ec 1F93      		push r17
 629 02ee CF93      		push r28
 630 02f0 DF93      		push r29
 631               	/* prologue: function */
 632               	/* frame size = 0 */
 633               	/* stack size = 6 */
 634               	.L__stack_usage = 6
 635 02f2 E82E      		mov r14,r24
 636 02f4 EB01      		movw r28,r22
 637 02f6 F42E      		mov r15,r20
 183:one_wire_dualSwitch.c ****    static unsigned char timeout_flag;
 184:one_wire_dualSwitch.c ****    static uint32_t count;
 185:one_wire_dualSwitch.c ****    static uint8_t status;
 186:one_wire_dualSwitch.c ****    static uint32_t maxcount = OWI_DUAL_SWITCHES_MAXIMUM_WRITE_ACCESS_COUNTS;
 187:one_wire_dualSwitch.c **** 
 188:one_wire_dualSwitch.c ****    // continue if bus isn't active
 189:one_wire_dualSwitch.c ****    if ( 0 == ( ( owiBusMask & bus_pattern ) & 0xFF ) )
 639               	.LM41:
 640 02f8 482F      		mov r20,r24
 641 02fa 50E0      		ldi r21,0
 642 02fc 2091 0000 		lds r18,owiBusMask
 643 0300 3091 0000 		lds r19,owiBusMask+1
 644 0304 2423      		and r18,r20
 645 0306 3523      		and r19,r21
 646 0308 232B      		or r18,r19
 647 030a 01F4      		brne .+2
 648 030c 00C0      		rjmp .L35
 190:one_wire_dualSwitch.c ****    {
 191:one_wire_dualSwitch.c ****       return owiReadStatus_owi_bus_mismatch << 8;
 192:one_wire_dualSwitch.c ****    }
 193:one_wire_dualSwitch.c **** 
 194:one_wire_dualSwitch.c ****    // continue if bus doesn't contain any Dual Switches
 195:one_wire_dualSwitch.c ****    if ( 0 == ( ( owiDualSwitchMask & bus_pattern ) & 0xFF ) )
 650               	.LM42:
 651 030e 2091 0000 		lds r18,owiDualSwitchMask
 652 0312 3091 0000 		lds r19,owiDualSwitchMask+1
 653 0316 2423      		and r18,r20
 654 0318 3523      		and r19,r21
 655 031a 232B      		or r18,r19
 656 031c 01F4      		brne .+2
 657 031e 00C0      		rjmp .L35
 196:one_wire_dualSwitch.c ****    {
 197:one_wire_dualSwitch.c ****       return owiReadStatus_owi_bus_mismatch << 8;
 198:one_wire_dualSwitch.c ****    }
 199:one_wire_dualSwitch.c **** 
 200:one_wire_dualSwitch.c ****    /* Reset, presence.*/
 201:one_wire_dualSwitch.c ****    if ( OWI_DetectPresence(bus_pattern) == 0 )
 659               	.LM43:
 660 0320 0E94 0000 		call OWI_DetectPresence
 661 0324 8823      		tst r24
 662 0326 01F4      		brne .+2
 663 0328 00C0      		rjmp .L36
 202:one_wire_dualSwitch.c ****    {
 203:one_wire_dualSwitch.c ****       return owiReadStatus_no_device_presence << 8;
 204:one_wire_dualSwitch.c ****    }
 205:one_wire_dualSwitch.c **** 
 206:one_wire_dualSwitch.c ****    count = maxcount;
 665               	.LM44:
 666 032a 04E6      		ldi r16,lo8(100)
 667 032c 10E0      		ldi r17,0
 668 032e 20E0      		ldi r18,0
 669 0330 30E0      		ldi r19,0
 670 0332 0093 0000 		sts count.3069,r16
 671 0336 1093 0000 		sts count.3069+1,r17
 672 033a 2093 0000 		sts count.3069+2,r18
 673 033e 3093 0000 		sts count.3069+3,r19
 207:one_wire_dualSwitch.c ****    timeout_flag = FALSE;
 675               	.LM45:
 676 0342 1092 0000 		sts timeout_flag.3068,__zero_reg__
 208:one_wire_dualSwitch.c ****    status = 0;
 678               	.LM46:
 679 0346 1092 0000 		sts status.3070,__zero_reg__
 209:one_wire_dualSwitch.c **** 
 210:one_wire_dualSwitch.c ****    /* Match id found earlier*/
 211:one_wire_dualSwitch.c ****    OWI_MatchRom(id, bus_pattern);
 681               	.LM47:
 682 034a 6E2D      		mov r22,r14
 683 034c CE01      		movw r24,r28
 684 034e 0E94 0000 		call OWI_MatchRom
 212:one_wire_dualSwitch.c ****    /* PIO Access write command */
 213:one_wire_dualSwitch.c ****    OWI_SendByte(DS2413_PIO_ACCESS_WRITE, bus_pattern);
 686               	.LM48:
 687 0352 6E2D      		mov r22,r14
 688 0354 8AE5      		ldi r24,lo8(90)
 689 0356 0E94 0000 		call OWI_SendByte
 690               	.L29:
 214:one_wire_dualSwitch.c **** 
 215:one_wire_dualSwitch.c ****    /* loop writing value and its complement, and waiting for confirmation */
 216:one_wire_dualSwitch.c ****    while (DS2413_WRITE_CONFIRMATION_PATTERN != status )
 692               	.LM49:
 693 035a 8091 0000 		lds r24,status.3070
 694 035e 8A3A      		cpi r24,lo8(-86)
 695 0360 01F0      		breq .L31
 217:one_wire_dualSwitch.c ****    {
 218:one_wire_dualSwitch.c ****       status = 0;
 697               	.LM50:
 698 0362 1092 0000 		sts status.3070,__zero_reg__
 219:one_wire_dualSwitch.c ****       /* timeout check */
 220:one_wire_dualSwitch.c ****       if ( 0 == --count)
 700               	.LM51:
 701 0366 0091 0000 		lds r16,count.3069
 702 036a 1091 0000 		lds r17,count.3069+1
 703 036e 2091 0000 		lds r18,count.3069+2
 704 0372 3091 0000 		lds r19,count.3069+3
 705 0376 0150      		subi r16,1
 706 0378 1109      		sbc r17,__zero_reg__
 707 037a 2109      		sbc r18,__zero_reg__
 708 037c 3109      		sbc r19,__zero_reg__
 709 037e 0093 0000 		sts count.3069,r16
 710 0382 1093 0000 		sts count.3069+1,r17
 711 0386 2093 0000 		sts count.3069+2,r18
 712 038a 3093 0000 		sts count.3069+3,r19
 713 038e 012B      		or r16,r17
 714 0390 022B      		or r16,r18
 715 0392 032B      		or r16,r19
 716 0394 01F4      		brne .L30
 221:one_wire_dualSwitch.c ****       {
 222:one_wire_dualSwitch.c ****          timeout_flag = TRUE;
 718               	.LM52:
 719 0396 81E0      		ldi r24,lo8(1)
 720 0398 8093 0000 		sts timeout_flag.3068,r24
 223:one_wire_dualSwitch.c ****          break;
 722               	.LM53:
 723 039c 00C0      		rjmp .L31
 724               	.L30:
 224:one_wire_dualSwitch.c ****       }
 225:one_wire_dualSwitch.c **** 
 226:one_wire_dualSwitch.c ****       OWI_SendByte( (value |= 0xFC ), bus_pattern); // write value 0:on 1:off
 726               	.LM54:
 727 039e 8F2D      		mov r24,r15
 728 03a0 8C6F      		ori r24,lo8(-4)
 729 03a2 F82E      		mov r15,r24
 730 03a4 6E2D      		mov r22,r14
 731 03a6 0E94 0000 		call OWI_SendByte
 227:one_wire_dualSwitch.c ****       OWI_SendByte(~(value |= 0xFC ), bus_pattern); // to confirm, write inverted
 733               	.LM55:
 734 03aa 6E2D      		mov r22,r14
 735 03ac 8F2D      		mov r24,r15
 736 03ae 8095      		com r24
 737 03b0 0E94 0000 		call OWI_SendByte
 228:one_wire_dualSwitch.c **** 
 229:one_wire_dualSwitch.c ****       /*Read status */
 230:one_wire_dualSwitch.c ****       status = OWI_ReceiveByte(bus_pattern);
 739               	.LM56:
 740 03b4 8E2D      		mov r24,r14
 741 03b6 0E94 0000 		call OWI_ReceiveByte
 742 03ba 8093 0000 		sts status.3070,r24
 743 03be 00C0      		rjmp .L29
 744               	.L31:
 231:one_wire_dualSwitch.c ****       status &= 0xFF;
 232:one_wire_dualSwitch.c ****    }
 233:one_wire_dualSwitch.c **** 
 234:one_wire_dualSwitch.c ****    if ( FALSE == timeout_flag )
 746               	.LM57:
 747 03c0 8091 0000 		lds r24,timeout_flag.3068
 748 03c4 8111      		cpse r24,__zero_reg__
 749 03c6 00C0      		rjmp .L33
 235:one_wire_dualSwitch.c ****    {
 236:one_wire_dualSwitch.c ****       /*Read first byte*/
 237:one_wire_dualSwitch.c ****       value = OWI_ReceiveByte(bus_pattern);
 751               	.LM58:
 752 03c8 8E2D      		mov r24,r14
 753 03ca 0E94 0000 		call OWI_ReceiveByte
 754 03ce C82F      		mov r28,r24
 238:one_wire_dualSwitch.c ****       value &= 0xFF;
 239:one_wire_dualSwitch.c ****       OWI_DetectPresence(bus_pattern); /* generate RESET to stop slave sending its status and prese
 756               	.LM59:
 757 03d0 8E2D      		mov r24,r14
 758 03d2 0E94 0000 		call OWI_DetectPresence
 240:one_wire_dualSwitch.c **** 
 241:one_wire_dualSwitch.c ****       return value | owiReadWriteStatus_OK << 8;
 760               	.LM60:
 761 03d6 8C2F      		mov r24,r28
 762 03d8 90E0      		ldi r25,0
 763 03da 00C0      		rjmp .L28
 764               	.L33:
 242:one_wire_dualSwitch.c ****    }
 243:one_wire_dualSwitch.c ****    else
 244:one_wire_dualSwitch.c ****    {
 245:one_wire_dualSwitch.c ****       OWI_DetectPresence(bus_pattern); /* generate RESET to stop slave sending its status and prese
 766               	.LM61:
 767 03dc 8E2D      		mov r24,r14
 768 03de 0E94 0000 		call OWI_DetectPresence
 246:one_wire_dualSwitch.c **** 
 247:one_wire_dualSwitch.c ****       CommunicationError_p(ERRG, dynamicMessage_ErrorIndex, TRUE, PSTR("OWI Dual Switch write value
 770               	.LM62:
 771 03e2 20E0      		ldi r18,lo8(__c.3075)
 772 03e4 30E0      		ldi r19,hi8(__c.3075)
 773 03e6 3F93      		push r19
 774 03e8 2F93      		push r18
 775 03ea 81E0      		ldi r24,lo8(1)
 776 03ec 8F93      		push r24
 777 03ee 8FEF      		ldi r24,lo8(-1)
 778 03f0 8F93      		push r24
 779 03f2 8CE9      		ldi r24,lo8(-100)
 780 03f4 8F93      		push r24
 781 03f6 1F92      		push __zero_reg__
 782 03f8 E091 0000 		lds r30,CommunicationError_p
 783 03fc F091 0000 		lds r31,CommunicationError_p+1
 784 0400 0995      		icall
 248:one_wire_dualSwitch.c **** 
 249:one_wire_dualSwitch.c ****       return value | owiWriteStatus_Timeout << 8;
 786               	.LM63:
 787 0402 8F2D      		mov r24,r15
 788 0404 90E0      		ldi r25,0
 789 0406 9860      		ori r25,8
 790 0408 0F90      		pop __tmp_reg__
 791 040a 0F90      		pop __tmp_reg__
 792 040c 0F90      		pop __tmp_reg__
 793 040e 0F90      		pop __tmp_reg__
 794 0410 0F90      		pop __tmp_reg__
 795 0412 0F90      		pop __tmp_reg__
 796 0414 00C0      		rjmp .L28
 797               	.L35:
 191:one_wire_dualSwitch.c ****    }
 799               	.LM64:
 800 0416 80E0      		ldi r24,0
 801 0418 91E0      		ldi r25,lo8(1)
 802 041a 00C0      		rjmp .L28
 803               	.L36:
 203:one_wire_dualSwitch.c ****    }
 805               	.LM65:
 806 041c 80E0      		ldi r24,0
 807 041e 94E0      		ldi r25,lo8(4)
 808               	.L28:
 809               	/* epilogue start */
 250:one_wire_dualSwitch.c ****    }
 251:one_wire_dualSwitch.c **** 
 252:one_wire_dualSwitch.c **** 
 253:one_wire_dualSwitch.c ****    return  value | owiReadWriteStatus_OK << 8;
 254:one_wire_dualSwitch.c **** }//END of ReadDualSwitches function
 811               	.LM66:
 812 0420 DF91      		pop r29
 813 0422 CF91      		pop r28
 814 0424 1F91      		pop r17
 815 0426 0F91      		pop r16
 816 0428 FF90      		pop r15
 817 042a EF90      		pop r14
 818 042c 0895      		ret
 825               	.Lscope3:
 826               		.section	.progmem.data,"a",@progbits
 829               	__c.3075:
 830 0000 4F57 4920 		.string	"OWI Dual Switch write value timeout"
 830      4475 616C 
 830      2053 7769 
 830      7463 6820 
 830      7772 6974 
 831               		.local	status.3070
 832               		.comm	status.3070,1,1
 833               		.local	timeout_flag.3068
 834               		.comm	timeout_flag.3068,1,1
 835               		.local	count.3069
 836               		.comm	count.3069,4,1
 839               	__c.3056:
 840 0024 7772 6974 		.string	"write argument: too many arguments"
 840      6520 6172 
 840      6775 6D65 
 840      6E74 3A20 
 840      746F 6F20 
 843               	__c.3053:
 844 0047 7772 6974 		.string	"write argument: invalid arguments"
 844      6520 6172 
 844      6775 6D65 
 844      6E74 3A20 
 844      696E 7661 
 847               	__c.3051:
 848 0069 7772 6974 		.string	"write argument: %#x is out of range [0,%#x] ... skipping"
 848      6520 6172 
 848      6775 6D65 
 848      6E74 3A20 
 848      2523 7820 
 851               	__c.3049:
 852 00a2 4F57 4453 		.string	"OWDS write ID: %#x pointer (%p)"
 852      2077 7269 
 852      7465 2049 
 852      443A 2025 
 852      2378 2070 
 855               	__c.3046:
 856 00c2 7772 6974 		.string	"write argument: %#x is out of range [0,%#x] ... skipping"
 856      6520 6172 
 856      6775 6D65 
 856      6E74 3A20 
 856      2523 7820 
 859               	__c.3044:
 860 00fb 4F57 4453 		.string	"OWDS write all: %#x, pointer (%p)"
 860      2077 7269 
 860      7465 2061 
 860      6C6C 3A20 
 860      2523 782C 
 863               	__c.3042:
 864 011d 4F57 4453 		.string	"OWDS read ID"
 864      2072 6561 
 864      6420 4944 
 864      00
 867               	__c.3038:
 868 012a 4F57 4453 		.string	"OWDS read all"
 868      2072 6561 
 868      6420 616C 
 868      6C00 
 869               	.global	p_owiDualSwitchMask
 870               		.data
 873               	p_owiDualSwitchMask:
 874 0000 0000      		.word	owiDualSwitchMask
 875               	.global	owiDualSwitchMask
 876               		.section .bss
 879               	owiDualSwitchMask:
 880 0000 0000      		.zero	2
 881               		.section	.progmem.data,"a",@progbits
 884               	filename:
 885 0138 6F6E 655F 		.string	"one_wire_dualSwitch.c"
 885      7769 7265 
 885      5F64 7561 
 885      6C53 7769 
 885      7463 682E 
 886               		.comm	ErrorCodes,1,1
 887               		.comm	canTimerInterval,4,1
 893               		.text
 895               	.Letext0:
 896               		.ident	"GCC: (GNU) 4.8.1"
 897               	.global __do_copy_data
 898               	.global __do_clear_bss
DEFINED SYMBOLS
                            *ABS*:00000000 one_wire_dualSwitch.c
     /tmp/ccp5Z7B9.s:2      *ABS*:0000003e __SP_H__
     /tmp/ccp5Z7B9.s:3      *ABS*:0000003d __SP_L__
     /tmp/ccp5Z7B9.s:4      *ABS*:0000003f __SREG__
     /tmp/ccp5Z7B9.s:5      *ABS*:0000003b __RAMPZ__
     /tmp/ccp5Z7B9.s:6      *ABS*:00000000 __tmp_reg__
     /tmp/ccp5Z7B9.s:7      *ABS*:00000001 __zero_reg__
     /tmp/ccp5Z7B9.s:161    .text:00000000 owiDualSwitches
     /tmp/ccp5Z7B9.s:879    .bss:00000000 owiDualSwitchMask
     /tmp/ccp5Z7B9.s:873    .data:00000000 p_owiDualSwitchMask
     /tmp/ccp5Z7B9.s:867    .progmem.data:0000012a __c.3038
     /tmp/ccp5Z7B9.s:884    .progmem.data:00000138 filename
     /tmp/ccp5Z7B9.s:863    .progmem.data:0000011d __c.3042
     /tmp/ccp5Z7B9.s:859    .progmem.data:000000fb __c.3044
     /tmp/ccp5Z7B9.s:855    .progmem.data:000000c2 __c.3046
     /tmp/ccp5Z7B9.s:851    .progmem.data:000000a2 __c.3049
     /tmp/ccp5Z7B9.s:847    .progmem.data:00000069 __c.3051
     /tmp/ccp5Z7B9.s:843    .progmem.data:00000047 __c.3053
     /tmp/ccp5Z7B9.s:839    .progmem.data:00000024 __c.3056
     /tmp/ccp5Z7B9.s:529    .text:0000027a ReadDualSwitches
     /tmp/ccp5Z7B9.s:621    .text:000002e6 WriteDualSwitches
     /tmp/ccp5Z7B9.s:834    .bss:00000004 count.3069
     /tmp/ccp5Z7B9.s:832    .bss:00000003 timeout_flag.3068
                             .bss:00000002 status.3070
     /tmp/ccp5Z7B9.s:829    .progmem.data:00000000 __c.3075
                            *COM*:00000001 ErrorCodes
                            *COM*:00000004 canTimerInterval

UNDEFINED SYMBOLS
BUSES
owiReadDevicesID
NumDevicesFound
owiScanIDS
printDebug_p
ptr_owiStruct
CommunicationError_p
owiFindFamilyDevicesAndAccessValues
owiBusMask
OWI_DetectPresence
OWI_MatchRom
OWI_SendByte
OWI_ReceiveByte
__do_copy_data
__do_clear_bss
