📄 battif.cod
字号:
00034 e1dd30b0 ldrh r3, [sp]
; 384 : value |= (0x1 << channel);
00038 e3a01001 mov r1, #1
; 385 : value |= DIGITISER_REG0_POLL;
; 386 : WriteAC97(WFS_DIGITISER_REG0, value, DEV_BATTERY);
0003c e3a02003 mov r2, #3
00040 e2033cfd and r3, r3, #0xFD, 24
00044 e1833411 orr r3, r3, r1, lsl r4
00048 e3a00074 mov r0, #0x74
0004c e3833c02 orr r3, r3, #2, 24
00050 e1a01803 mov r1, r3, lsl #16
00054 e1a01821 mov r1, r1, lsr #16
00058 e1cd10b0 strh r1, [sp]
0005c eb000000 bl WriteAC97
00060 |$L43504|
; 387 :
; 388 : // Wait the sample to be completed
; 389 : do
; 390 : {
; 391 : // wait for sample completion
; 392 : ReadAC97(WFS_DIGITISER_REG0, (unsigned short *)&value, DEV_BATTERY);
00060 e3a02003 mov r2, #3
00064 e28d1000 add r1, sp, #0
00068 e3a00074 mov r0, #0x74
0006c eb000000 bl ReadAC97
; 393 : Wait(10);
00070 e3a0000a mov r0, #0xA
00074 eb000000 bl Wait
; 394 : } while(value & DIGITISER_REG0_POLL);
00078 e1dd30b0 ldrh r3, [sp]
0007c e3130c02 tst r3, #2, 24
00080 1afffff6 bne |$L43504|
; 395 :
; 396 : ReadAC97(WFS_DIGITISER_READBACK, (unsigned short *)&value, DEV_BATTERY);
00084 e3a02003 mov r2, #3
00088 e28d1000 add r1, sp, #0
0008c e3a0007a mov r0, #0x7A
00090 eb000000 bl ReadAC97
; 397 :
; 398 : // RETAILMSG(1, (TEXT("Channel = %d\r\n"), (value & DIGITISER_READ_BACK_ADCSRC_MASK) >> 12));
; 399 :
; 400 : switch( channel )
00094 e3540001 cmp r4, #1
00098 0a000023 beq |$L43513|
0009c e3540002 cmp r4, #2
000a0 0a00001d beq |$L43516|
000a4 e3540003 cmp r4, #3
000a8 0a000017 beq |$L43518|
000ac e3540004 cmp r4, #4
000b0 0a000011 beq |$L43520|
000b4 e3540005 cmp r4, #5
000b8 0a00000b beq |$L43522|
000bc e3540006 cmp r4, #6
000c0 0a000005 beq |$L43524|
000c4 e3540007 cmp r4, #7
000c8 1a000022 bne |$L43510|
; 447 : }
; 448 : *sample = value & DIGITISER_READ_BACK_ADCD_MASK;
; 449 : break;
; 450 : case AUX4:
; 451 : if((value & DIGITISER_READ_BACK_ADCSRC_MASK) != (AUX4 << 12) )
000cc e1dd20b0 ldrh r2, [sp]
000d0 e2023a07 and r3, r2, #7, 20
000d4 e3530a07 cmp r3, #7, 20
; 452 : {
; 453 : EdbgOutputDebugString("sampleADC: False channel!\r\n");
; 454 : return FALSE;
000d8 ea000016 b |$L43728|
000dc |$L43524|
; 439 : }
; 440 : *sample = value & DIGITISER_READ_BACK_ADCD_MASK;
; 441 : break;
; 442 : case AUX3:
; 443 : if((value & DIGITISER_READ_BACK_ADCSRC_MASK) != (AUX3 << 12) )
000dc e1dd20b0 ldrh r2, [sp]
000e0 e2023a07 and r3, r2, #7, 20
000e4 e3530a06 cmp r3, #6, 20
; 444 : {
; 445 : EdbgOutputDebugString("sampleADC: False channel!\r\n");
; 446 : return FALSE;
000e8 ea000012 b |$L43728|
000ec |$L43522|
; 431 : }
; 432 : *sample = value & DIGITISER_READ_BACK_ADCD_MASK;
; 433 : break;
; 434 : case AUX2:
; 435 : if((value & DIGITISER_READ_BACK_ADCSRC_MASK) != (AUX2 << 12) )
000ec e1dd20b0 ldrh r2, [sp]
000f0 e2023a07 and r3, r2, #7, 20
000f4 e3530a05 cmp r3, #5, 20
; 436 : {
; 437 : EdbgOutputDebugString("sampleADC: False channel!\r\n");
; 438 : return FALSE;
000f8 ea00000e b |$L43728|
000fc |$L43520|
; 423 : }
; 424 : *sample = value & DIGITISER_READ_BACK_ADCD_MASK;
; 425 : break;
; 426 : case AUX1:
; 427 : if((value & DIGITISER_READ_BACK_ADCSRC_MASK) != (AUX1 << 12) )
000fc e1dd20b0 ldrh r2, [sp]
00100 e2023a07 and r3, r2, #7, 20
00104 e3530901 cmp r3, #1, 18
; 428 : {
; 429 : EdbgOutputDebugString("sampleADC: False channel!\r\n");
; 430 : return FALSE;
00108 ea00000a b |$L43728|
0010c |$L43518|
; 415 : }
; 416 : *sample = value & DIGITISER_READ_BACK_ADCD_MASK;
; 417 : break;
; 418 : case PRSS:
; 419 : if((value & DIGITISER_READ_BACK_ADCSRC_MASK) != (PRSS << 12) )
0010c e1dd20b0 ldrh r2, [sp]
00110 e2023a07 and r3, r2, #7, 20
00114 e3530a03 cmp r3, #3, 20
; 420 : {
; 421 : EdbgOutputDebugString("sampleADC: False channel!\r\n");
; 422 : return FALSE;
00118 ea000006 b |$L43728|
0011c |$L43516|
; 409 : break;
; 410 : case COOY:
; 411 : if((value & DIGITISER_READ_BACK_ADCSRC_MASK) != (COOY << 12) )
0011c e1dd20b0 ldrh r2, [sp]
00120 e2023a07 and r3, r2, #7, 20
00124 e3530a02 cmp r3, #2, 20
; 412 : {
; 413 : EdbgOutputDebugString("sampleADC: False channel!\r\n");
; 414 : return FALSE;
00128 ea000002 b |$L43728|
0012c |$L43513|
; 401 : {
; 402 : case COOX:
; 403 : if((value & DIGITISER_READ_BACK_ADCSRC_MASK) != (COOX << 12) )
0012c e1dd20b0 ldrh r2, [sp]
00130 e2023a07 and r3, r2, #7, 20
00134 e3530a01 cmp r3, #1, 20
00138 |$L43728|
00138 0a000002 beq |$L43514|
; 404 : {
; 405 : EdbgOutputDebugString("sampleADC: False channel!\r\n");
0013c e59f003c ldr r0, [pc, #0x3C]
00140 eb000000 bl EdbgOutputDebugString
; 406 : return FALSE;
00144 ea000008 b |$L43727|
00148 |$L43514|
; 407 : }
; 408 : *sample = value & DIGITISER_READ_BACK_ADCD_MASK;
00148 e3a03eff mov r3, #0xFF, 28
0014c e383300f orr r3, r3, #0xF
00150 e0023003 and r3, r2, r3
00154 e5853000 str r3, [r5]
00158 |$L43510|
; 455 : }
; 456 : *sample = value & DIGITISER_READ_BACK_ADCD_MASK;
; 457 : break;
; 458 : default:
; 459 : break;
; 460 : }
; 461 :
; 462 : return TRUE;
00158 e3a00001 mov r0, #1
0015c ea000003 b |$L43498|
00160 |$L43501|
; 377 : {
; 378 : EdbgOutputDebugString("sampleADC: Invalid channel(channel = %d)!\r\n", channel);
00160 e59f0014 ldr r0, [pc, #0x14]
00164 e1a01004 mov r1, r4
00168 eb000000 bl EdbgOutputDebugString
0016c |$L43727|
; 379 : return FALSE;
0016c e3a00000 mov r0, #0
00170 |$L43498|
; 463 : }
00170 e28dd004 add sp, sp, #4
00174 e8bd4030 ldmia sp!, {r4, r5, lr}
00178 e12fff1e bx lr
0017c |$L43734|
0017c 00000000 DCD |??_C@_0CM@IBNDAIBL@sampleADC?3?5Invalid?5channel?$CIchann@|
00180 00000000 DCD |??_C@_0BM@MBMPIEFD@sampleADC?3?5False?5channel?$CB?$AN?6?$AA@|
00184 |$M43730|
ENDP ; |sampleADC|
EXPORT |GetPowerStatus|
EXPORT |??_C@_0BD@HEOOKLFG@PowerStatus?3?5?$CFd?5?$AN?6?$AA@| [ DATA ] ; `string'
IMPORT |GPIOReadControllerGPLRValue|
00000 AREA |.text| { |GetPowerStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetPowerStatus|, PDATA, SELECTION=5, ASSOC=|.text| { |GetPowerStatus| } ; comdat associative
|$T43743| DCD |$L43742|
DCD 0x40001a01
00000 AREA |.rdata| { |??_C@_0BD@HEOOKLFG@PowerStatus?3?5?$CFd?5?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BD@HEOOKLFG@PowerStatus?3?5?$CFd?5?$AN?6?$AA@| DCB "PowerStatus: "
DCB "%d ", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetPowerStatus| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetPowerStatus| PROC
; 466 : {
00000 |$L43742|
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M43740|
; 467 : BOOL PowerStatus = FALSE;
; 468 :
; 469 : GPIOSetController((XLLP_GPIO_T *) vp_GPIORegs, USBINT |GPIO_AF0 |GPIO_IN);
00004 e59f4058 ldr r4, [pc, #0x58]
00008 e3a01a01 mov r1, #1, 20
0000c e381100c orr r1, r1, #0xC
00010 e5940000 ldr r0, [r4]
00014 eb000000 bl GPIOSetController
; 470 : GPIOSetController((XLLP_GPIO_T *) vp_GPIORegs, EXTPWR|GPIO_AF0 |GPIO_IN);
00018 e5940000 ldr r0, [r4]
0001c e3a01d41 mov r1, #0x41, 26
00020 e381101f orr r1, r1, #0x1F
00024 eb000000 bl GPIOSetController
; 471 :
; 472 : PowerStatus = ISEXTPWRON() | ISUSBPWRON();
00028 e5940000 ldr r0, [r4]
0002c e3a0105f mov r1, #0x5F
00030 eb000000 bl GPIOReadControllerGPLRValue
00034 e1a05000 mov r5, r0
00038 e5940000 ldr r0, [r4]
0003c e3a0100c mov r1, #0xC
00040 eb000000 bl GPIOReadControllerGPLRValue
00044 e1a04000 mov r4, r0
; 473 :
; 474 : EdbgOutputDebugString ("PowerStatus: %d \r\n", PowerStatus);
00048 e59f0010 ldr r0, [pc, #0x10]
0004c e1841005 orr r1, r4, r5
00050 eb000000 bl EdbgOutputDebugString
; 475 :
; 476 : return PowerStatus;
00054 e1840005 orr r0, r4, r5
; 477 : }
00058 e8bd4030 ldmia sp!, {r4, r5, lr}
0005c e12fff1e bx lr
00060 |$L43745|
00060 00000000 DCD |??_C@_0BD@HEOOKLFG@PowerStatus?3?5?$CFd?5?$AN?6?$AA@|
00064 00000000 DCD |vp_GPIORegs|
00068 |$M43741|
ENDP ; |GetPowerStatus|
EXPORT |GetBatteryFilter|
EXPORT |??_C@_0O@OLGDFBEI@filter?3?5?$CFd?5?$AN?6?$AA@| [ DATA ] ; `string'
00000 AREA |.text| { |GetBatteryFilter| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetBatteryFilter|, PDATA, SELECTION=5, ASSOC=|.text| { |GetBatteryFilter| } ; comdat associative
|$T43754| DCD |$L43753|
DCD 0x40001202
00000 AREA |.rdata| { |??_C@_0O@OLGDFBEI@filter?3?5?$CFd?5?$AN?6?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0O@OLGDFBEI@filter?3?5?$CFd?5?$AN?6?$AA@| DCB "filter: %d ", 0xd, 0xa
DCB 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetBatteryFilter| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetBatteryFilter| PROC
; 480 : {
00000 |$L43753|
00000 e92d4010 stmdb sp!, {r4, lr}
00004 e24dd004 sub sp, sp, #4
00008 |$M43751|
; 481 : DWORD sample;
; 482 :
; 483 : if(sampleADC(&sample, AUX3))
00008 e3a01006 mov r1, #6
0000c e28d0000 add r0, sp, #0
00010 eb000000 bl sampleADC
00014 e3500000 cmp r0, #0
00018 0a000004 beq |$L43538|
; 484 : {
; 485 : EdbgOutputDebugString ("filter: %d \r\n", sample);
0001c e59d4000 ldr r4, [sp]
00020 e59f001c ldr r0, [pc, #0x1C]
00024 e1a01004 mov r1, r4
00028 eb000000 bl EdbgOutputDebugString
; 486 : return(sample);
0002c ea000000 b |$L43540|
00030 |$L43538|
; 487 : }
; 488 : else
; 489 : {
; 490 : return (0);
00030 e3a04000 mov r4, #0
00034 |$L43540|
; 486 : return(sample);
00034 e1a00004 mov r0, r4
; 491 : }
; 492 : }
00038 e28dd004 add sp, sp, #4
0003c e8bd4010 ldmia sp!, {r4, lr}
00040 e12fff1e bx lr
00044 |$L43756|
00044 00000000 DCD |??_C@_0O@OLGDFBEI@filter?3?5?$CFd?5?$AN?6?$AA@|
00048 |$M43752|
ENDP ; |GetBatteryFilter|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -