; generated by Component: ARM Compiler 5.06 update 6 (build 750) Tool: ArmCC [4d3637]
; commandline ArmCC [--c99 --list --split_sections --debug -c --asm --interleave --gnu -o.\objects\app_tp_transfer.o --asm_dir=.\Listings\ --list_dir=.\Listings\ --depend=.\objects\app_tp_transfer.d --cpu=Cortex-M0 --apcs=interwork -O3 --diag_suppress=9931 -I..\..\src -I..\..\src\board -I..\..\src\common -I..\..\src\sdk\include -I..\..\src\app\demo -I..\..\src\sdk\include\M0 -I..\..\src\app -I..\..\src\app\module_demo -I..\..\src\app\touch -I..\..\src\app\S8 -I..\..\src\app\S9 -I..\CVWL568 -I.\RTE\_ISP_568 -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.5.1\CMSIS\Core\Include -IC:\Keil_v5\ARM\PACK\ARM\CMSIS\5.5.1\Device\ARM\ARMCM0\Include -D__MICROLIB -D__UVISION_VERSION=528 -D_RTE_ -DARMCM0 -DISP_568 --omf_browse=.\objects\app_tp_transfer.crf ..\..\src\app\demo\app_tp_transfer.c]
                          THUMB

                          AREA ||i.S20_Start_init||, CODE, READONLY, ALIGN=2

                  S20_Start_init PROC
;;;359    
;;;360    void S20_Start_init(void)
000000  b570              PUSH     {r4-r6,lr}
;;;361    {
;;;362    	uint8_t len=0;
;;;363    	uint8_t temp=0;
;;;364    	uint8_t temp_start_flag=0;	
;;;365    	//    if(phone_start_flag==1)
;;;366    	{
;;;367    		app_tp_m_read(screen_reg_int_data[0].buffer, 1, s_screen_read_buffer, 8);
000002  4d4a              LDR      r5,|L1.300|
000004  2308              MOVS     r3,#8
000006  4a4a              LDR      r2,|L1.304|
000008  2101              MOVS     r1,#1
00000a  6828              LDR      r0,[r5,#0]  ; screen_reg_int_data
00000c  f7fffffe          BL       app_tp_m_read
                  |L1.16|
;;;368    		while(!hal_i2c_m_transfer_complate());		
000010  f7fffffe          BL       hal_i2c_m_transfer_complate
000014  2800              CMP      r0,#0
000016  d0fb              BEQ      |L1.16|
;;;369    		delayMs(2);			
000018  2002              MOVS     r0,#2
00001a  f7fffffe          BL       delayMs
;;;370    		while(!hal_gpio_get_input_data(g_screen_input_int_pad))
00001e  4c45              LDR      r4,|L1.308|
000020  e00c              B        |L1.60|
                  |L1.34|
;;;371    		{
;;;372    			app_tp_m_read(screen_reg_int_data[0].buffer, 1, s_screen_read_buffer, 8);
000022  2308              MOVS     r3,#8
000024  4a42              LDR      r2,|L1.304|
000026  2101              MOVS     r1,#1
000028  6828              LDR      r0,[r5,#0]  ; screen_reg_int_data
00002a  f7fffffe          BL       app_tp_m_read
                  |L1.46|
;;;373    			while(!hal_i2c_m_transfer_complate());		
00002e  f7fffffe          BL       hal_i2c_m_transfer_complate
000032  2800              CMP      r0,#0
000034  d0fb              BEQ      |L1.46|
;;;374    			delayMs(2);
000036  2002              MOVS     r0,#2
000038  f7fffffe          BL       delayMs
                  |L1.60|
00003c  7820              LDRB     r0,[r4,#0]            ;370  ; g_screen_input_int_pad
00003e  f7fffffe          BL       hal_gpio_get_input_data
000042  2800              CMP      r0,#0                 ;370
000044  d0ed              BEQ      |L1.34|
;;;375    		}
;;;376    		temp=s_screen_read_buffer[0]&0xf0;
000046  4e3a              LDR      r6,|L1.304|
000048  7830              LDRB     r0,[r6,#0]  ; s_screen_read_buffer
00004a  0900              LSRS     r0,r0,#4
00004c  0100              LSLS     r0,r0,#4
;;;377        if((temp==0x10)||(temp==0x20)||(temp==0x30))
00004e  2810              CMP      r0,#0x10
000050  d04a              BEQ      |L1.232|
000052  2820              CMP      r0,#0x20
000054  d048              BEQ      |L1.232|
000056  2830              CMP      r0,#0x30
000058  d046              BEQ      |L1.232|
;;;378    		{
;;;379    		 temp_start_flag=1;
;;;380    		}
;;;381    		if(temp_start_flag==0)
;;;382    		{
;;;383    		app_tp_m_write(MI10_PRO_screen_init_data1, sizeof(MI10_PRO_screen_init_data1));//0xA0,0x00,0x01
00005a  2103              MOVS     r1,#3
00005c  4836              LDR      r0,|L1.312|
00005e  f7fffffe          BL       app_tp_m_write
                  |L1.98|
;;;384    		while(!hal_i2c_m_transfer_complate());
000062  f7fffffe          BL       hal_i2c_m_transfer_complate
000066  2800              CMP      r0,#0
000068  d0fb              BEQ      |L1.98|
;;;385    		delayMs(1);
00006a  2001              MOVS     r0,#1
00006c  f7fffffe          BL       delayMs
;;;386    		app_tp_m_write(MI10_PRO_screen_init_data2, sizeof(MI10_PRO_screen_init_data2));//0xA2,0x03,0x00,0x00,0x00,0x03
000070  4831              LDR      r0,|L1.312|
000072  2106              MOVS     r1,#6
000074  3009              ADDS     r0,r0,#9
000076  f7fffffe          BL       app_tp_m_write
                  |L1.122|
;;;387    		while(!hal_i2c_m_transfer_complate());
00007a  f7fffffe          BL       hal_i2c_m_transfer_complate
00007e  2800              CMP      r0,#0
000080  d0fb              BEQ      |L1.122|
;;;388    		delayMs(1);		
000082  2001              MOVS     r0,#1
000084  f7fffffe          BL       delayMs
;;;389    		app_tp_m_write(MI10_PRO_screen_init_data3, sizeof(MI10_PRO_screen_init_data3));//0xA2,0x02,0x00
000088  482b              LDR      r0,|L1.312|
00008a  2103              MOVS     r1,#3
00008c  1cc0              ADDS     r0,r0,#3
00008e  f7fffffe          BL       app_tp_m_write
                  |L1.146|
;;;390    		while(!hal_i2c_m_transfer_complate());
000092  f7fffffe          BL       hal_i2c_m_transfer_complate
000096  2800              CMP      r0,#0
000098  d0fb              BEQ      |L1.146|
;;;391    		delayMs(1);	
00009a  2001              MOVS     r0,#1
00009c  f7fffffe          BL       delayMs
;;;392    		app_tp_m_write(MI10_PRO_screen_init_data4, sizeof(MI10_PRO_screen_init_data4));//0xC0,0x07,0x01
0000a0  4825              LDR      r0,|L1.312|
0000a2  2103              MOVS     r1,#3
0000a4  1d80              ADDS     r0,r0,#6
0000a6  f7fffffe          BL       app_tp_m_write
                  |L1.170|
;;;393    		while(!hal_i2c_m_transfer_complate());
0000aa  f7fffffe          BL       hal_i2c_m_transfer_complate
0000ae  2800              CMP      r0,#0
0000b0  d0fb              BEQ      |L1.170|
;;;394    		delayMs(1);		
0000b2  2001              MOVS     r0,#1
0000b4  f7fffffe          BL       delayMs
;;;395    		app_tp_m_read(screen_reg_int_data[0].buffer, 1, s_screen_read_buffer, 8);
0000b8  2308              MOVS     r3,#8
0000ba  4a1d              LDR      r2,|L1.304|
0000bc  2101              MOVS     r1,#1
0000be  6828              LDR      r0,[r5,#0]  ; screen_reg_int_data
0000c0  f7fffffe          BL       app_tp_m_read
                  |L1.196|
;;;396    		while(!hal_i2c_m_transfer_complate());
0000c4  f7fffffe          BL       hal_i2c_m_transfer_complate
0000c8  2800              CMP      r0,#0
0000ca  d0fb              BEQ      |L1.196|
;;;397    		if(s_screen_read_buffer[7]>0)
0000cc  79f0              LDRB     r0,[r6,#7]  ; s_screen_read_buffer
0000ce  2800              CMP      r0,#0
0000d0  d00a              BEQ      |L1.232|
;;;398    		{
;;;399    			len=s_screen_read_buffer[7]*8;
0000d2  06c0              LSLS     r0,r0,#27
0000d4  0e03              LSRS     r3,r0,#24
;;;400    			app_tp_m_read(screen_reg_int_data[0].buffer, 1, s_screen_read_buffer, len);
0000d6  4a16              LDR      r2,|L1.304|
0000d8  2101              MOVS     r1,#1
0000da  6828              LDR      r0,[r5,#0]  ; screen_reg_int_data
0000dc  f7fffffe          BL       app_tp_m_read
                  |L1.224|
;;;401    			while(!hal_i2c_m_transfer_complate());		
0000e0  f7fffffe          BL       hal_i2c_m_transfer_complate
0000e4  2800              CMP      r0,#0
0000e6  d0fb              BEQ      |L1.224|
                  |L1.232|
;;;402    		}
;;;403    	  }
;;;404    #endif
;;;405    		if(hal_gpio_get_input_data(g_screen_input_int_pad))
0000e8  7820              LDRB     r0,[r4,#0]  ; g_screen_input_int_pad
0000ea  f7fffffe          BL       hal_gpio_get_input_data
0000ee  2800              CMP      r0,#0
0000f0  d01b              BEQ      |L1.298|
;;;406    		{
;;;407    			s_screen_init_complate = true;
0000f2  4911              LDR      r1,|L1.312|
0000f4  2001              MOVS     r0,#1
0000f6  3908              SUBS     r1,r1,#8
0000f8  7108              STRB     r0,[r1,#4]
0000fa  4601              MOV      r1,r0
0000fc  2200              MOVS     r2,#0
0000fe  7820              LDRB     r0,[r4,#0]  ; g_screen_input_int_pad
000100  f7fffffe          BL       hal_gpio_set_pull_state
000104  2100              MOVS     r1,#0
000106  7820              LDRB     r0,[r4,#0]  ; g_screen_input_int_pad
000108  f7fffffe          BL       hal_gpio_ctrl_eint
00010c  2103              MOVS     r1,#3
00010e  7820              LDRB     r0,[r4,#0]  ; g_screen_input_int_pad
000110  f7fffffe          BL       hal_gpio_init_eint
000114  4909              LDR      r1,|L1.316|
000116  7820              LDRB     r0,[r4,#0]  ; g_screen_input_int_pad
000118  f7fffffe          BL       hal_gpio_reg_eint_cb
00011c  2101              MOVS     r1,#1
00011e  7820              LDRB     r0,[r4,#0]  ; g_screen_input_int_pad
000120  f7fffffe          BL       hal_gpio_ctrl_eint
;;;408    			app_tp_screen_int_init();
;;;409    			phone_start_flag=0;
000124  4906              LDR      r1,|L1.320|
000126  2000              MOVS     r0,#0
000128  7008              STRB     r0,[r1,#0]
                  |L1.298|
;;;410    		}
;;;411    	}
;;;412    }
00012a  bd70              POP      {r4-r6,pc}
;;;413    
                          ENDP

                  |L1.300|
                          DCD      screen_reg_int_data
                  |L1.304|
                          DCD      ||.bss||
                  |L1.308|
                          DCD      g_screen_input_int_pad
                  |L1.312|
                          DCD      ||.data||+0x8
                  |L1.316|
                          DCD      app_tp_screen_int_callback
                  |L1.320|
                          DCD      phone_start_flag

                          AREA ||i.app_tp_I2C_init||, CODE, READONLY, ALIGN=2

                  app_tp_I2C_init PROC
;;;126    
;;;127    void app_tp_I2C_init(void)
000000  b510              PUSH     {r4,lr}
;;;128    {
;;;129        hal_i2c_s_init(CHIP_I2C_ADDRESS, CHIP_I2C_ADDR_BITS);
000002  2107              MOVS     r1,#7
000004  2048              MOVS     r0,#0x48
000006  f7fffffe          BL       hal_i2c_s_init
;;;130        hal_i2c_s_set_transfer(app_tp_i2cs_callback);
00000a  4804              LDR      r0,|L2.28|
00000c  f7fffffe          BL       hal_i2c_s_set_transfer
;;;131        hal_i2c_s_nonblocking_read(s_phone_read_buffer, BUFFER_SIZE_MAX); //先配置接收 buffer
000010  21c8              MOVS     r1,#0xc8
000012  4803              LDR      r0,|L2.32|
000014  f7fffffe          BL       hal_i2c_s_nonblocking_read
;;;132    }
000018  bd10              POP      {r4,pc}
;;;133    
                          ENDP

00001a  0000              DCW      0x0000
                  |L2.28|
                          DCD      app_tp_i2cs_callback
                  |L2.32|
                          DCD      ||.bss||+0xc8

                          AREA ||i.app_tp_i2cs_callback||, CODE, READONLY, ALIGN=2

                  app_tp_i2cs_callback PROC
;;;322    //recieve_num为接收到的指令个数
;;;323    static void app_tp_i2cs_callback(e_i2c_s_int_status int_status, size_t recieve_num)
000000  b51c              PUSH     {r2-r4,lr}
000002  2000              MOVS     r0,#0
000004  9001              STR      r0,[sp,#4]
000006  2900              CMP      r1,#0
;;;324    {
000008  d004              BEQ      |L3.20|
00000a  ab01              ADD      r3,sp,#4
00000c  466a              MOV      r2,sp
00000e  4807              LDR      r0,|L3.44|
000010  f7fffffe          BL       app_tp_phone_analysis_data
                  |L3.20|
000014  21c8              MOVS     r1,#0xc8
000016  4805              LDR      r0,|L3.44|
000018  f7fffffe          BL       app_tp_s_read
00001c  9901              LDR      r1,[sp,#4]
00001e  2900              CMP      r1,#0
000020  d002              BEQ      |L3.40|
000022  9800              LDR      r0,[sp,#0]
000024  f7fffffe          BL       app_tp_s_write
                  |L3.40|
;;;325    #if 0 // 1: test
;;;326    	if (int_status >2)
;;;327    	{
;;;328    		s_phone_read_buffer[2]=int_status;
;;;329    		s_phone_read_buffer[3]=recieve_num;
;;;330    		app_tp_m_write(s_phone_read_buffer, 4);
;;;331    	}
;;;332    #endif
;;;333        app_tp_transfer_phone(recieve_num);
;;;334    }
000028  bd1c              POP      {r2-r4,pc}
;;;335    #endif
                          ENDP

00002a  0000              DCW      0x0000
                  |L3.44|
                          DCD      ||.bss||+0xc8

                          AREA ||i.app_tp_init||, CODE, READONLY, ALIGN=2

                  app_tp_init PROC
;;;143    **************************************************************************/
;;;144    void app_tp_init(void)
000000  b510              PUSH     {r4,lr}
;;;145    {
;;;146    #ifdef DISABLE_TDDI_I2C_FUNCTION
;;;147        hal_gpio_init_output(g_phone_output_int_pad, IO_LVL_HIGH);    //配置phone报点输出中断IO口
;;;148        hal_gpio_init_output(g_screen_input_rst_pad, IO_LVL_HIGH);	 //配置模组TP RESET
;;;149        
;;;150    	hal_gpio_set_mode(IO_PAD_TD_SPIM_CLK,IO_MODE_I2C1_SCL);
;;;151    	hal_gpio_set_mode(IO_PAD_TD_SPIM_CSN,IO_MODE_I2C1_SDA);
;;;152    
;;;153    	return;
;;;154    #else	
;;;155    	hal_gpio_set_pull_state(IO_PAD_TD_SPIM_CLK, ENABLE, DISABLE);
000002  2200              MOVS     r2,#0
000004  2101              MOVS     r1,#1
000006  2018              MOVS     r0,#0x18
000008  f7fffffe          BL       hal_gpio_set_pull_state
;;;156    	hal_gpio_set_pull_state(IO_PAD_TD_SPIM_CSN, ENABLE, DISABLE);	
00000c  2200              MOVS     r2,#0
00000e  2101              MOVS     r1,#1
000010  2019              MOVS     r0,#0x19
000012  f7fffffe          BL       hal_gpio_set_pull_state
;;;157    #endif
;;;158    
;;;159    //	app_tp_screen_init();                                        //初始化手机复位的IO口
;;;160    //	app_tp_screen_int_init();                                         //配置screen中断输入引脚
;;;161    #ifdef G_PHONE_INT_DEFAULT_LOW
;;;162    	hal_gpio_init_output(g_phone_output_int_pad, IO_LVL_LOW);	  //配置phone报点输出中断IO口
;;;163    #else
;;;164        hal_gpio_init_output(g_phone_output_int_pad, IO_LVL_HIGH);    //配置phone报点输出中断IO口
000016  4807              LDR      r0,|L4.52|
000018  2101              MOVS     r1,#1
00001a  7800              LDRB     r0,[r0,#0]  ; g_phone_output_int_pad
00001c  f7fffffe          BL       hal_gpio_init_output
;;;165    #endif 
;;;166        hal_gpio_init_input(g_screen_input_int_pad);
000020  4805              LDR      r0,|L4.56|
000022  7800              LDRB     r0,[r0,#0]  ; g_screen_input_int_pad
000024  f7fffffe          BL       hal_gpio_init_input
;;;167    //    hal_gpio_init_output(g_screen_input_rst_pad, IO_LVL_HIGH);	 //配置模组TP RESET
;;;168    
;;;169    #if SCREEN_MASTER_TRANSFER_I2C
;;;170        hal_i2c_m_dma_init(SCREEN_I2C_ADDRESS, SCREEN_I2C_ADDR_BITS, I2C_MASTER_SPEED);
000028  4a04              LDR      r2,|L4.60|
00002a  2107              MOVS     r1,#7
00002c  2049              MOVS     r0,#0x49
00002e  f7fffffe          BL       hal_i2c_m_dma_init
;;;171    #elif SCREEN_MASTER_TRANSFER_SPI
;;;172        hal_spi_m_dma_init(SPI_MASTER_SPEED, SCREEN_SPI_CPHA, SCREEN_SPI_CPOL);
;;;173    #endif
;;;174    
;;;175    #if PHONE_SLAVE_TRANSFER_I2C
;;;176    //    hal_i2c_s_init(CHIP_I2C_ADDRESS, CHIP_I2C_ADDR_BITS);
;;;177    //    hal_i2c_s_set_transfer(app_tp_i2cs_callback);
;;;178    //    hal_i2c_s_nonblocking_read(s_phone_read_buffer, BUFFER_SIZE_MAX); //先配置接收 buffer
;;;179    #elif PHONE_SLAVE_TRANSFER_SPI
;;;180        hal_spi_slave_init(PHONE_SPI_CPHA, PHONE_SPI_CPOL, true);                                   // 初始化spi以及dma
;;;181        hal_spi_slave_register_callback(app_tp_spis_callback);            // 注册回调
;;;182        hal_spi_slave_auto_transfer_abort();                              // 停止传输
;;;183        hal_spi_slave_flush_fifo();                                       // Flush FIFO
;;;184    
;;;185        /* 每个packet自动接收, circle       mode 为false, 即收到buffer     max size数据后buffer不再更新, packet完成后调用回调    */
;;;186        hal_spi_slave_set_auto_rx_buffer(s_phone_read_buffer, BUFFER_SIZE_MAX, false); // 设置auto   rx buffer
;;;187        hal_spi_slave_set_auto_tx_buffer(phone_reg_const_data[0].write_back, phone_reg_const_data[0].write_back_size, false);   // 配置TX BUFFER
;;;188    
;;;189        hal_spi_slave_enable();                                           // 启动spis
;;;190        hal_spi_slave_auto_transfer_start();                              // 启动rx自动接收
;;;191    #endif
;;;192    
;;;193    	//ap_tp_scan_point_init();
;;;194    }
000032  bd10              POP      {r4,pc}
;;;195    
                          ENDP

                  |L4.52|
                          DCD      g_phone_output_int_pad
                  |L4.56|
                          DCD      g_screen_input_int_pad
                  |L4.60|
                          DCD      0x000c3500

                          AREA ||i.app_tp_m_read||, CODE, READONLY, ALIGN=1

                  app_tp_m_read PROC
;;;260    **************************************************************************/
;;;261    void app_tp_m_read(const uint8_t *cmd, size_t cmd_size, uint8_t *data_buffer, size_t data_size)
000000  b5f8              PUSH     {r3-r7,lr}
;;;262    {
000002  4605              MOV      r5,r0
;;;263    #if SCREEN_MASTER_TRANSFER_I2C
;;;264        uint8_t i = 0;
000004  2400              MOVS     r4,#0
;;;265        uint32_t address = 0;
000006  4620              MOV      r0,r4
000008  e005              B        |L5.22|
                  |L5.10|
;;;266    
;;;267        for (i = 0; i < cmd_size; i++)                          //先将要发送的数据整合到 address
;;;268        {
;;;269            address |= (uint32_t)cmd[i] << i * 8;
00000a  5d2e              LDRB     r6,[r5,r4]
00000c  00e7              LSLS     r7,r4,#3
00000e  40be              LSLS     r6,r6,r7
000010  4330              ORRS     r0,r0,r6
000012  1c64              ADDS     r4,r4,#1
000014  b2e4              UXTB     r4,r4                 ;267
                  |L5.22|
000016  428c              CMP      r4,r1                 ;267
000018  d3f7              BCC      |L5.10|
;;;270        }
;;;271        hal_i2c_m_dma_read(address, cmd_size, data_buffer, data_size);
00001a  f7fffffe          BL       hal_i2c_m_dma_read
;;;272    #elif SCREEN_MASTER_TRANSFER_SPI
;;;273        hal_spi_m_dma_read(cmd, cmd_size, data_buffer, data_size);
;;;274    #endif
;;;275    }
00001e  bdf8              POP      {r3-r7,pc}
;;;276    
                          ENDP


                          AREA ||i.app_tp_m_transfer_complate||, CODE, READONLY, ALIGN=1

                  app_tp_m_transfer_complate PROC
;;;203    **************************************************************************/
;;;204    bool app_tp_m_transfer_complate(void)
000000  b510              PUSH     {r4,lr}
;;;205    {
;;;206    #if SCREEN_MASTER_TRANSFER_I2C
;;;207        return hal_i2c_m_transfer_complate();
000002  f7fffffe          BL       hal_i2c_m_transfer_complate
;;;208    #elif SCREEN_MASTER_TRANSFER_SPI
;;;209        return hal_spi_m_get_transfer_complate();
;;;210    #else
;;;211        return true;
;;;212    #endif
;;;213    }
000006  bd10              POP      {r4,pc}
;;;214    
                          ENDP


                          AREA ||i.app_tp_m_write||, CODE, READONLY, ALIGN=1

                  app_tp_m_write PROC
;;;240    **************************************************************************/
;;;241    void app_tp_m_write(const uint8_t *txbuffer, size_t buffer_size)
000000  b510              PUSH     {r4,lr}
;;;242    {
;;;243    #if SCREEN_MASTER_TRANSFER_I2C
;;;244        hal_i2c_m_dma_write(txbuffer, buffer_size);
000002  f7fffffe          BL       hal_i2c_m_dma_write
;;;245    #elif SCREEN_MASTER_TRANSFER_SPI
;;;246        hal_spi_m_dma_write(txbuffer, buffer_size);
;;;247        s_spim_write = true;
;;;248    #endif
;;;249    }
000006  bd10              POP      {r4,pc}
;;;250    
                          ENDP


                          AREA ||i.app_tp_phone_clear_reset_on||, CODE, READONLY, ALIGN=2

                  app_tp_phone_clear_reset_on PROC
;;;721    **************************************************************************/
;;;722    void app_tp_phone_clear_reset_on(void)
000000  4901              LDR      r1,|L8.8|
;;;723    {
;;;724        s_phone_reset_flag = false;
000002  2000              MOVS     r0,#0
000004  7088              STRB     r0,[r1,#2]
;;;725    }
000006  4770              BX       lr
;;;726    
                          ENDP

                  |L8.8|
                          DCD      ||.data||

                          AREA ||i.app_tp_phone_reset_on||, CODE, READONLY, ALIGN=2

                  app_tp_phone_reset_on PROC
;;;709    **************************************************************************/
;;;710    bool app_tp_phone_reset_on(void)
000000  4801              LDR      r0,|L9.8|
;;;711    {
;;;712        return s_phone_reset_flag;
000002  7880              LDRB     r0,[r0,#2]  ; s_phone_reset_flag
;;;713    }
000004  4770              BX       lr
;;;714    
                          ENDP

000006  0000              DCW      0x0000
                  |L9.8|
                          DCD      ||.data||

                          AREA ||i.app_tp_s_read||, CODE, READONLY, ALIGN=1

                  app_tp_s_read PROC
;;;305    **************************************************************************/
;;;306    void app_tp_s_read(void *rxBuffer, size_t data_size)
000000  b510              PUSH     {r4,lr}
;;;307    {
;;;308    #if PHONE_SLAVE_TRANSFER_I2C
;;;309        hal_i2c_s_nonblocking_read(rxBuffer, data_size);
000002  f7fffffe          BL       hal_i2c_s_nonblocking_read
;;;310    #endif
;;;311    }
000006  bd10              POP      {r4,pc}
;;;312    
                          ENDP


                          AREA ||i.app_tp_s_transfer_complate||, CODE, READONLY, ALIGN=1

                  app_tp_s_transfer_complate PROC
;;;221    **************************************************************************/
;;;222    bool app_tp_s_transfer_complate(void)
000000  b510              PUSH     {r4,lr}
;;;223    {
;;;224    #if SCREEN_MASTER_TRANSFER_I2C
;;;225        return hal_i2c_s_write_complate() && hal_i2c_s_read_complate();
000002  f7fffffe          BL       hal_i2c_s_write_complate
000006  2800              CMP      r0,#0
000008  d005              BEQ      |L11.22|
00000a  f7fffffe          BL       hal_i2c_s_read_complate
00000e  2800              CMP      r0,#0
000010  d001              BEQ      |L11.22|
000012  2001              MOVS     r0,#1
;;;226    #elif SCREEN_MASTER_TRANSFER_SPI
;;;227        return !hal_spi_slave_busy();
;;;228    #else
;;;229        return true;
;;;230    #endif
;;;231    }
000014  bd10              POP      {r4,pc}
                  |L11.22|
000016  2000              MOVS     r0,#0                 ;225
000018  bd10              POP      {r4,pc}
;;;232    
                          ENDP


                          AREA ||i.app_tp_s_write||, CODE, READONLY, ALIGN=1

                  app_tp_s_write PROC
;;;284    **************************************************************************/
;;;285    void app_tp_s_write(const uint8_t *txbuffer, size_t buffer_size)
000000  b510              PUSH     {r4,lr}
;;;286    {
;;;287    #if PHONE_SLAVE_TRANSFER_I2C
;;;288        hal_i2c_s_dma_write(txbuffer, buffer_size);
000002  f7fffffe          BL       hal_i2c_s_dma_write
;;;289    #elif PHONE_SLAVE_TRANSFER_SPI
;;;290        //while (hal_spi_slave_busy());
;;;291        hal_spi_slave_auto_transfer_abort();
;;;292        hal_spi_slave_flush_fifo();
;;;293        hal_spi_slave_set_auto_tx_buffer(txbuffer, buffer_size, true);
;;;294        hal_spi_slave_auto_transfer_start();
;;;295    #endif
;;;296    }
000006  bd10              POP      {r4,pc}
;;;297    
                          ENDP


                          AREA ||i.app_tp_screen_init||, CODE, READONLY, ALIGN=2

                  app_tp_screen_init PROC
;;;117    **************************************************************************/
;;;118    void app_tp_screen_init(void)
000000  b510              PUSH     {r4,lr}
;;;119    {
;;;120        hal_gpio_init_output(g_screen_input_rst_pad, IO_LVL_HIGH);
000002  4c0a              LDR      r4,|L13.44|
000004  2101              MOVS     r1,#1
000006  7820              LDRB     r0,[r4,#0]  ; g_screen_input_rst_pad
000008  f7fffffe          BL       hal_gpio_init_output
;;;121        delayUs(200);
00000c  20c8              MOVS     r0,#0xc8
00000e  f7fffffe          BL       delayUs
;;;122        hal_gpio_set_output_data(g_screen_input_rst_pad, IO_LVL_LOW);
000012  2100              MOVS     r1,#0
000014  7820              LDRB     r0,[r4,#0]  ; g_screen_input_rst_pad
000016  f7fffffe          BL       hal_gpio_set_output_data
;;;123        delayUs(200);
00001a  20c8              MOVS     r0,#0xc8
00001c  f7fffffe          BL       delayUs
;;;124        hal_gpio_set_output_data(g_screen_input_rst_pad, IO_LVL_HIGH);
000020  2101              MOVS     r1,#1
000022  7820              LDRB     r0,[r4,#0]  ; g_screen_input_rst_pad
000024  f7fffffe          BL       hal_gpio_set_output_data
;;;125    }
000028  bd10              POP      {r4,pc}
;;;126    
                          ENDP

00002a  0000              DCW      0x0000
                  |L13.44|
                          DCD      g_screen_input_rst_pad

                          AREA ||i.app_tp_screen_int_callback||, CODE, READONLY, ALIGN=2

                  app_tp_screen_int_callback PROC
;;;70     **************************************************************************/
;;;71     static void app_tp_screen_int_callback(void *data)
000000  4901              LDR      r1,|L14.8|
;;;72     {
;;;73         s_screen_int_flag = true;
000002  2001              MOVS     r0,#1
000004  7048              STRB     r0,[r1,#1]
;;;74     }
000006  4770              BX       lr
;;;75     
                          ENDP

                  |L14.8|
                          DCD      ||.data||

                          AREA ||i.app_tp_transfer_screen_const||, CODE, READONLY, ALIGN=2

                  app_tp_transfer_screen_const PROC
;;;424    **************************************************************************/
;;;425    static void app_tp_transfer_screen_const(void)
000000  b510              PUSH     {r4,lr}
000002  f7fffffe          BL       hal_i2c_m_transfer_complate
;;;426    {
;;;427    //    static bool    screen_const_transfer_buffer_ready = true;            //发送 buffer 是否已准备好
;;;428    	uint8_t ii;
;;;429    //	uint8_t len=0;
;;;430        /**** 1. 判断当前状态通信已结束, 状态通信已结束，并且开机初始化流程还未走完****/
;;;431    #if 0 // test
;;;432    	uint8_t test_master_read_buffer[10] = {0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19};
;;;433    	uint8_t write_buffer[10] = {0x04, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19};
;;;434    
;;;435    //	for (ii =0x20; ii<0x7F; ii++)
;;;436    	{
;;;437    		//hal_i2c_m_dma_init(ii, SCREEN_I2C_ADDR_BITS);
;;;438    		//delayMs(100);
;;;439    		if (hal_i2c_m_dma_write(write_buffer, 1))
;;;440    		{
;;;441    			//break;
;;;442    		}
;;;443    		while(!hal_i2c_m_transfer_complate());
;;;444    		hal_i2c_m_dma_read(test_master_read_buffer, 1, test_master_read_buffer, 2);
;;;445    	}
;;;446    #endif
;;;447    
;;;448    
;;;449        if (app_tp_m_transfer_complate() && (s_screen_const_transfer_count < screen_reg_start_data_size))
000006  2800              CMP      r0,#0
000008  d012              BEQ      |L15.48|
00000a  4c0a              LDR      r4,|L15.52|
00000c  490a              LDR      r1,|L15.56|
00000e  7960              LDRB     r0,[r4,#5]  ; s_screen_const_transfer_count
000010  7809              LDRB     r1,[r1,#0]  ; screen_reg_start_data_size
000012  4288              CMP      r0,r1
000014  d20c              BCS      |L15.48|
;;;450        {
;;;451            if (s_spim_write)                                                //SPI 写数据后需要把接收FIFO的数据读出，不然会影响下一次读取
000016  7820              LDRB     r0,[r4,#0]  ; s_spim_write
000018  2800              CMP      r0,#0
00001a  d003              BEQ      |L15.36|
;;;452            {
;;;453                hal_spi_m_clear_rxfifo();
00001c  f7fffffe          BL       hal_spi_m_clear_rxfifo
;;;454                s_spim_write = false;
000020  2000              MOVS     r0,#0
000022  7020              STRB     r0,[r4,#0]
                  |L15.36|
;;;455            }
;;;456    
;;;457    	#if 1
;;;458    		
;;;459    //		#ifndef USE_FOR_SUMSUNG_S20
;;;460    //		for (ii =0; ii<screen_reg_start_data_size; ii++)
;;;461    //		{
;;;462    //            if (!screen_reg_start_data[ii].read_flag)     //当前通信不需要读回，直接写
;;;463    //            {
;;;464    //                app_tp_m_write(screen_reg_start_data[ii].buffer, screen_reg_start_data[ii].txbuffer_size);
;;;465    //            }
;;;466    //            else                                             //当前通信需要读回，先写再读
;;;467    //            {
;;;468    //                app_tp_m_read(screen_reg_start_data[ii].buffer, screen_reg_start_data[ii].txbuffer_size, \
;;;469    //                              s_screen_read_bak, screen_reg_start_data[ii].rxbuffer_size);
;;;470    //            }
;;;471    //			while(!hal_i2c_m_transfer_complate());
;;;472    //		}
;;;473    //		#endif
;;;474    		#ifdef USE_FOR_SUMSUNG_S20U
;;;475    		
;;;476    	#if 1	
;;;477    		if(phone_start_flag==1)
000024  4805              LDR      r0,|L15.60|
000026  7800              LDRB     r0,[r0,#0]  ; phone_start_flag
000028  2801              CMP      r0,#1
00002a  d101              BNE      |L15.48|
;;;478    		{
;;;479    			S20_Start_init();
00002c  f7fffffe          BL       S20_Start_init
                  |L15.48|
;;;480    		}
;;;481    	#endif					
;;;482    	
;;;483    	#if 0//
;;;484    		delayMs(100);
;;;485    		app_tp_m_read(screen_reg_int_data[0].buffer, screen_reg_int_data[0].txbuffer_size, s_screen_number, screen_reg_int_data[0].rxbuffer_size);
;;;486    		while(!hal_i2c_m_transfer_complate());
;;;487    	#endif
;;;488    	#ifdef USE_FOR_SUMSUNG_S20
;;;489    		s_screen_init_complate = true;
;;;490    	#endif
;;;491    		
;;;492    	#else
;;;493            /**** 2. 发送或读取从机数据 ****/
;;;494            if (screen_const_transfer_buffer_ready)
;;;495            {
;;;496                screen_const_transfer_buffer_ready = false;
;;;497                if (!screen_reg_start_data[s_screen_const_transfer_count].read_flag)     //当前通信不需要读回，直接写
;;;498                {
;;;499                    app_tp_m_write(screen_reg_start_data[s_screen_const_transfer_count].buffer, screen_reg_start_data[s_screen_const_transfer_count].txbuffer_size);
;;;500                }
;;;501                else                                                             //当前通信需要读回，先写再读
;;;502                {
;;;503                    app_tp_m_read(screen_reg_start_data[s_screen_const_transfer_count].buffer, screen_reg_start_data[s_screen_const_transfer_count].txbuffer_size, \
;;;504                                  s_screen_number, screen_reg_start_data[s_screen_const_transfer_count].rxbuffer_size);
;;;505                }
;;;506    			s_screen_init_complate = true;
;;;507            }
;;;508            /**** 3. 解析本次通信数据，并准备下一次通信的buffer ****/
;;;509            else
;;;510            {
;;;511                screen_const_transfer_buffer_ready = true;
;;;512                s_screen_const_transfer_count = app_tp_screen_analysis_const(s_screen_const_transfer_count, s_screen_number, \
;;;513                                                screen_reg_start_data[s_screen_const_transfer_count].rxbuffer_size);
;;;514    
;;;515                if (s_screen_const_transfer_count >= screen_reg_start_data_size)
;;;516                {
;;;517                    s_screen_init_complate = true;
;;;518                }
;;;519            }
;;;520    	#endif	
;;;521        }
;;;522    }
000030  bd10              POP      {r4,pc}
;;;523    
                          ENDP

000032  0000              DCW      0x0000
                  |L15.52|
                          DCD      ||.data||
                  |L15.56|
                          DCD      screen_reg_start_data_size
                  |L15.60|
                          DCD      phone_start_flag

                          AREA ||i.app_tp_transfer_screen_int||, CODE, READONLY, ALIGN=2

                  app_tp_transfer_screen_int PROC
;;;550    **************************************************************************/
;;;551    void app_tp_transfer_screen_int(void)
000000  b5f8              PUSH     {r3-r7,lr}
;;;552    {
;;;553    	uint8_t len=0;
;;;554    	uint8_t temp_len=0;
;;;555    	bool screen_gpio_int = false;
;;;556    	static uint8_t screen_int_transfer_count = 0;            //记录当前通信到哪一步
;;;557    	static bool    screen_int_transfer_buffer_ready = true;  //发送 buffer 是否已准备好
;;;558    	//    static uint8_t test_flag = 0;
;;;559    	//	  s_screen_init_complate=false;//为了在线烧录，特意将码片设置为不下发数据，而是FT8719与敦泰的工具通讯
;;;560        if (!s_screen_init_complate)                             //TP 初始化还未完成，则先进行初始化操作
000002  4d53              LDR      r5,|L16.336|
000004  2400              MOVS     r4,#0                 ;553
000006  7928              LDRB     r0,[r5,#4]  ; s_screen_init_complate
000008  4626              MOV      r6,r4                 ;554
00000a  2800              CMP      r0,#0
00000c  d04c              BEQ      |L16.168|
;;;561        {
;;;562            app_tp_transfer_screen_const();
;;;563            return;
;;;564        }
;;;565    
;;;566    #if 0 //test
;;;567    	test_flag++;
;;;568    	if (test_flag >1000000)
;;;569    	{
;;;570    		test_flag =0;
;;;571    		//TAU_LOGD("Run ok!!\n");
;;;572    		//app_tp_m_read(screen_reg_int_data[0].buffer, screen_reg_int_data[0].txbuffer_size, s_screen_number, screen_reg_int_data[0].rxbuffer_size);
;;;573    		//while(!hal_i2c_m_transfer_complate());
;;;574    	}
;;;575    #endif
;;;576    
;;;577        /**** 1. 判断 screen 是否发出中断信号 ****/
;;;578        // s_screen_int_flag:           中断信号标志位
;;;579        // app_tp_screen_int_lvl_low :  SPI 长时间通信时，偶尔会出现cs拉高导致通信异常卡死，该标志位用于解决卡死的问题
;;;580        screen_gpio_int = s_screen_int_flag || app_tp_screen_int_lvl_low();
00000e  7868              LDRB     r0,[r5,#1]  ; s_screen_int_flag
;;;581        if (((screen_gpio_int) || (s_screen_int_transfer_status)) && app_tp_m_transfer_complate()) //判断当前不处于通信状态，并且准备通信
000010  78e9              LDRB     r1,[r5,#3]  ; s_screen_int_transfer_status
000012  4308              ORRS     r0,r0,r1
000014  d04a              BEQ      |L16.172|
000016  f7fffffe          BL       hal_i2c_m_transfer_complate
00001a  2800              CMP      r0,#0
00001c  d046              BEQ      |L16.172|
;;;582        {
;;;583            s_screen_int_flag = false;
00001e  2700              MOVS     r7,#0
000020  706f              STRB     r7,[r5,#1]
;;;584            if (s_spim_write)                                    //SPI 写数据后需要把接收FIFO的数据读出，不然会影响下一次读取
000022  7828              LDRB     r0,[r5,#0]  ; s_spim_write
000024  2800              CMP      r0,#0
000026  d002              BEQ      |L16.46|
;;;585            {
;;;586                hal_spi_m_clear_rxfifo();
000028  f7fffffe          BL       hal_spi_m_clear_rxfifo
;;;587                s_spim_write = false;
00002c  702f              STRB     r7,[r5,#0]
                  |L16.46|
;;;588            }
;;;589    
;;;590            /**** 2. 发送或读取从机数据 ****/
;;;591            if (screen_int_transfer_buffer_ready)
00002e  79e8              LDRB     r0,[r5,#7]  ; screen_int_transfer_buffer_ready
000030  2800              CMP      r0,#0
000032  d078              BEQ      |L16.294|
;;;592            {
;;;593    		#ifndef READ_MODULE_TP_ONE_BY_ONE
;;;594    			screen_int_transfer_buffer_ready = false;
000034  4846              LDR      r0,|L16.336|
000036  2100              MOVS     r1,#0
000038  71c1              STRB     r1,[r0,#7]
;;;595    			s_screen_int_transfer_status = true;
00003a  2101              MOVS     r1,#1
;;;596    		#ifdef USE_FOR_SUMSUNG_S20U
;;;597    			app_tp_m_read(screen_reg_int_data[0].buffer, 1, s_screen_read_buffer, 8);
00003c  4d45              LDR      r5,|L16.340|
00003e  70c1              STRB     r1,[r0,#3]            ;595
000040  2308              MOVS     r3,#8
000042  4a45              LDR      r2,|L16.344|
000044  6828              LDR      r0,[r5,#0]  ; screen_reg_int_data
000046  f7fffffe          BL       app_tp_m_read
                  |L16.74|
;;;598    			while(!hal_i2c_m_transfer_complate());
00004a  f7fffffe          BL       hal_i2c_m_transfer_complate
00004e  2800              CMP      r0,#0
000050  d0fb              BEQ      |L16.74|
;;;599    			if(s_screen_read_buffer[7]>0)
000052  4f41              LDR      r7,|L16.344|
000054  4639              MOV      r1,r7                 ;597
000056  79f8              LDRB     r0,[r7,#7]  ; s_screen_read_buffer
000058  3108              ADDS     r1,r1,#8              ;597
00005a  9100              STR      r1,[sp,#0]
00005c  2800              CMP      r0,#0
00005e  d00d              BEQ      |L16.124|
;;;600    			{
;;;601    				len=s_screen_read_buffer[7]*8;
000060  06c0              LSLS     r0,r0,#27
000062  0e04              LSRS     r4,r0,#24
;;;602    				app_tp_m_read(screen_reg_int_data[0].buffer, 1, &s_screen_read_buffer[8], len);
000064  460a              MOV      r2,r1
000066  4623              MOV      r3,r4
000068  2101              MOVS     r1,#1
00006a  6828              LDR      r0,[r5,#0]  ; screen_reg_int_data
00006c  f7fffffe          BL       app_tp_m_read
                  |L16.112|
;;;603    				while(!hal_i2c_m_transfer_complate());
000070  f7fffffe          BL       hal_i2c_m_transfer_complate
000074  2800              CMP      r0,#0
000076  d0fb              BEQ      |L16.112|
;;;604    				temp_len=len+7;
000078  1de0              ADDS     r0,r4,#7
00007a  b2c6              UXTB     r6,r0
                  |L16.124|
;;;605    			}
;;;606    			if(s_screen_read_buffer[temp_len]>0)
00007c  5db8              LDRB     r0,[r7,r6]
00007e  2800              CMP      r0,#0
000080  d00d              BEQ      |L16.158|
;;;607    			{
;;;608    				len=s_screen_read_buffer[7]*8;
000082  79f8              LDRB     r0,[r7,#7]  ; s_screen_read_buffer
;;;609    				app_tp_m_read(screen_reg_int_data[0].buffer, 1, &s_screen_read_buffer[temp_len+1], len);
000084  19ba              ADDS     r2,r7,r6
000086  06c0              LSLS     r0,r0,#27             ;608
000088  0e04              LSRS     r4,r0,#24             ;608
00008a  4623              MOV      r3,r4
00008c  2101              MOVS     r1,#1
00008e  1c52              ADDS     r2,r2,#1
000090  6828              LDR      r0,[r5,#0]  ; screen_reg_int_data
000092  f7fffffe          BL       app_tp_m_read
                  |L16.150|
;;;610    				while(!hal_i2c_m_transfer_complate());		
000096  f7fffffe          BL       hal_i2c_m_transfer_complate
00009a  2800              CMP      r0,#0
00009c  d0fb              BEQ      |L16.150|
                  |L16.158|
;;;611    			}			
;;;612    			delayUs(100);
00009e  2064              MOVS     r0,#0x64
0000a0  f7fffffe          BL       delayUs
;;;613    			
;;;614    			while(!hal_gpio_get_input_data(g_screen_input_int_pad))
0000a4  4e2d              LDR      r6,|L16.348|
0000a6  e021              B        |L16.236|
                  |L16.168|
0000a8  f7fffffe          BL       app_tp_transfer_screen_const
                  |L16.172|
;;;615    			{
;;;616    				app_tp_m_read(screen_reg_int_data[0].buffer, 1, s_screen_read_buffer, 8);
;;;617    				while(!hal_i2c_m_transfer_complate());		
;;;618    				delayMs(2);
;;;619    				if(s_screen_read_buffer[7]>0)
;;;620    				{
;;;621    					len=s_screen_read_buffer[7]*8;
;;;622    					app_tp_m_read(screen_reg_int_data[0].buffer, 1, &s_screen_read_buffer[8], len);
;;;623    					while(!hal_i2c_m_transfer_complate());
;;;624    					delayMs(2);			
;;;625    				}	
;;;626    		//		printf("%2x,%2x\n",s_screen_read_buffer[0],s_screen_read_buffer[1]);
;;;627    			
;;;628    			}		
;;;629    			
;;;630    		#else
;;;631    
;;;632    		#endif	
;;;633    		#else
;;;634    
;;;635    		#endif	
;;;636    				ap_tp_st_touch_scan_point_record_event(s_screen_read_buffer, len+8);
;;;637            ap_tp_st_touch_error_handler_FF(s_screen_read_buffer);	
;;;638    		    ap_tp_st_touch_error_handler_F3(s_screen_read_buffer);
;;;639    			screen_int_transfer_buffer_ready = true;
;;;640           	app_tp_screen_analysis_int(screen_int_transfer_count, s_screen_read_buffer,screen_reg_int_data[2].rxbuffer_size);
;;;641    			screen_int_transfer_count = 0;
;;;642    			s_screen_int_transfer_status = false;
;;;643            }
;;;644            /**** 3. 解析本次通信数据，并准备下一次通信的buffer ****/
;;;645            else
;;;646            {
;;;647            #if 1
;;;648    			#ifdef USE_FOR_SUMSUNG_S20
;;;649    			u16TouchID=0x0000;
;;;650    			#endif	
;;;651    		  ap_tp_st_touch_scan_point_record_event(s_screen_read_buffer, len+8);
;;;652          ap_tp_st_touch_error_handler_FF(s_screen_read_buffer);	
;;;653    	   	ap_tp_st_touch_error_handler_F3(s_screen_read_buffer);
;;;654    			screen_int_transfer_buffer_ready = true;
;;;655    			screen_int_transfer_count = app_tp_screen_analysis_int(screen_int_transfer_count, s_screen_read_buffer,screen_reg_int_data[2].rxbuffer_size);
;;;656    			screen_int_transfer_count = 0;
;;;657    			s_screen_int_transfer_status = false;
;;;658    
;;;659    		#else
;;;660                screen_int_transfer_buffer_ready = true;
;;;661                screen_int_transfer_count = app_tp_screen_analysis_int(screen_int_transfer_count, s_screen_read_buffer, \
;;;662                                            screen_reg_int_data[screen_int_transfer_count].rxbuffer_size);
;;;663    
;;;664                if (screen_int_transfer_count > screen_reg_int_data_size)       //解析需要等最后一次通信结束，最后一次数据解析后，停止通信
;;;665                {
;;;666                    screen_int_transfer_count = 0;
;;;667                    s_screen_int_transfer_status = false;
;;;668                    return;
;;;669                }
;;;670    		#endif	
;;;671            }
;;;672        }
;;;673    }
0000ac  bdf8              POP      {r3-r7,pc}
                  |L16.174|
0000ae  2308              MOVS     r3,#8                 ;616
0000b0  4a29              LDR      r2,|L16.344|
0000b2  2101              MOVS     r1,#1                 ;616
0000b4  6828              LDR      r0,[r5,#0]            ;616  ; screen_reg_int_data
0000b6  f7fffffe          BL       app_tp_m_read
                  |L16.186|
0000ba  f7fffffe          BL       hal_i2c_m_transfer_complate
0000be  2800              CMP      r0,#0                 ;617
0000c0  d0fb              BEQ      |L16.186|
0000c2  2002              MOVS     r0,#2                 ;618
0000c4  f7fffffe          BL       delayMs
0000c8  79f8              LDRB     r0,[r7,#7]            ;619  ; s_screen_read_buffer
0000ca  2800              CMP      r0,#0                 ;619
0000cc  d00e              BEQ      |L16.236|
0000ce  06c0              LSLS     r0,r0,#27             ;621
0000d0  0e04              LSRS     r4,r0,#24             ;621
0000d2  4623              MOV      r3,r4                 ;622
0000d4  6828              LDR      r0,[r5,#0]            ;622  ; screen_reg_int_data
0000d6  2101              MOVS     r1,#1                 ;622
0000d8  9a00              LDR      r2,[sp,#0]            ;622
0000da  f7fffffe          BL       app_tp_m_read
                  |L16.222|
0000de  f7fffffe          BL       hal_i2c_m_transfer_complate
0000e2  2800              CMP      r0,#0                 ;623
0000e4  d0fb              BEQ      |L16.222|
0000e6  2002              MOVS     r0,#2                 ;624
0000e8  f7fffffe          BL       delayMs
                  |L16.236|
0000ec  7830              LDRB     r0,[r6,#0]            ;614  ; g_screen_input_int_pad
0000ee  f7fffffe          BL       hal_gpio_get_input_data
0000f2  2800              CMP      r0,#0                 ;614
0000f4  d0db              BEQ      |L16.174|
0000f6  3408              ADDS     r4,r4,#8              ;614
0000f8  b2e1              UXTB     r1,r4                 ;636
0000fa  4817              LDR      r0,|L16.344|
0000fc  f7fffffe          BL       ap_tp_st_touch_scan_point_record_event
000100  4815              LDR      r0,|L16.344|
000102  f7fffffe          BL       ap_tp_st_touch_error_handler_FF
000106  4814              LDR      r0,|L16.344|
000108  f7fffffe          BL       ap_tp_st_touch_error_handler_F3
00010c  4c10              LDR      r4,|L16.336|
00010e  2001              MOVS     r0,#1                 ;639
000110  71e0              STRB     r0,[r4,#7]            ;639
000112  4911              LDR      r1,|L16.344|
000114  79a0              LDRB     r0,[r4,#6]            ;640  ; screen_int_transfer_count
000116  6aaa              LDR      r2,[r5,#0x28]         ;640  ; screen_reg_int_data
000118  f7fffffe          BL       app_tp_screen_analysis_int
00011c  2000              MOVS     r0,#0                 ;641
00011e  71a0              STRB     r0,[r4,#6]            ;641
000120  70e0              STRB     r0,[r4,#3]            ;642
                  |L16.290|
000122  bdf8              POP      {r3-r7,pc}
000124  e7ff              B        |L16.294|
                  |L16.294|
000126  2108              MOVS     r1,#8                 ;651
000128  480b              LDR      r0,|L16.344|
00012a  f7fffffe          BL       ap_tp_st_touch_scan_point_record_event
00012e  480a              LDR      r0,|L16.344|
000130  f7fffffe          BL       ap_tp_st_touch_error_handler_FF
000134  4808              LDR      r0,|L16.344|
000136  f7fffffe          BL       ap_tp_st_touch_error_handler_F3
00013a  2001              MOVS     r0,#1                 ;654
00013c  71e8              STRB     r0,[r5,#7]            ;654
00013e  4805              LDR      r0,|L16.340|
000140  4905              LDR      r1,|L16.344|
000142  6a82              LDR      r2,[r0,#0x28]         ;655  ; screen_reg_int_data
000144  79a8              LDRB     r0,[r5,#6]            ;655  ; screen_int_transfer_count
000146  f7fffffe          BL       app_tp_screen_analysis_int
00014a  71af              STRB     r7,[r5,#6]            ;656
00014c  70ef              STRB     r7,[r5,#3]            ;657
00014e  e7e8              B        |L16.290|
;;;674    
                          ENDP

                  |L16.336|
                          DCD      ||.data||
                  |L16.340|
                          DCD      screen_reg_int_data
                  |L16.344|
                          DCD      ||.bss||
                  |L16.348|
                          DCD      g_screen_input_int_pad

                          AREA ||i.app_tp_transfer_screen_start||, CODE, READONLY, ALIGN=2

                  app_tp_transfer_screen_start PROC
;;;530    **************************************************************************/
;;;531    void app_tp_transfer_screen_start(void)
000000  b570              PUSH     {r4-r6,lr}
;;;532    {
;;;533    	s_screen_init_complate = false;
000002  4c04              LDR      r4,|L17.20|
000004  2500              MOVS     r5,#0
000006  7125              STRB     r5,[r4,#4]
;;;534    	s_screen_const_transfer_count = 0;
000008  7165              STRB     r5,[r4,#5]
;;;535    //	app_tp_screen_init();
;;;536    #ifndef DISABLE_I2C_INIT_CODE    
;;;537        app_tp_transfer_screen_const();
00000a  f7fffffe          BL       app_tp_transfer_screen_const
;;;538    #endif
;;;539    	s_screen_int_flag = false;
00000e  7065              STRB     r5,[r4,#1]
;;;540    }
000010  bd70              POP      {r4-r6,pc}
;;;541    
                          ENDP

000012  0000              DCW      0x0000
                  |L17.20|
                          DCD      ||.data||

                          AREA ||.bss||, DATA, NOINIT, ALIGN=0

                  s_screen_read_buffer
                          %        200
                  s_phone_read_buffer
                          %        200

                          AREA ||.data||, DATA, ALIGN=0

                  s_spim_write
000000  00                DCB      0x00
                  s_screen_int_flag
000001  00                DCB      0x00
                  s_phone_reset_flag
000002  00                DCB      0x00
                  s_screen_int_transfer_status
000003  00                DCB      0x00
                  s_screen_init_complate
000004  00                DCB      0x00
                  s_screen_const_transfer_count
000005  ff                DCB      0xff
                  screen_int_transfer_count
000006  00                DCB      0x00
                  screen_int_transfer_buffer_ready
000007  01                DCB      0x01
                  MI10_PRO_screen_init_data1
000008  a00001            DCB      0xa0,0x00,0x01
                  MI10_PRO_screen_init_data3
00000b  a2                DCB      0xa2
00000c  0200              DCB      0x02,0x00
                  MI10_PRO_screen_init_data4
00000e  c007              DCB      0xc0,0x07
000010  01                DCB      0x01
                  MI10_PRO_screen_init_data2
000011  a20300            DCB      0xa2,0x03,0x00
000014  000003            DCB      0x00,0x00,0x03

                          AREA ||area_number.22||, DATA, ALIGN=0

                          EXPORTAS ||area_number.22||, ||.data||
                  MI10_PRO_screen_init_data5
000000  a40670            DCB      0xa4,0x06,0x70

                          AREA ||area_number.23||, DATA, ALIGN=0

                          EXPORTAS ||area_number.23||, ||.data||
                  MI10_PRO_screen_init_data6
000000  a60000            DCB      0xa6,0x00,0x00

                          AREA ||area_number.24||, DATA, ALIGN=0

                          EXPORTAS ||area_number.24||, ||.data||
                  MI10_PRO_screen_init_data7
000000  fa200000          DCB      0xfa,0x20,0x00,0x00
000004  78                DCB      0x78

                          AREA ||area_number.25||, DATA, ALIGN=0

                          EXPORTAS ||area_number.25||, ||.data||
                  MI10_PRO_screen_init_data8
000000  a2032000          DCB      0xa2,0x03,0x20,0x00
000004  0000              DCB      0x00,0x00

                          AREA ||area_number.26||, DATA, ALIGN=0

                          EXPORTAS ||area_number.26||, ||.data||
                  MI10_PRO_screen_init_data9
000000  a001              DCB      0xa0,0x01

                          AREA ||area_number.27||, DATA, ALIGN=0

                          EXPORTAS ||area_number.27||, ||.data||
                  MI10_PRO_screen_init_data10
000000  a00000            DCB      0xa0,0x00,0x00

                          AREA ||area_number.28||, DATA, ALIGN=0

                          EXPORTAS ||area_number.28||, ||.data||
                  read_point
000000  00                DCB      0x00

                          AREA ||area_number.29||, DATA, ALIGN=0

                          EXPORTAS ||area_number.29||, ||.data||
                  s_screen_number
000000  0000              DCB      0x00,0x00

                          AREA ||area_number.30||, DATA, ALIGN=0

                          EXPORTAS ||area_number.30||, ||.data||
                  s_screen_temp
000000  0000              DCB      0x00,0x00

;*** Start embedded assembler ***

#line 1 "..\\..\\src\\app\\demo\\app_tp_transfer.c"
	AREA ||.rev16_text||, CODE
	THUMB
	EXPORT |__asm___17_app_tp_transfer_c_e672c05a____REV16|
#line 467 "C:\\Keil_v5\\ARM\\PACK\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h"
|__asm___17_app_tp_transfer_c_e672c05a____REV16| PROC
#line 468

 rev16 r0, r0
 bx lr
	ENDP
	AREA ||.revsh_text||, CODE
	THUMB
	EXPORT |__asm___17_app_tp_transfer_c_e672c05a____REVSH|
#line 482
|__asm___17_app_tp_transfer_c_e672c05a____REVSH| PROC
#line 483

 revsh r0, r0
 bx lr
	ENDP

;*** End   embedded assembler ***
