# 1 "..\\src\\app\\demo\\ap_demo.c"







 

# 1 "..\\src\\app\\demo\\ap_demo.h"








 








 





# 30 "..\\src\\app\\demo\\ap_demo.h"

























 
void ap_demo(void);
void app_tp_I2C_init(void);
# 11 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\sdk\\include\\M0\\ArmCM0.h"
 





 
















 









 

typedef enum IRQn
{
     
    NonMaskableInt_IRQn           = -14,      
    HardFault_IRQn                = -13,      
    SVCall_IRQn                   =  -5,      
    PendSV_IRQn                   =  -2,      
    SysTick_IRQn                  =  -1,      

     
    VIDC_IRQn                     =   0,
    LCDC_IRQn                     =   1,
    MIPI_RX_IRQn                  =   2,
    MIPI_TX_IRQn                  =   3,
    MEMC_IRQn                     =   4,
    VPRE_IRQn                     =   5,
    FLSCTRL_IRQn                  =   6,
    DMA_IRQn                      =   7,
    TIMER0_IRQn                   =   8,
    TIMER1_IRQn                   =   9,
    TIMER2_IRQn                   =   10,
    TIMER3_IRQn                   =   11,
    WDG_IRQn                      =   12,
    UART_IRQn                     =   13,
    I2C0_IRQn                     =   14,
    I2C1_IRQn                     =   15,
    SPIS_IRQn                     =   16,
    SPIM_IRQn                     =   17,
    ADC_IRQn                      =   18,
    PWMDET_IRQn                   =   19,
    OTP_IRQn                      =   20,
    SWIRE_IRQn                    =   21,
    PVD_IRQn                      =   22,
    AP_NRESET_IRQn                =   23,
    EXTI_INT0_IRQn                =   24,
    EXTI_INT1_IRQn                =   25,
    EXTI_INT2_IRQn                =   26,
    EXTI_INT3_IRQn                =   27,
    EXTI_INT4_IRQn                =   28,
    EXTI_INT5_IRQn                =   29,
    EXTI_INT6_IRQn                =   30,
    EXTI_INT7_IRQn                =   31
                                       
} IRQn_Type;




 
 
 

 

#pragma push
#pragma anon_unions
# 109 "..\\src\\sdk\\include\\M0\\ArmCM0.h"

 

















# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h"
 




 
















 










# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h"
 
 





 









     
# 27 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h"
     











# 46 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h"





 

     

     
typedef   signed          char int8_t;
typedef   signed short     int int16_t;
typedef   signed           int int32_t;
typedef   signed       __int64 int64_t;

     
typedef unsigned          char uint8_t;
typedef unsigned short     int uint16_t;
typedef unsigned           int uint32_t;
typedef unsigned       __int64 uint64_t;

     

     
     
typedef   signed          char int_least8_t;
typedef   signed short     int int_least16_t;
typedef   signed           int int_least32_t;
typedef   signed       __int64 int_least64_t;

     
typedef unsigned          char uint_least8_t;
typedef unsigned short     int uint_least16_t;
typedef unsigned           int uint_least32_t;
typedef unsigned       __int64 uint_least64_t;

     

     
typedef   signed           int int_fast8_t;
typedef   signed           int int_fast16_t;
typedef   signed           int int_fast32_t;
typedef   signed       __int64 int_fast64_t;

     
typedef unsigned           int uint_fast8_t;
typedef unsigned           int uint_fast16_t;
typedef unsigned           int uint_fast32_t;
typedef unsigned       __int64 uint_fast64_t;

     




typedef   signed           int intptr_t;
typedef unsigned           int uintptr_t;


     
typedef   signed     long long intmax_t;
typedef unsigned     long long uintmax_t;




     

     





     





     





     

     





     





     





     

     





     





     





     

     






     






     






     

     


     


     


     

     
# 216 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h"

     



     






     
    
 



# 241 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h"

     







     










     











# 305 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdint.h"






 
# 35 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h"

















 




 



 

# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_version.h"
 




 
















 










 
# 64 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h"
 
 









 







# 114 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h"

# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h"
 




 
















 




# 29 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h"



 
# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h"
 




 
















 









 













   
   

 




 
# 107 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h"

 



 





 
 






 
 





 
static __inline uint32_t __get_CONTROL(void)
{
  register uint32_t __regControl         __asm("control");
  return(__regControl);
}






 
static __inline void __set_CONTROL(uint32_t control)
{
  register uint32_t __regControl         __asm("control");
  __regControl = control;
}






 
static __inline uint32_t __get_IPSR(void)
{
  register uint32_t __regIPSR          __asm("ipsr");
  return(__regIPSR);
}






 
static __inline uint32_t __get_APSR(void)
{
  register uint32_t __regAPSR          __asm("apsr");
  return(__regAPSR);
}






 
static __inline uint32_t __get_xPSR(void)
{
  register uint32_t __regXPSR          __asm("xpsr");
  return(__regXPSR);
}






 
static __inline uint32_t __get_PSP(void)
{
  register uint32_t __regProcessStackPointer  __asm("psp");
  return(__regProcessStackPointer);
}






 
static __inline void __set_PSP(uint32_t topOfProcStack)
{
  register uint32_t __regProcessStackPointer  __asm("psp");
  __regProcessStackPointer = topOfProcStack;
}






 
static __inline uint32_t __get_MSP(void)
{
  register uint32_t __regMainStackPointer     __asm("msp");
  return(__regMainStackPointer);
}






 
static __inline void __set_MSP(uint32_t topOfMainStack)
{
  register uint32_t __regMainStackPointer     __asm("msp");
  __regMainStackPointer = topOfMainStack;
}






 
static __inline uint32_t __get_PRIMASK(void)
{
  register uint32_t __regPriMask         __asm("primask");
  return(__regPriMask);
}






 
static __inline void __set_PRIMASK(uint32_t priMask)
{
  register uint32_t __regPriMask         __asm("primask");
  __regPriMask = (priMask);
}


# 342 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h"






 
static __inline uint32_t __get_FPSCR(void)
{





   return(0U);

}






 
static __inline void __set_FPSCR(uint32_t fpscr)
{





  (void)fpscr;

}


 


 



 




 






 







 






 








 










 










 






                  





 








 

__attribute__((section(".rev16_text"))) static __inline __asm uint32_t __REV16(uint32_t value)
{
  rev16 r0, r0
  bx lr
}








 

__attribute__((section(".revsh_text"))) static __inline __asm int16_t __REVSH(int16_t value)
{
  revsh r0, r0
  bx lr
}









 









 








 




__attribute__((always_inline)) static __inline uint32_t __RBIT(uint32_t value)
{
  uint32_t result;
  uint32_t s = (4U   * 8U) - 1U;  

  result = value;                       
  for (value >>= 1U; value != 0U; value >>= 1U)
  {
    result <<= 1U;
    result |= value & 1U;
    s--;
  }
  result <<= s;                         
  return result;
}








 



# 732 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h"







 
__attribute__((always_inline)) static __inline int32_t __SSAT(int32_t val, uint32_t sat)
{
  if ((sat >= 1U) && (sat <= 32U))
  {
    const int32_t max = (int32_t)((1U << (sat - 1U)) - 1U);
    const int32_t min = -1 - max ;
    if (val > max)
    {
      return max;
    }
    else if (val < min)
    {
      return min;
    }
  }
  return val;
}







 
__attribute__((always_inline)) static __inline uint32_t __USAT(int32_t val, uint32_t sat)
{
  if (sat <= 31U)
  {
    const uint32_t max = ((1U << sat) - 1U);
    if (val > (int32_t)max)
    {
      return max;
    }
    else if (val < 0)
    {
      return 0U;
    }
  }
  return (uint32_t)val;
}




   


 



 

# 866 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_armcc.h"
 


# 35 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h"




 
# 268 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\cmsis_compiler.h"




# 116 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h"

















 
# 150 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h"

 






 
# 166 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h"

 




 










 



 






 



 
typedef union
{
  struct
  {
    uint32_t _reserved0:28;               
    uint32_t V:1;                         
    uint32_t C:1;                         
    uint32_t Z:1;                         
    uint32_t N:1;                         
  } b;                                    
  uint32_t w;                             
} APSR_Type;

 















 
typedef union
{
  struct
  {
    uint32_t ISR:9;                       
    uint32_t _reserved0:23;               
  } b;                                    
  uint32_t w;                             
} IPSR_Type;

 






 
typedef union
{
  struct
  {
    uint32_t ISR:9;                       
    uint32_t _reserved0:15;               
    uint32_t T:1;                         
    uint32_t _reserved1:3;                
    uint32_t V:1;                         
    uint32_t C:1;                         
    uint32_t Z:1;                         
    uint32_t N:1;                         
  } b;                                    
  uint32_t w;                             
} xPSR_Type;

 





















 
typedef union
{
  struct
  {
    uint32_t _reserved0:1;                
    uint32_t SPSEL:1;                     
    uint32_t _reserved1:30;               
  } b;                                    
  uint32_t w;                             
} CONTROL_Type;

 



 







 



 
typedef struct
{
  volatile uint32_t ISER[1U];                
        uint32_t RESERVED0[31U];
  volatile uint32_t ICER[1U];                
        uint32_t RESERVED1[31U];
  volatile uint32_t ISPR[1U];                
        uint32_t RESERVED2[31U];
  volatile uint32_t ICPR[1U];                
        uint32_t RESERVED3[31U];
        uint32_t RESERVED4[64U];
  volatile uint32_t IP[8U];                  
}  NVIC_Type;

 







 



 
typedef struct
{
  volatile const  uint32_t CPUID;                   
  volatile uint32_t ICSR;                    
        uint32_t RESERVED0;
  volatile uint32_t AIRCR;                   
  volatile uint32_t SCR;                     
  volatile uint32_t CCR;                     
        uint32_t RESERVED1;
  volatile uint32_t SHP[2U];                 
  volatile uint32_t SHCSR;                   
} SCB_Type;

 















 



























 















 









 






 



 







 



 
typedef struct
{
  volatile uint32_t CTRL;                    
  volatile uint32_t LOAD;                    
  volatile uint32_t VAL;                     
  volatile const  uint32_t CALIB;                   
} SysTick_Type;

 












 



 



 









 








 
 







 






 







 


 







 

 










 









 


 



 





 

# 583 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h"
 





# 598 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\CMSIS\\Core\\Include\\core_cm0.h"




 





 
 












 
static __inline void __NVIC_EnableIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  }
}









 
static __inline uint32_t __NVIC_GetEnableIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISER[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
  }
  else
  {
    return(0U);
  }
}







 
static __inline void __NVIC_DisableIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICER[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
    do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U);
    do { __schedule_barrier(); __isb(0xF); __schedule_barrier(); } while (0U);
  }
}









 
static __inline uint32_t __NVIC_GetPendingIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL));
  }
  else
  {
    return(0U);
  }
}







 
static __inline void __NVIC_SetPendingIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ISPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  }
}







 
static __inline void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->ICPR[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  }
}










 
static __inline void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
  if ((int32_t)(IRQn) >= 0)
  {
    ((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )]  = ((uint32_t)(((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )]  & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) |
       (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL)));
  }
  else
  {
    ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] = ((uint32_t)(((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] & ~(0xFFUL << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL))) |
       (((priority << (8U - 2U)) & (uint32_t)0xFFUL) << ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL)));
  }
}










 
static __inline uint32_t __NVIC_GetPriority(IRQn_Type IRQn)
{

  if ((int32_t)(IRQn) >= 0)
  {
    return((uint32_t)(((((NVIC_Type *) ((0xE000E000UL) + 0x0100UL) )->IP[ ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U)));
  }
  else
  {
    return((uint32_t)(((((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->SHP[( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) )] >> ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) ) & (uint32_t)0xFFUL) >> (8U - 2U)));
  }
}












 
static __inline uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
{
  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);    
  uint32_t PreemptPriorityBits;
  uint32_t SubPriorityBits;

  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp);
  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U));

  return (
           ((PreemptPriority & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL)) << SubPriorityBits) |
           ((SubPriority     & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL)))
         );
}












 
static __inline void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* const pPreemptPriority, uint32_t* const pSubPriority)
{
  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL);    
  uint32_t PreemptPriorityBits;
  uint32_t SubPriorityBits;

  PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(2U)) ? (uint32_t)(2U) : (uint32_t)(7UL - PriorityGroupTmp);
  SubPriorityBits     = ((PriorityGroupTmp + (uint32_t)(2U)) < (uint32_t)7UL) ? (uint32_t)0UL : (uint32_t)((PriorityGroupTmp - 7UL) + (uint32_t)(2U));

  *pPreemptPriority = (Priority >> SubPriorityBits) & (uint32_t)((1UL << (PreemptPriorityBits)) - 1UL);
  *pSubPriority     = (Priority                   ) & (uint32_t)((1UL << (SubPriorityBits    )) - 1UL);
}











 
static __inline void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
{
  uint32_t vectors = 0x0U;
  (* (int *) (vectors + ((int32_t)IRQn + 16) * 4)) = vector;
}









 
static __inline uint32_t __NVIC_GetVector(IRQn_Type IRQn)
{
  uint32_t vectors = 0x0U;
  return (uint32_t)(* (int *) (vectors + ((int32_t)IRQn + 16) * 4));
}





 
__declspec(noreturn) static __inline void __NVIC_SystemReset(void)
{
  do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U);                                                          
 
  ((SCB_Type *) ((0xE000E000UL) + 0x0D00UL) )->AIRCR  = ((0x5FAUL << 16U) |
                 (1UL << 2U));
  do { __schedule_barrier(); __dsb(0xF); __schedule_barrier(); } while (0U);                                                           

  for(;;)                                                            
  {
    __nop();
  }
}

 


 





 








 
static __inline uint32_t SCB_GetFPUType(void)
{
    return 0U;            
}


 



 





 













 
static __inline uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1UL) > (0xFFFFFFUL ))
  {
    return (1UL);                                                    
  }

  ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->LOAD  = (uint32_t)(ticks - 1UL);                          
  __NVIC_SetPriority (SysTick_IRQn, (1UL << 2U) - 1UL);  
  ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->VAL   = 0UL;                                              
  ((SysTick_Type *) ((0xE000E000UL) + 0x0010UL) )->CTRL  = (1UL << 2U) |
                   (1UL << 1U)   |
                   (1UL );                          
  return (0UL);                                                      
}



 










# 129 "..\\src\\sdk\\include\\M0\\ArmCM0.h"
# 1 "C:\\Users\\Markin\\AppData\\Local\\Arm\\Packs\\ARM\\CMSIS\\5.5.1\\Device\\ARM\\ARMCM0\\Include\\system_ARMCM0.h"
 





 
















 








extern uint32_t SystemCoreClock;      






 
extern void SystemInit (void);






 
extern void SystemCoreClockUpdate (void);





# 130 "..\\src\\sdk\\include\\M0\\ArmCM0.h"



 





 
# 150 "..\\src\\sdk\\include\\M0\\ArmCM0.h"

 

#pragma pop
# 169 "..\\src\\sdk\\include\\M0\\ArmCM0.h"


 
# 194 "..\\src\\sdk\\include\\M0\\ArmCM0.h"

 
# 206 "..\\src\\sdk\\include\\M0\\ArmCM0.h"





# 12 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\common\\tau_device_datatype.h"








 







 

# 20 "..\\src\\common\\tau_device_datatype.h"
# 1 "..\\src\\common\\tau_common.h"








 






 
# 18 "..\\src\\common\\tau_common.h"
# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"




 





 












 






   









 






# 61 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"

# 75 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"







   




 















 
# 112 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"











 





extern __attribute__((__pcs__("aapcs"))) unsigned __ARM_dcmp4(double  , double  );
extern __attribute__((__pcs__("aapcs"))) unsigned __ARM_fcmp4(float  , float  );
    




 

extern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassifyf(float  );
extern __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_fpclassify(double  );
     
     

static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinitef(float __x)
{
    return (((*(unsigned *)&(__x)) >> 23) & 0xff) != 0xff;
}
static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isfinite(double __x)
{
    return (((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff) != 0x7ff;
}
     
     

static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinff(float __x)
{
    return ((*(unsigned *)&(__x)) << 1) == 0xff000000;
}
static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isinf(double __x)
{
    return (((*(1 + (unsigned *)&(__x))) << 1) == 0xffe00000) && ((*(unsigned *)&(__x)) == 0);
}
     
     

static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreaterf(float __x, float __y)
{
    unsigned __f = __ARM_fcmp4(__x, __y) >> 28;
    return (__f == 8) || (__f == 2);  
}
static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_islessgreater(double __x, double __y)
{
    unsigned __f = __ARM_dcmp4(__x, __y) >> 28;
    return (__f == 8) || (__f == 2);  
}
    


 

static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnanf(float __x)
{
    return (0x7f800000 - ((*(unsigned *)&(__x)) & 0x7fffffff)) >> 31;
}
static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnan(double __x)
{
    unsigned __xf = (*(1 + (unsigned *)&(__x))) | (((*(unsigned *)&(__x)) == 0) ? 0 : 1);
    return (0x7ff00000 - (__xf & 0x7fffffff)) >> 31;
}
     
     

static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormalf(float __x)
{
    unsigned __xe = ((*(unsigned *)&(__x)) >> 23) & 0xff;
    return (__xe != 0xff) && (__xe != 0);
}
static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_isnormal(double __x)
{
    unsigned __xe = ((*(1 + (unsigned *)&(__x))) >> 20) & 0x7ff;
    return (__xe != 0x7ff) && (__xe != 0);
}
     
     

static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbitf(float __x)
{
    return (*(unsigned *)&(__x)) >> 31;
}
static __inline __declspec(__nothrow) __attribute__((__pcs__("aapcs"))) int __ARM_signbit(double __x)
{
    return (*(1 + (unsigned *)&(__x))) >> 31;
}
     
     








# 230 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"







   
  typedef float float_t;
  typedef double double_t;
# 251 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"



extern const int math_errhandling;
# 261 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"

extern __declspec(__nothrow) double acos(double  );
    
    
    
extern __declspec(__nothrow) double asin(double  );
    
    
    
    

extern __declspec(__nothrow) __attribute__((const)) double atan(double  );
    
    

extern __declspec(__nothrow) double atan2(double  , double  );
    
    
    
    

extern __declspec(__nothrow) double cos(double  );
    
    
    
    
extern __declspec(__nothrow) double sin(double  );
    
    
    
    

extern void __use_accurate_range_reduction(void);
    
    

extern __declspec(__nothrow) double tan(double  );
    
    
    
    

extern __declspec(__nothrow) double cosh(double  );
    
    
    
    
extern __declspec(__nothrow) double sinh(double  );
    
    
    
    
    

extern __declspec(__nothrow) __attribute__((const)) double tanh(double  );
    
    

extern __declspec(__nothrow) double exp(double  );
    
    
    
    
    

extern __declspec(__nothrow) double frexp(double  , int *  ) __attribute__((__nonnull__(2)));
    
    
    
    
    
    

extern __declspec(__nothrow) double ldexp(double  , int  );
    
    
    
    
extern __declspec(__nothrow) double log(double  );
    
    
    
    
    
extern __declspec(__nothrow) double log10(double  );
    
    
    
extern __declspec(__nothrow) double modf(double  , double *  ) __attribute__((__nonnull__(2)));
    
    
    
    

extern __declspec(__nothrow) double pow(double  , double  );
    
    
    
    
    
    
extern __declspec(__nothrow) double sqrt(double  );
    
    
    




    static __inline double _sqrt(double __x) { return sqrt(__x); }




    static __inline float _sqrtf(float __x) { return (float)sqrt(__x); }

    



 

extern __declspec(__nothrow) __attribute__((const)) double ceil(double  );
    
    
extern __declspec(__nothrow) __attribute__((const)) double fabs(double  );
    
    

extern __declspec(__nothrow) __attribute__((const)) double floor(double  );
    
    

extern __declspec(__nothrow) double fmod(double  , double  );
    
    
    
    
    

    









 



extern __declspec(__nothrow) double acosh(double  );
    

 
extern __declspec(__nothrow) double asinh(double  );
    

 
extern __declspec(__nothrow) double atanh(double  );
    

 
extern __declspec(__nothrow) double cbrt(double  );
    

 
static __inline __declspec(__nothrow) __attribute__((const)) double copysign(double __x, double __y)
    

 
{
    (*(1 + (unsigned *)&(__x))) = ((*(1 + (unsigned *)&(__x))) & 0x7fffffff) | ((*(1 + (unsigned *)&(__y))) & 0x80000000);
    return __x;
}
static __inline __declspec(__nothrow) __attribute__((const)) float copysignf(float __x, float __y)
    

 
{
    (*(unsigned *)&(__x)) = ((*(unsigned *)&(__x)) & 0x7fffffff) | ((*(unsigned *)&(__y)) & 0x80000000);
    return __x;
}
extern __declspec(__nothrow) double erf(double  );
    

 
extern __declspec(__nothrow) double erfc(double  );
    

 
extern __declspec(__nothrow) double expm1(double  );
    

 



    

 






# 479 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"


extern __declspec(__nothrow) double hypot(double  , double  );
    




 
extern __declspec(__nothrow) int ilogb(double  );
    

 
extern __declspec(__nothrow) int ilogbf(float  );
    

 
extern __declspec(__nothrow) int ilogbl(long double  );
    

 







    

 





    



 





    



 





    

 





    



 





    



 





    



 





    

 





    

 





    


 

extern __declspec(__nothrow) double lgamma (double  );
    


 
extern __declspec(__nothrow) double log1p(double  );
    

 
extern __declspec(__nothrow) double logb(double  );
    

 
extern __declspec(__nothrow) float logbf(float  );
    

 
extern __declspec(__nothrow) long double logbl(long double  );
    

 
extern __declspec(__nothrow) double nextafter(double  , double  );
    


 
extern __declspec(__nothrow) float nextafterf(float  , float  );
    


 
extern __declspec(__nothrow) long double nextafterl(long double  , long double  );
    


 
extern __declspec(__nothrow) double nexttoward(double  , long double  );
    


 
extern __declspec(__nothrow) float nexttowardf(float  , long double  );
    


 
extern __declspec(__nothrow) long double nexttowardl(long double  , long double  );
    


 
extern __declspec(__nothrow) double remainder(double  , double  );
    

 
extern __declspec(__nothrow) __attribute__((const)) double rint(double  );
    

 
extern __declspec(__nothrow) double scalbln(double  , long int  );
    

 
extern __declspec(__nothrow) float scalblnf(float  , long int  );
    

 
extern __declspec(__nothrow) long double scalblnl(long double  , long int  );
    

 
extern __declspec(__nothrow) double scalbn(double  , int  );
    

 
extern __declspec(__nothrow) float scalbnf(float  , int  );
    

 
extern __declspec(__nothrow) long double scalbnl(long double  , int  );
    

 




    

 



 
extern __declspec(__nothrow) __attribute__((const)) float _fabsf(float);  
static __inline __declspec(__nothrow) __attribute__((const)) float fabsf(float __f) { return _fabsf(__f); }
extern __declspec(__nothrow) float sinf(float  );
extern __declspec(__nothrow) float cosf(float  );
extern __declspec(__nothrow) float tanf(float  );
extern __declspec(__nothrow) float acosf(float  );
extern __declspec(__nothrow) float asinf(float  );
extern __declspec(__nothrow) float atanf(float  );
extern __declspec(__nothrow) float atan2f(float  , float  );
extern __declspec(__nothrow) float sinhf(float  );
extern __declspec(__nothrow) float coshf(float  );
extern __declspec(__nothrow) float tanhf(float  );
extern __declspec(__nothrow) float expf(float  );
extern __declspec(__nothrow) float logf(float  );
extern __declspec(__nothrow) float log10f(float  );
extern __declspec(__nothrow) float powf(float  , float  );
extern __declspec(__nothrow) float sqrtf(float  );
extern __declspec(__nothrow) float ldexpf(float  , int  );
extern __declspec(__nothrow) float frexpf(float  , int *  ) __attribute__((__nonnull__(2)));
extern __declspec(__nothrow) __attribute__((const)) float ceilf(float  );
extern __declspec(__nothrow) __attribute__((const)) float floorf(float  );
extern __declspec(__nothrow) float fmodf(float  , float  );
extern __declspec(__nothrow) float modff(float  , float *  ) __attribute__((__nonnull__(2)));

 
 













 
__declspec(__nothrow) long double acosl(long double );
__declspec(__nothrow) long double asinl(long double );
__declspec(__nothrow) long double atanl(long double );
__declspec(__nothrow) long double atan2l(long double , long double );
__declspec(__nothrow) long double ceill(long double );
__declspec(__nothrow) long double cosl(long double );
__declspec(__nothrow) long double coshl(long double );
__declspec(__nothrow) long double expl(long double );
__declspec(__nothrow) long double fabsl(long double );
__declspec(__nothrow) long double floorl(long double );
__declspec(__nothrow) long double fmodl(long double , long double );
__declspec(__nothrow) long double frexpl(long double , int* ) __attribute__((__nonnull__(2)));
__declspec(__nothrow) long double ldexpl(long double , int );
__declspec(__nothrow) long double logl(long double );
__declspec(__nothrow) long double log10l(long double );
__declspec(__nothrow) long double modfl(long double  , long double *  ) __attribute__((__nonnull__(2)));
__declspec(__nothrow) long double powl(long double , long double );
__declspec(__nothrow) long double sinl(long double );
__declspec(__nothrow) long double sinhl(long double );
__declspec(__nothrow) long double sqrtl(long double );
__declspec(__nothrow) long double tanl(long double );
__declspec(__nothrow) long double tanhl(long double );





 
extern __declspec(__nothrow) float acoshf(float  );
__declspec(__nothrow) long double acoshl(long double );
extern __declspec(__nothrow) float asinhf(float  );
__declspec(__nothrow) long double asinhl(long double );
extern __declspec(__nothrow) float atanhf(float  );
__declspec(__nothrow) long double atanhl(long double );
__declspec(__nothrow) long double copysignl(long double , long double );
extern __declspec(__nothrow) float cbrtf(float  );
__declspec(__nothrow) long double cbrtl(long double );
extern __declspec(__nothrow) float erff(float  );
__declspec(__nothrow) long double erfl(long double );
extern __declspec(__nothrow) float erfcf(float  );
__declspec(__nothrow) long double erfcl(long double );
extern __declspec(__nothrow) float expm1f(float  );
__declspec(__nothrow) long double expm1l(long double );
extern __declspec(__nothrow) float log1pf(float  );
__declspec(__nothrow) long double log1pl(long double );
extern __declspec(__nothrow) float hypotf(float  , float  );
__declspec(__nothrow) long double hypotl(long double , long double );
extern __declspec(__nothrow) float lgammaf(float  );
__declspec(__nothrow) long double lgammal(long double );
extern __declspec(__nothrow) float remainderf(float  , float  );
__declspec(__nothrow) long double remainderl(long double , long double );
extern __declspec(__nothrow) float rintf(float  );
__declspec(__nothrow) long double rintl(long double );






 
extern __declspec(__nothrow) double exp2(double  );  
extern __declspec(__nothrow) float exp2f(float  );
__declspec(__nothrow) long double exp2l(long double );
extern __declspec(__nothrow) double fdim(double  , double  );
extern __declspec(__nothrow) float fdimf(float  , float  );
__declspec(__nothrow) long double fdiml(long double , long double );
# 803 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"
extern __declspec(__nothrow) double fma(double  , double  , double  );
extern __declspec(__nothrow) float fmaf(float  , float  , float  );

static __inline __declspec(__nothrow) long double fmal(long double __x, long double __y, long double __z)     { return (long double)fma((double)__x, (double)__y, (double)__z); }


extern __declspec(__nothrow) __attribute__((const)) double fmax(double  , double  );
extern __declspec(__nothrow) __attribute__((const)) float fmaxf(float  , float  );
__declspec(__nothrow) long double fmaxl(long double , long double );
extern __declspec(__nothrow) __attribute__((const)) double fmin(double  , double  );
extern __declspec(__nothrow) __attribute__((const)) float fminf(float  , float  );
__declspec(__nothrow) long double fminl(long double , long double );
extern __declspec(__nothrow) double log2(double  );  
extern __declspec(__nothrow) float log2f(float  );
__declspec(__nothrow) long double log2l(long double );
extern __declspec(__nothrow) long lrint(double  );
extern __declspec(__nothrow) long lrintf(float  );

static __inline __declspec(__nothrow) long lrintl(long double __x)     { return lrint((double)__x); }


extern __declspec(__nothrow) long long llrint(double  );
extern __declspec(__nothrow) long long llrintf(float  );

static __inline __declspec(__nothrow) long long llrintl(long double __x)     { return llrint((double)__x); }


extern __declspec(__nothrow) long lround(double  );
extern __declspec(__nothrow) long lroundf(float  );

static __inline __declspec(__nothrow) long lroundl(long double __x)     { return lround((double)__x); }


extern __declspec(__nothrow) long long llround(double  );
extern __declspec(__nothrow) long long llroundf(float  );

static __inline __declspec(__nothrow) long long llroundl(long double __x)     { return llround((double)__x); }


extern __declspec(__nothrow) __attribute__((const)) double nan(const char * );
extern __declspec(__nothrow) __attribute__((const)) float nanf(const char * );

static __inline __declspec(__nothrow) __attribute__((const)) long double nanl(const char *__t)     { return (long double)nan(__t); }
# 856 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"
extern __declspec(__nothrow) __attribute__((const)) double nearbyint(double  );
extern __declspec(__nothrow) __attribute__((const)) float nearbyintf(float  );
__declspec(__nothrow) long double nearbyintl(long double );
extern  double remquo(double  , double  , int * );
extern  float remquof(float  , float  , int * );

static __inline long double remquol(long double __x, long double __y, int *__q)     { return (long double)remquo((double)__x, (double)__y, __q); }


extern __declspec(__nothrow) __attribute__((const)) double round(double  );
extern __declspec(__nothrow) __attribute__((const)) float roundf(float  );
__declspec(__nothrow) long double roundl(long double );
extern __declspec(__nothrow) double tgamma(double  );  
extern __declspec(__nothrow) float tgammaf(float  );
__declspec(__nothrow) long double tgammal(long double );
extern __declspec(__nothrow) __attribute__((const)) double trunc(double  );
extern __declspec(__nothrow) __attribute__((const)) float truncf(float  );
__declspec(__nothrow) long double truncl(long double );






# 896 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"

# 1087 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"











# 1317 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\math.h"





 
# 19 "..\\src\\common\\tau_common.h"



 



 

















 














 

 




 

# 75 "..\\src\\common\\tau_common.h"

























 


 


















 















 









 











 











 


 















 


 


 




 



 





 
 
typedef void (*fcb_type)(void *data);

# 21 "..\\src\\common\\tau_device_datatype.h"



 



 
 




 
 
enum _status_groups
{
    STATUS_GROUP_GENERIC    = 0,
    STATUS_GROUP_I2C        = 1,
    STATUS_GROUP_UART       = 2,
    STATUS_GROUP_SPI        = 3,
    kStatusGroup_Timer      = 4,
};

 
enum _generic_status
{
    STATUS_SUCCESS                     = ((((STATUS_GROUP_GENERIC)*100) + (0))),
    STATUS_FAIL                        = ((((STATUS_GROUP_GENERIC)*100) + (1))),
    STATUS_READ_ONLY                   = ((((STATUS_GROUP_GENERIC)*100) + (2))),
    STATUS_OUT_OF_RANGE                = ((((STATUS_GROUP_GENERIC)*100) + (3))),
    STATUS_INVALID_ARGUMENT            = ((((STATUS_GROUP_GENERIC)*100) + (4))),
    STATUS_TIME_OUT                    = ((((STATUS_GROUP_GENERIC)*100) + (5))),
    STATUS_NO_TRANSFER_IN_PROGRESS     = ((((STATUS_GROUP_GENERIC)*100) + (6))),
};



 
typedef enum
{
    TIMER_STATUS_IDLE            = ((((kStatusGroup_Timer)*100) + (0))),     
    TIMER_STATUS_RUNNING         = ((((kStatusGroup_Timer)*100) + (1))),     
    TIMER_STATUS_TIMEOUT         = ((((kStatusGroup_Timer)*100) + (2))),     
} timer_status_e;



 
typedef enum
{
    DETECT_HIGH_LVL = 0,
    DETECT_LOW_LVL,
    DETECT_RISING_EDGE,
    DETECT_FALLING_EDGE
} sys_cfg_trigger_e;



 
typedef enum
{
    TIMER_NUM0 = 0,
    TIMER_NUM1,
    TIMER_NUM2,
    TIMER_NUM3,
    TIMER_NUM_MAX
} timer_num_e;



 
typedef enum
{
    GPIO_INT_EXTI_INT0 = 0,
    GPIO_INT_EXTI_INT1,
    GPIO_INT_EXTI_INT2,
    GPIO_INT_EXTI_INT3,
    GPIO_INT_EXTI_INT4,
    GPIO_INT_EXTI_INT5,
    GPIO_INT_EXTI_INT6,
    GPIO_INT_EXTI_INT7,
    GPIO_INT_MAX
} gpio_int_e;

 
typedef enum _pwm_int_type
{
    PWM_INT_HIGH_OVERFLOW = 0,
    PWM_INT_LOW_OVERFLOW,
    PWM_INT_TOTAL_OVERFLOW,
    PWM_INT_HIGH_DONE,
    PWM_INT_LOW_DONE,
    PWM_INT_TOTAL_DONE,
    PWM_INT_MAX
} pwm_int_type_e;



 
typedef enum
{
    I2C_SELECT_0 = 0,    
    I2C_SELECT_1,        
} i2c_select_e;




 
typedef enum _i2c_rate
{
    I2C_RATE_STANDARD = 1, 
    I2C_RATE_FAST,         
    I2C_RATE_HIGH,         
} i2c_rate_e;

 
typedef enum
{
    DMA_CH0 = 0,            
    DMA_CH1 = 1,            
    DMA_CH2 = 2,            
    DMA_CH3 = 3,            
    DMA_CH4 = 4,            
    DMA_CH5 = 5,            
} dma_channel_e;


 

typedef enum
{
    DISABLE = 0,
    ENABLE = !DISABLE
} function_state_e;
 
typedef int32_t status_t;





 



# 13 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\common\\tau_log.h"








 






 
# 18 "..\\src\\common\\tau_log.h"
# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h"
 
 
 
 




 








 












# 38 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h"


  



    typedef unsigned int size_t;    
# 54 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h"




extern __declspec(__nothrow) void *memcpy(void * __restrict  ,
                    const void * __restrict  , size_t  ) __attribute__((__nonnull__(1,2)));
   




 
extern __declspec(__nothrow) void *memmove(void *  ,
                    const void *  , size_t  ) __attribute__((__nonnull__(1,2)));
   







 
extern __declspec(__nothrow) char *strcpy(char * __restrict  , const char * __restrict  ) __attribute__((__nonnull__(1,2)));
   




 
extern __declspec(__nothrow) char *strncpy(char * __restrict  , const char * __restrict  , size_t  ) __attribute__((__nonnull__(1,2)));
   





 

extern __declspec(__nothrow) char *strcat(char * __restrict  , const char * __restrict  ) __attribute__((__nonnull__(1,2)));
   




 
extern __declspec(__nothrow) char *strncat(char * __restrict  , const char * __restrict  , size_t  ) __attribute__((__nonnull__(1,2)));
   






 






 

extern __declspec(__nothrow) int memcmp(const void *  , const void *  , size_t  ) __attribute__((__nonnull__(1,2)));
   





 
extern __declspec(__nothrow) int strcmp(const char *  , const char *  ) __attribute__((__nonnull__(1,2)));
   




 
extern __declspec(__nothrow) int strncmp(const char *  , const char *  , size_t  ) __attribute__((__nonnull__(1,2)));
   






 
extern __declspec(__nothrow) int strcasecmp(const char *  , const char *  ) __attribute__((__nonnull__(1,2)));
   





 
extern __declspec(__nothrow) int strncasecmp(const char *  , const char *  , size_t  ) __attribute__((__nonnull__(1,2)));
   






 
extern __declspec(__nothrow) int strcoll(const char *  , const char *  ) __attribute__((__nonnull__(1,2)));
   







 

extern __declspec(__nothrow) size_t strxfrm(char * __restrict  , const char * __restrict  , size_t  ) __attribute__((__nonnull__(2)));
   













 


# 193 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h"
extern __declspec(__nothrow) void *memchr(const void *  , int  , size_t  ) __attribute__((__nonnull__(1)));

   





 

# 209 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h"
extern __declspec(__nothrow) char *strchr(const char *  , int  ) __attribute__((__nonnull__(1)));

   




 

extern __declspec(__nothrow) size_t strcspn(const char *  , const char *  ) __attribute__((__nonnull__(1,2)));
   




 

# 232 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h"
extern __declspec(__nothrow) char *strpbrk(const char *  , const char *  ) __attribute__((__nonnull__(1,2)));

   




 

# 247 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h"
extern __declspec(__nothrow) char *strrchr(const char *  , int  ) __attribute__((__nonnull__(1)));

   





 

extern __declspec(__nothrow) size_t strspn(const char *  , const char *  ) __attribute__((__nonnull__(1,2)));
   



 

# 270 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h"
extern __declspec(__nothrow) char *strstr(const char *  , const char *  ) __attribute__((__nonnull__(1,2)));

   





 

extern __declspec(__nothrow) char *strtok(char * __restrict  , const char * __restrict  ) __attribute__((__nonnull__(2)));
extern __declspec(__nothrow) char *_strtok_r(char *  , const char *  , char **  ) __attribute__((__nonnull__(2,3)));

extern __declspec(__nothrow) char *strtok_r(char *  , const char *  , char **  ) __attribute__((__nonnull__(2,3)));

   

































 

extern __declspec(__nothrow) void *memset(void *  , int  , size_t  ) __attribute__((__nonnull__(1)));
   



 
extern __declspec(__nothrow) char *strerror(int  );
   





 
extern __declspec(__nothrow) size_t strlen(const char *  ) __attribute__((__nonnull__(1)));
   



 

extern __declspec(__nothrow) size_t strlcpy(char *  , const char *  , size_t  ) __attribute__((__nonnull__(1,2)));
   
















 

extern __declspec(__nothrow) size_t strlcat(char *  , const char *  , size_t  ) __attribute__((__nonnull__(1,2)));
   






















 

extern __declspec(__nothrow) void _membitcpybl(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitcpybb(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitcpyhl(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitcpyhb(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitcpywl(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitcpywb(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitmovebl(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitmovebb(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitmovehl(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitmovehb(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitmovewl(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
extern __declspec(__nothrow) void _membitmovewb(void *  , const void *  , int  , int  , size_t  ) __attribute__((__nonnull__(1,2)));
    














































 







# 502 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\string.h"



 

# 19 "..\\src\\common\\tau_log.h"
# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h"
 
 
 





 










# 27 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h"








 

 
 
# 57 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h"
    typedef struct __va_list { void *__ap; } va_list;

   






 


   










 


   















 




   

 


   




 



   





 








      
     typedef  va_list __gnuc_va_list;






# 147 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdarg.h"

 

# 20 "..\\src\\common\\tau_log.h"
# 21 "..\\src\\common\\tau_log.h"



 









 
# 46 "..\\src\\common\\tau_log.h"


# 54 "..\\src\\common\\tau_log.h"

# 62 "..\\src\\common\\tau_log.h"



 
typedef enum
{
    kLOG_LEVEL_DBG = 0,
    kLOG_LEVEL_INF,
    kLOG_LEVEL_ERR,
    kLOG_LEVEL_NONE       
} log_level_t;



 



 
void LOG_printf(const char *fmt, ...);

# 14 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\common\\tau_operations.h"








 






 

 




 


 


 




 



 




 




 




 




 




 





 





 






 





 




 





 




 





 





 





 




 



 

 











 












 












 












 












 












 













 



 

# 15 "..\\src\\app\\demo\\ap_demo.c"
# 16 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\common\\tau_delay.h"














 
# 19 "..\\src\\common\\tau_delay.h"





 
void delayMs(uint32_t ms);





 
void delayUs(uint32_t us);

# 17 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\sdk\\include\\hal_dsi_rx_ctrl.h"








 





 
# 1 "..\\src\\common\\tau_dsi_datatype.h"








 






 
# 18 "..\\src\\common\\tau_dsi_datatype.h"



 




 


 
typedef enum
{
    DSI_ACK_DT_ERROR                 = 0x02,
    DSI_ACK_DT_EOTP                  = 0x08,
    DSI_ACK_DT_GEN_SHORT_RESPONSE_1B = 0x11,
    DSI_ACK_DT_GEN_SHORT_RESPONSE_2B = 0x12,
    DSI_ACK_DT_GEN_LONG_RESPONSE     = 0x1A,
    DSI_ACK_DT_DSC_LONG_RESPONSE     = 0x1C,
    DSI_ACK_DT_DSC_SHORT_RESPONSE_1B = 0x21,
    DSI_ACK_DT_DSC_SHORT_RESPONSE_2B = 0x22,
    DSI_ACK_DT_MAX
} dsi_ack_data_type_e;



 
typedef enum
{
    DSI_RECV_DT_PPS                   = 0x0A,   
    DSI_RECV_DT_GEN_WRITE_1B          = 0x13,   
    DSI_RECV_DT_GEN_WRITE_2B          = 0x23,   
    DSI_RECV_DT_GEN_READ_0B           = 0x04,   
    DSI_RECV_DT_GEN_READ_1B           = 0x14,   
    DSI_RECV_DT_GEN_READ_2B           = 0x24,   
    DSI_RECV_DT_DCS_WRITE_0B          = 0x05,   
    DSI_RECV_DT_DCS_WRITE_1B          = 0x15,   
    DSI_RECV_DT_DCS_READ_0B           = 0x06,   
    DSI_RECV_DT_GEN_WRITE_LONG        = 0x29,   
    DSI_RECV_DT_DCS_WRITE_LONG        = 0x39,   
    DSI_RECV_DT_MAX
} dsi_data_type_e;

typedef enum
{
    DCS_ENTER_IDLE_MODE       = 0x39,
    DCS_ENTER_INVERT_MODE     = 0x21,
    DCS_ENTER_NORMAL_MODE     = 0x13,
    DCS_ENTER_PARTIAL_MODE    = 0x12,
    DCS_ENTER_SLEEP_MODE      = 0x10,
    DCS_EXIT_IDLE_MODE        = 0x38,
    DCS_EXIT_INVERT_MODE      = 0x20,
    DCS_EXIT_SLEEP_MODE       = 0x11,
    DCS_GET_3D_CONTROL        = 0x3F,
    DCS_GET_ADDRESS_MODE      = 0x0B,
    DCS_GET_BLUE_CHANNEL      = 0x08,
    DCS_GET_COMPRESSION_MODE  = 0x03,
    DCS_GET_DIAGNOSTIC_RESULT = 0x0F,
    DCS_GET_DISPLAY_MODE      = 0x0D,
    DCS_GET_GREEN_CHANNEL     = 0x07,
    DCS_GET_PIXEL_FORMAT      = 0x0C,
    DCS_GET_POWER_MODE        = 0x0A,
    DCS_GET_RED_CHANNEL       = 0x06,
    DCS_GET_SCANLINE          = 0x45,
    DCS_GET_SIGNAL_MODE       = 0x0E,
    DCS_NOP                   = 0x00,
    DCS_READ_DDB_CONTINUE     = 0xA8,
    DCS_READ_DDB_START        = 0xA1,
    DCS_READ_MEMORY_CONTINUE  = 0x3E,
    DCS_READ_MEMORY_START     = 0x2E,
    DCS_SET_3D_CONTROL        = 0x3D,
    DCS_SET_ADDRESS_MODE      = 0x36,
    DCS_SET_COLUMN_ADDRESS    = 0x2A,
    DCS_SET_DISPLAY_OFF       = 0x28,
    DCS_SET_DISPLAY_ON        = 0x29,
    DCS_SET_GAMMA_CURVE       = 0x26,
    DCS_SET_PAGE_ADDRESS      = 0x2B,
    DCS_SET_PARTIAL_COLUMNS   = 0x31,
    DCS_SET_PARTIAL_ROWS      = 0x30,
    DCS_SET_PIXEL_FORMAT      = 0x3A,
    DCS_SET_SCROLL_AREA       = 0x33,
    DCS_SET_SCROLL_START      = 0x37,
    DCS_SET_TEAR_OFF          = 0x34,
    DCS_SET_TEAR_ON           = 0x35,
    DCS_SET_TEAR_SCANLINE     = 0x44,
    DCS_SET_VSYNC_TIMING      = 0x40,
    DCS_SOFT_RESET            = 0x01,
    DCS_WRITE_LUT             = 0x2D,
    DCS_WRITE_MEMORY_CONTINUE = 0x3C,
    DCS_WRITE_MEMORY_START    = 0x2C
} dsi_dcs_cmd_type_e;



 
typedef enum
{
    DSI_DATA_VIDEO_MODE = 0,
    DSI_DATA_CMD_MODE   = 1,
    DSI_DATA_MODE_MAX
} dsi_video_data_mode_e;



 
typedef enum
{
    DSI_VC_0 = 0,
    DSI_VC_1 = 1,
    DSI_VC_2 = 2,
    DSI_VC_3 = 3,
    DSI_VC_MAX
} dsi_virtual_channel_e;



 
typedef enum
{
    DSI_FRAME_RATE_60HZ  = 0,
    DSI_FRAME_RATE_90HZ  = 1,
    DSI_FRAME_RATE_120HZ = 2,
    DSI_FRAME_RATE_144HZ = 3,
    DSI_FRAME_RATE_160HZ = 4,
    DSI_FRAME_RATE_MAX
} dsi_video_frame_rate_e;



 
typedef enum
{
    DSI_RGB565               = 1,
    DSI_RGB666               = 2,     
    DSI_RGB666_LOOSELY       = 3,     
    DSI_RGB888               = 4,     
    DSI_RGB10_10_10          = 5,
    DSI_RGB12_12_12          = 6,
    DSI_YCbCr422_16          = 7,
    DSI_PENTILE_16           = DSI_YCbCr422_16,
    DSI_YCbCr422_20_LOOSELY  = 8,
    DSI_YCbCr422_24          = 9,
    DSI_YCbCr420_12          = 10,
    DSI_COLOR_CODE_MAX
} dsi_color_code_e;



 
typedef enum
{
    DPI_ENDIAN_RGB = 0,
    DPI_ENDIAN_BGR
} dpi_endianness_type_e;



 
typedef enum
{
    DPI_SIG_ACTIVE_HIGH = 0,
    DPI_SIG_ACTIVE_LOW  = 1
} dpi_polarity_e;



 
typedef enum
{
    DSI_LANE_1 = 1,
    DSI_LANE_2 = 2,
    DSI_LANE_3 = 3,
    DSI_LANE_4 = 4,
    DSI_LANE_NUME_MAX
} dsi_lane_nume_e;



 
typedef enum
{
    DSI_NONBURST_PULSE = 0,
    DSI_NONBURST_EVENT = 1,
    DSI_BURST_MODE     = 2,
    DSI_VIDEO_MODE_MAX
} dsi_video_mode_type_e;



 
typedef enum
{
    DSI_CMD_TX_HS = 0,
    DSI_CMD_TX_LP = 1
} dsi_tx_cmd_tx_type_e;



 
typedef enum
{
    TX_VPG_V_COLOR = 0,
    TX_VPG_H_COLOR = 1,
    TX_VPG_V_BER   = 2,
    TX_VPG_MAX
} dsi_tx_vpg_style_e;




 
typedef enum
{
    VIDOE_ROT_ANGLE_0    = 0,  
    VIDOE_ROT_ANGLE_90   = 1,  
    VIDOE_ROT_ANGLE_180  = 2,  
    VIDOE_ROT_ANGLE_270  = 3,  
    VIDOE_ROT_ANGLE_MAX
} video_rotate_angle_e;



 
typedef enum
{
    RX_LANE_ORDER_DEFAULT = 0x0,
    RX_LANE_ORDER_3012 = RX_LANE_ORDER_DEFAULT,
    RX_LANE_ORDER_3210 = 0x1,
    RX_LANE_ORDER_MAX
} dsi_rx_lane_swap_e;



 
typedef struct
{
    _Bool     ltpo;                        
    _Bool     mirror_en;                   
    video_rotate_angle_e   rot_angle;     
    dsi_video_data_mode_e  dst_mode;      
    dsi_rx_lane_swap_e     rx_lane_swap;  
} dsi_base_extra_info_t;






 
typedef enum
{
    RX_LANE_0_PN_SWAP = 0x1,
    RX_LANE_1_PN_SWAP = 0x2,
    RX_LANE_2_PN_SWAP = 0x4,
    RX_LANE_3_PN_SWAP = 0x8,
    RX_LANE_CLK_PN_SWAP = 0x10
} dsi_rx_lane_pn_swap_e;



 
typedef enum
{
    ERR_HANDLE_NONE  = 0,
    ERR_HANDLE_L1  = 1,
    ERR_HANDLE_L2  = 2,
    ERR_HANDLE_L3  = 3,
    ERR_HANDLE_MAX
} hal_err_handle_level_e;



 
typedef struct
{
    uint32_t src_w;                      
    uint32_t src_h;                      
    uint32_t dst_w;                      
    uint32_t dst_h;                      
    dsi_video_frame_rate_e src_frate;    
    dsi_video_data_mode_e  src_mode;     
    uint16_t pn_swap;                    

    dsi_base_extra_info_t  extra_info;   

} dsi_base_trans_info_t;



 
typedef struct
{
    uint32_t coef_c00;
    uint32_t coef_c01;
    uint32_t coef_c02;
    uint32_t coef_c10;
    uint32_t coef_c11;
    uint32_t coef_c12;
    uint32_t coef_c20;
    uint32_t coef_c21;
    uint32_t coef_c22;
} ccm_coef_t;



 
typedef struct
{
    uint32_t    vsa;
    uint32_t    vbp;
    uint32_t    vact;
    uint32_t    vfp;
    uint32_t    hsa;
    uint32_t    hbp;
    uint32_t    hact;
    uint32_t    hfp;
} vid_disp_timing_t;



 
typedef struct
{
    dpi_polarity_e   vsync_active_level;    
    dpi_polarity_e   hsync_active_level;    
    dpi_polarity_e   dataen_active_level;   
    dpi_polarity_e   shutdown_active_level; 
    dpi_polarity_e   colorm_active_level;   
} dpi_polarity_t;
# 17 "..\\src\\sdk\\include\\hal_dsi_rx_ctrl.h"
# 18 "..\\src\\sdk\\include\\hal_dsi_rx_ctrl.h"



 




 
typedef struct hal_dcs_execute_entry_t hal_dcs_execute_entry_t;

typedef struct hal_dcs_packet_t hal_dcs_packet_t;

typedef struct hal_dsi_rx_ctrl_handle_t hal_dsi_rx_ctrl_handle_t;

 
typedef _Bool (*hal_dsi_rx_ctrl_dcs_execute)(hal_dsi_rx_ctrl_handle_t *rx_handle, hal_dcs_packet_t *dcs_packet);

 
typedef _Bool (*hal_dsi_rx_ctrl_read_entry)(uint8_t data_type, uint8_t dcs_cmd, uint8_t param);

 
typedef _Bool (*hal_dsi_rx_ctrl_pps_entry)(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height);



 
typedef enum hal_rx_dbg_event_e
{
    HAL_RX_DBG_FS   = 0,   
    HAL_RX_DBG_EVENT_MAX
} hal_rx_dbg_event_e;

 
typedef void (*hal_dsi_rx_ctrl_dbg_entry)(hal_rx_dbg_event_e event);



 
typedef struct hal_dsi_rx_ctrl_handle_t
{
    dsi_base_trans_info_t            base_info;                  
    dsi_color_code_e                 rx_color_mode;              
    dsi_lane_nume_e                  rx_lanes;                   
    dsi_video_mode_type_e            rx_nonburst_models;         
    dsi_virtual_channel_e            rx_vc;                      
    _Bool                             compress_en;                
    uint32_t                         rx_hsclk_rate;              
    uint8_t                          rx_dsc_pps[128];   
    const hal_dcs_execute_entry_t    *cus_dcs_entry_table;       
    hal_dsi_rx_ctrl_read_entry       rx_dcs_read_entry;          
    hal_dsi_rx_ctrl_pps_entry        pps_update_entry;           
    _Bool                             used;                       
    uint8_t                          pq_marginal;                
    _Bool                             direct_mode;                
    hal_dsi_rx_ctrl_dbg_entry        rx_debug_cb;                
    hal_err_handle_level_e           err_handler_level;          
    _Bool                             draw_mode;                  
} hal_dsi_rx_ctrl_handle_t;



 
typedef struct hal_dcs_execute_entry_t
{
    uint32_t dcs_command;                       
    hal_dsi_rx_ctrl_dcs_execute execute_func;   
    _Bool immediately_func;                      
} hal_dcs_execute_entry_t;



 
typedef struct hal_dcs_packet_t
{
    uint32_t data_type;                         
    uint32_t dcs_command;                       
    uint32_t param_length;                      
    uint8_t *packet_param;                      
    const hal_dcs_execute_entry_t *dcs_execute_entry;   
} hal_dcs_packet_t;



 
typedef enum
{
    HAL_RX_DCS_FILTER_0 = 0,
    HAL_RX_DCS_FILTER_1 = 1,
    HAL_RX_DCS_FILTER_2 = 2,
    HAL_RX_DCS_FILTER_3 = 3,
    HAL_RX_DCS_FILTER_4 = 4,
    HAL_RX_DCS_FILTER_5 = 5,
    HAL_RX_DCS_FILTER_6 = 6,
    HAL_RX_DCS_FILTER_7 = 7,
    HAL_RX_DCS_FILTER_MAX
} hal_rx_dcs_filter_sel_e;



 
typedef enum
{
    PENTILE_SRC_FORMAT_RGB           = 0x0,
    PENTILE_SRC_FORMAT_BGR           = 0x1,
    PENTILE_SRC_FORMAT_RGBG_BGRG     = 0x8,
    PENTILE_SRC_FORMAT_GBGR_GRGB     = 0x9,
    PENTILE_SRC_FORMAT_BGRG_RGBG     = 0xA,
    PENTILE_SRC_FORMAT_GRGB_GBGR     = 0xB,
    PENTILE_SRC_FORMAT_RGBG_RGBG     = 0xC,
    PENTILE_SRC_FORMAT_GBGR_GBGR     = 0xD,
    PENTILE_SRC_FORMAT_BGRG_BGRG     = 0xE,
    PENTILE_SRC_FORMAT_GRGB_GRGB     = 0xF,
    PENTILE_SRC_FORMAT_MAX
} pentile_src_format_e;



 
typedef enum
{
    PENTILE_G0G1  = 0,
    PENTILE_G1G0  = 1
} pentile_g_swap_e;



 
typedef enum
{
    PENTILE_RGBG_BGRG  = 0,
    PENTILE_GGRB_RBGG  = 1,
    PENTILE_GGBR_BRGG  = 3
} pentile_rb_swap_e;



 
typedef enum
{
    TE_HW_MODE          = 0,    
    TE_USER_MODE        = 1,    
    TE_SOFT_60HZ_MODE   = 2,    
    TE_SOFT_90HZ_MODE   = 4,    
    TE_SOFT_120HZ_MODE  = 5,    
    TE_HW_MAX
} te_mode_e;



 
typedef enum
{
    PQ_TYPE_0 = 0x0,
    PQ_TYPE_1 = 0x1,
    PQ_TYPE_2 = 0x3,
    PQ_TYPE_3 = 0x2,
    PQ_TYPE_4 = 0xA,
    PQ_TYPE_5 = 0xE,
    PQ_TYPE_6 = 0xC,
    PQ_TYPE_7 = 0x1A,
    PQ_TYPE_8 = 0x18,
    PQ_TYPE_MAX
} hal_rx_pq_marginal_type_e;



 
typedef enum
{
    RX_CLK_100M   = 0,
    RX_CLK_150M   = 1,
    RX_CLK_200M   = 2,
    RX_CLK_300M   = 3,
    RX_CLK_MAX
} hal_rx_clk_e;




 



 





 
hal_dsi_rx_ctrl_handle_t *hal_dsi_rx_ctrl_create_handle(void);





 
_Bool hal_dsi_rx_ctrl_release_handle(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);







 
_Bool hal_dsi_rx_ctrl_pre_init_pps(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pps[], uint32_t pps_size);





 
_Bool hal_dsi_rx_ctrl_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_deinit(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_start(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_restart(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_stop(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_set_rx_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, hal_rx_clk_e rxbr_clk);









 
_Bool hal_dsi_rx_ctrl_send_ack_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_ack_data_type_e data_type, dsi_virtual_channel_e vc, uint8_t cmd_count, ...);











 
_Bool hal_dsi_rx_ctrl_ack_short_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t data_size, uint8_t data[]);












 
_Bool hal_dsi_rx_ctrl_ack_long_cmd(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t data_size, uint8_t data[]);





 
_Bool hal_dsi_rx_ctrl_dsc_async_handler(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);








 
_Bool hal_dsi_rx_ctrl_set_hw_cmd_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle,
                                       hal_rx_dcs_filter_sel_e filter_number,
                                       uint32_t cmd_start, uint32_t cmd_end);






 
_Bool hal_dsi_rx_ctrl_set_cus_sync_line(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t line_num);







 
_Bool hal_dsi_rx_ctrl_enable_test_pattern(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t pg_orient, _Bool enable);







 
_Bool hal_dsi_rx_ctrl_set_te_waveform(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool inverse_poly, uint32_t te_width);







 
_Bool hal_dsi_rx_ctrl_set_cus_scld_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t scld_filter_h[32][2], uint32_t scld_filter_v[32][2]);





 
uint32_t hal_dsi_rx_ctrl_get_max_ret_size(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_get_compressen_en(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_gen_a_tear_signal(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_toggle_resolution(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_hight_performan_mode(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_set_sw_tear_mode(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);





 
_Bool hal_dsi_rx_ctrl_set_hw_tear_mode(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle);








 
_Bool hal_dsi_rx_ctrl_set_pentile_format(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, pentile_src_format_e src_format, pentile_g_swap_e g_swap, pentile_rb_swap_e rb_swap);






 
_Bool hal_dsi_rx_ctrl_set_cus_esc_clk(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t esc_clk);






 
_Bool hal_dsi_rx_ctrl_set_auto_hw_filter(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, _Bool enable);





 
_Bool hal_dsi_rx_ctrl_set_dcs_direct_mode(_Bool enable);





 
_Bool hal_dsi_rx_ctrl_toggle_input_frame_rate(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, dsi_video_frame_rate_e frame_rate);







 
_Bool hal_dsi_rx_ctrl_set_tear_mode_ex(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t line_num, te_mode_e te_mode);

# 500 "..\\src\\sdk\\include\\hal_dsi_rx_ctrl.h"
     
    





 
    _Bool hal_dsi_rx_ctrl_crop_video(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint32_t crop_width, uint32_t crop_height);

    






 
    void hal_dsi_rx_ctrl_draw_mode_init(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, uint8_t red_data, uint8_t green_data, uint8_t blue_data);

    








 
    void hal_dsi_rx_ctrl_set_pixel_data(hal_dsi_rx_ctrl_handle_t *rx_ctrl_handle, int x, int y, uint8_t red_data, uint8_t green_data, uint8_t blue_data);


# 18 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h"








 





 
# 17 "..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h"
# 18 "..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h"
# 19 "..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h"
# 1 "..\\src\\sdk\\include\\hal_gpio.h"








 





 
# 17 "..\\src\\sdk\\include\\hal_gpio.h"
# 18 "..\\src\\sdk\\include\\hal_gpio.h"



 


 
typedef enum
{
     
    IO_PAD_GPIO0 = 0,
    IO_PAD_GPIO1,
    IO_PAD_GPIO2,
    IO_PAD_GPIO3,
    IO_PAD_GPIO4,
    IO_PAD_GPIO5,
    IO_PAD_GPIO6,
    IO_PAD_RESV,
    IO_PAD_GPIO8,
    IO_PAD_GPIO9,
    IO_PAD_GPIO10,
    IO_PAD_GPIO11,
    IO_PAD_GPIO12,
    IO_PAD_GPIO13,
    IO_PAD_GPIO14,
    IO_PAD_RESV1,
    IO_PAD_RESV2,
    IO_PAD_GPIO17,
    IO_PAD_GPIO18,
    IO_PAD_GPIO19,
    IO_PAD_GPIO20,
    IO_PAD_GPIO21,

     
    IO_PAD_AP_SPIS_MISO = IO_PAD_GPIO0,
    IO_PAD_AP_SPIS_MOSI = IO_PAD_GPIO1,
    IO_PAD_AP_INT       = IO_PAD_GPIO2,
    IO_PAD_AP_TE        = IO_PAD_GPIO3,
    IO_PAD_AP_SWIRE     = IO_PAD_GPIO4,
    IO_PAD_TD_SPIM_MISO = IO_PAD_GPIO5,
    IO_PAD_TD_SPIM_MOSI = IO_PAD_GPIO6,
    IO_PAD_TD_RSTN      = IO_PAD_RESV,
    IO_PAD_TD_TPRSTN    = IO_PAD_GPIO8,
    IO_PAD_TD_INT       = IO_PAD_GPIO9,
    IO_PAD_TD_LEDPWM    = IO_PAD_GPIO10,
    IO_PAD_TD_FC_CLK    = IO_PAD_GPIO11,
    IO_PAD_TD_FC_CSN    = IO_PAD_GPIO12,
    IO_PAD_TD_FC_MISO   = IO_PAD_GPIO13,
    IO_PAD_TD_FC_MOSI   = IO_PAD_GPIO14,
    IO_PAD_UART_RX      = IO_PAD_GPIO17,
    IO_PAD_UART_TX      = IO_PAD_GPIO18,
    IO_PAD_PWMEN        = IO_PAD_GPIO19,
    IO_PAD_ADCIN        = IO_PAD_GPIO20,
    IO_PAD_AP_TPRSTN    = IO_PAD_GPIO21,

    IO_PAD_AP_SPIS_CLK,
    IO_PAD_AP_SPIS_CSN,
    IO_PAD_TD_SPIM_CLK,
    IO_PAD_TD_SPIM_CSN,
    IO_PAD_SFC_CLK,
    IO_PAD_SFC_CSN,
    IO_PAD_SFC_IO0,
    IO_PAD_SFC_IO1,

    IO_PAD_MAX,

     
    IO_PIN_A1           = IO_PAD_TD_TPRSTN,
    IO_PIN_A2           = IO_PAD_TD_FC_CSN,
    IO_PIN_A3           = IO_PAD_TD_SPIM_MISO,
    IO_PIN_A4           = IO_PAD_TD_SPIM_CLK,
    IO_PIN_A5           = IO_PAD_PWMEN,
    IO_PIN_A6           = IO_PAD_ADCIN,
    IO_PIN_A7           = IO_PAD_AP_INT,
    IO_PIN_A8           = IO_PAD_AP_SPIS_MOSI,
    IO_PIN_B1           = IO_PAD_TD_FC_CLK,
    IO_PIN_B2           = IO_PAD_TD_FC_MISO,
    IO_PIN_B3           = IO_PAD_TD_SPIM_MOSI,
    IO_PIN_B4           = IO_PAD_TD_SPIM_CSN,
    IO_PIN_B5           = IO_PAD_AP_SWIRE,
    IO_PIN_B7           = IO_PAD_AP_SPIS_MISO,
    IO_PIN_B8           = IO_PAD_AP_SPIS_CSN,
    IO_PIN_C1           = IO_PAD_TD_FC_MOSI,
    IO_PIN_C2           = IO_PAD_TD_LEDPWM,
    IO_PIN_C4           = IO_PAD_UART_TX,
    IO_PIN_C5           = IO_PAD_UART_RX,
    IO_PIN_C6           = IO_PAD_AP_TE,
    IO_PIN_D1           = IO_PAD_TD_RSTN,
    IO_PIN_D2           = IO_PAD_TD_INT,
    IO_PIN_D7           = IO_PAD_AP_TPRSTN,
    IO_PIN_D8           = IO_PAD_AP_SPIS_CLK,
} io_pad_e;



 
typedef enum
{
    IO_MODE_JTAG_TCK   = 0,
    IO_MODE_SPIS_SCLK  = 1,
    IO_MODE_I2C0_SCL   = 3,
} pad_ap_spis_clk_mode_e;



 
typedef enum
{
    IO_MODE_JTAG_TRSTN = 0,
    IO_MODE_SPIS_CSN   = 1,
    IO_MODE_I2C0_SDA   = 3,
} pad_ap_spis_csn_mode_e;



 
typedef enum
{
    IO_MODE_JTAG_TDO     = 0,
    IO_MODE_SPIS_MISO    = 1,
    IO_MODE_GPIO0        = 2,
    IO_MODE_UART_RX_AP   = 3,
    IO_MODE_SPIM_MISO_AP = 4,
} pad_ap_spis_miso_mode_e;



 
typedef enum
{
    IO_MODE_JTAG_TMS     = 0,
    IO_MODE_SPIS_MOSI    = 1,
    IO_MODE_GPIO1        = 2,
    IO_MODE_UART_TX_AP   = 3,
    IO_MODE_SPIM_MOSI_AP = 4,
} pad_ap_spis_mosi_mode_e;



 
typedef enum
{
    IO_MODE_JTAG_TDI = 0,
    IO_MODE_GPIO21   = 2,
} pad_ap_tprstn_mode_e;



 
typedef enum
{
    IO_MODE_GPIO2       = 2,
} pad_ap_int_mode_e;



 
typedef enum
{
    IO_MODE_TEAR  = 0,
    IO_MODE_GPIO3 = 2,
} pad_ap_te_mode_e;



 
typedef enum
{
    IO_MODE_SWIRE = 0,
    IO_MODE_PWMO  = 1,
    IO_MODE_GPIO4 = 2,
} pad_ap_swire_mode_e;



 
typedef enum
{
    IO_MODE_SPIM_SCLK  = 0,
    IO_MODE_I2C1_SCL   = 1,
} pad_td_spim_clk_mode_e;



 
typedef enum
{
    IO_MODE_SPIM_CSN   = 0,
    IO_MODE_I2C1_SDA   = 1,
} pad_td_spim_csn_mode_e;



 
typedef enum
{
    IO_MODE_SPIM_MISO = 0,

    IO_MODE_PWMO1     = 1,

    IO_MODE_GPIO5     = 2,
} pad_td_spim_miso_mode_e;



 
typedef enum
{
    IO_MODE_SPIM_MOSI = 0,
    IO_MODE_GPIO6     = 2,
} pad_td_spim_mosi_mode_e;



 
typedef enum
{
    IO_MODE_GPIO8      = 2,
} pad_td_tprstn_mode_e;



 
typedef enum
{
    IO_MODE_GPIO9_FUNC = 0,
    IO_MODE_GPIO9      = 2,
} pad_td_int_mode_e;



 
typedef enum
{
    IO_MODE_PWMI       = 0,

    IO_MODE_PWMO2      = 1,

    IO_MODE_GPIO10     = 2,
} pad_td_ledpwm_mode_e;



 
typedef enum
{
    IO_MODE_TSPIS_CLK    = 0,
    IO_MODE_GPIO11       = 2,
} pad_td_fc_clk_mode_e;



 
typedef enum
{
    IO_MODE_TSPIS_CSN    = 0,
    IO_MODE_GPIO12       = 2,
} pad_td_fc_csn_mode_e;



 
typedef enum
{
    IO_MODE_TSPIS_MISO = 0,
    IO_MODE_GPIO13     = 2,
} pad_td_fc_miso_mode_e;



 
typedef enum
{
    IO_MODE_TSPIS_MOSI = 0,
    IO_MODE_GPIO14     = 2,
} pad_td_fc_mosi_mode_e;



 
typedef enum
{
    IO_MODE_UART_RX = 0,
    IO_MODE_GPIO17  = 2,
} pad_uart_rx_mode_e;



 
typedef enum
{
    IO_MODE_UART_TX = 0,
    IO_MODE_GPIO18  = 2,
} pad_uart_tx_mode_e;



 
typedef enum
{
    IO_MODE_GPIO19     = 2,
} pad_pwmen_mode_e;



 
typedef enum
{
    IO_MODE_GPIO20      = 2,
} pad_adcin_mode_e;



 
typedef enum
{
    IO_MODE_INTER_FLS_CLK = 0,
    IO_MODE_EXT_FLS_CLK   = 1,
} pad_sfc_clk_mode_e;



 
typedef enum
{
    IO_MODE_INTER_FLS_CSN = 0,
    IO_MODE_EXT_FLS_CSN   = 1,
} pad_sfc_csn_mode_e;



 
typedef enum
{
    IO_MODE_INTER_FLS_IO0 = 0,
    IO_MODE_EXT_FLS_MISO  = 1,
} pad_sfc_io0_mode_e;



 
typedef enum
{
    IO_MODE_INTER_FLS_IO1 = 0,
    IO_MODE_EXT_FLS_MOSI  = 1,
} pad_sfc_io1_mode_e;



 
typedef enum
{
    IO_SLEW_RATE_SLOW = 0,
    IO_SLEW_RATE_FAST = 1,
} pad_slew_rate_e;



 


 
typedef enum
{
    IO_IOE_INPUT = 0,
    IO_IOE_OUTPUT
} gpio_ioe_direct_e;



 
typedef enum
{
    IO_LVL_LOW = 0,
    IO_LVL_HIGH
} gpio_level_e;



 



 



 





 
void hal_gpio_init_eint(io_pad_e pad, sys_cfg_trigger_e trig);







 
void hal_gpio_reg_eint_cb(io_pad_e pad, fcb_type cb_func);






 
void hal_gpio_ctrl_eint(io_pad_e pad, function_state_e state);





 
gpio_int_e hal_gpio_get_int_type(io_pad_e pad);






 
void hal_gpio_init_output(io_pad_e pad, gpio_level_e lvl);






 
void hal_gpio_set_output_data(io_pad_e pad, gpio_level_e lvl);








 
void hal_gpio_set_output_data_ex(io_pad_e pad1, gpio_level_e pad1_lvl, io_pad_e pad2, gpio_level_e pad2_lvl);





 
void hal_gpio_init_input(io_pad_e pad);





 
gpio_level_e hal_gpio_get_input_data(io_pad_e pad);






 
void hal_gpio_set_mode(io_pad_e pad, uint8_t mode);







 
void hal_gpio_get_pull_state(io_pad_e pad, function_state_e *up_enable, function_state_e *down_enable);







 
void hal_gpio_set_pull_state(io_pad_e pad, function_state_e up_enable, function_state_e down_enable);






 
void hal_gpio_set_schmitt_trigger(io_pad_e pad, function_state_e st_enable);






 
void hal_gpio_set_driving_strength(io_pad_e pad, uint8_t strength);






 
void hal_gpio_set_slew_rate(io_pad_e pad, pad_slew_rate_e rate);







 
void hal_gpio_set_ap_reset_int(_Bool enable, fcb_type cb_func, sys_cfg_trigger_e trig);

# 20 "..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h"
# 21 "..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h"
# 1 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdbool.h"
 






 





# 25 "C:\\Keil_v5\\ARM\\ARMCC\\Bin\\..\\include\\stdbool.h"



# 22 "..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h"



 



 


 
typedef struct
{
    _Bool                      used;                       
    uint8_t                   lane_num;
    dsi_virtual_channel_e     channel_id;
    dsi_video_mode_type_e     vid_mode;
    dsi_tx_cmd_tx_type_e      cmd_tx_type;                
    uint8_t                   pclk_offset;                
    uint32_t                  dpi_vsa;
    uint32_t                  dpi_vbp;
    uint32_t                  dpi_vfp;
    uint32_t                  dpi_hsa;
    uint32_t                  dpi_hbp;
    uint32_t                  dpi_hfp;
    dsi_base_trans_info_t     base_info;                  
    uint32_t                  tx_line_delay;              
    float                     tx_frame_rate;              
    _Bool                      tx_clkawayshs;              
    uint8_t                   blank_rows;                 
    uint8_t                   blank_columns;              
    _Bool                      lp_exit_lpdt;                  
} hal_dsi_tx_ctrl_handle_t;



 
typedef struct
{
    uint16_t    crop_top;
    uint16_t    crop_bottom;
    uint16_t    crop_left;
    uint16_t    crop_right;
} hal_dsi_tx_crop_t;





 
_Bool hal_dsi_tx_ctrl_init(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle);





 
_Bool hal_dsi_tx_ctrl_deinit(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle);





 
hal_dsi_tx_ctrl_handle_t *hal_dsi_tx_ctrl_create_handle(void);





 
_Bool hal_dsi_tx_ctrl_release_handle(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle);





 
_Bool hal_dsi_tx_ctrl_start(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle);





 
_Bool hal_dsi_tx_ctrl_stop(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle);





 
void hal_dsi_tx_ctrl_enter_init_panel_mode(void);





 
void hal_dsi_tx_ctrl_exit_init_panel_mode(void);









 
void hal_dsi_tx_ctrl_read_cmd(uint8_t data_type, uint8_t vc, uint8_t cmd, uint8_t size, uint8_t *data);








 
void hal_dsi_tx_ctrl_write_cmd(uint8_t data_type, uint8_t vc, uint8_t cmd_count, ...);








 
void hal_dsi_tx_ctrl_write_array_cmd(uint8_t data_type, uint8_t vc, uint8_t size, const uint8_t *data);





 
void hal_dsi_tx_ctrl_set_escape_clock_div(uint8_t esc_div);





 
void hal_dsi_tx_ctrl_panel_reset_pin(gpio_level_e state);








 
void hal_dsi_tx_ctrl_set_partial_disp_area(uint32_t st_line, uint32_t st_col, uint32_t end_line, uint32_t end_col);





 
void hal_dsi_tx_ctrl_set_partial_disp(function_state_e pd_en);







 
void hal_dsi_tx_ctrl_set_overwrite_rgb(uint8_t R, uint8_t G, uint8_t B);





 
void hal_dsi_tx_ctrl_set_overwrite(function_state_e ow_en);





 
void hal_dsi_tx_ctrl_set_endianness(dpi_endianness_type_e endianness);





 
void hal_dsi_tx_ctrl_set_ccm(ccm_coef_t coef);






 
void hal_dsi_tx_ctrl_set_vpg(function_state_e vpg_en, dsi_tx_vpg_style_e style);





 
void hal_dsi_tx_ctrl_set_lp_cmd(function_state_e lp_en);






 
void hal_dsi_tx_crop_pic(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle, hal_dsi_tx_crop_t *crop);

# 265 "..\\src\\sdk\\include\\hal_dsi_tx_ctrl.h"
     
    




 
    _Bool hal_dsi_tx_ctrl_set_cus_pq_filter(hal_dsi_tx_ctrl_handle_t *tx_ctrl_handle, uint32_t filter[32]);


# 19 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\sdk\\include\\hal_swire.h"








 





 
# 17 "..\\src\\sdk\\include\\hal_swire.h"
# 18 "..\\src\\sdk\\include\\hal_swire.h"



 



 



 



 




 
void hal_swire_init(void);





 
void hal_swire_deinit(void);









 
void hal_swire_start(uint32_t start_time, uint32_t stop_time,
                     uint32_t high_time, uint32_t low_time,
                     uint32_t pulse);





 
void hal_swire_open(function_state_e state);





 
void hal_swire_register_callback(fcb_type cb_func);

# 20 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\sdk\\include\\hal_timer.h"








 





 
# 17 "..\\src\\sdk\\include\\hal_timer.h"
# 18 "..\\src\\sdk\\include\\hal_timer.h"



 



 



 



 




 
void hal_timer_init(timer_num_e index);





 
void hal_timer_deinit(timer_num_e index);









 
void hal_timer_start(timer_num_e index, uint32_t ms, fcb_type cb_func, void *data);





 
void hal_timer_stop(timer_num_e index);






 
void hal_timer_set_repeat(timer_num_e index, _Bool repeat);





 
timer_status_e hal_timer_get_status(timer_num_e index);

# 21 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\sdk\\include\\hal_system.h"








 




 
# 16 "..\\src\\sdk\\include\\hal_system.h"



 



 



 



 





 
void hal_system_init(uint32_t sysclk);





 
void hal_system_init_console(uint32_t baud_rate);





 
void hal_system_idle_mode(_Bool disable_systick);





 
void hal_system_register_systick_cb(fcb_type cb_func);





 
_Bool hal_system_enable_systick(uint8_t ms);





 
_Bool hal_system_disable_systick(void);





 
uint32_t hal_system_get_tick(void);





 
void hal_system_deep_sleep_mode(_Bool polarity);





 
_Bool hal_system_share_flash_mode(_Bool enable);





 
void hal_system_sleep_mode(_Bool enable);





 
void hal_system_reset_chip(void);





 
void hal_system_set_pvd(_Bool enable);






 
void hal_system_set_vcc(_Bool enable);







 
_Bool hal_system_flash_read(uint8_t *usr_cfg_t_addr,  uint16_t usr_cfg_t_size, uint8_t flash_page);








 
_Bool hal_system_flash_write(uint8_t *usr_cfg_t_addr,  uint16_t usr_cfg_t_size, uint8_t flash_page);


    



 
    void hal_system_set_phy_calibration(_Bool en);


# 22 "..\\src\\app\\demo\\ap_demo.c"
# 23 "..\\src\\app\\demo\\ap_demo.c"
# 1 "..\\src\\sdk\\include\\hal_pwm.h"








 





 
# 17 "..\\src\\sdk\\include\\hal_pwm.h"
# 18 "..\\src\\sdk\\include\\hal_pwm.h"
# 19 "..\\src\\sdk\\include\\hal_pwm.h"



 



 
 
typedef enum _pwm_out_ctrl_e
{
    PWMO_CTRL_KEEP       = 0,
    PWMO_CTRL_LOW        = 1,
    PWMO_CTRL_HIGH       = 2,
    PWMO_CTRL_TOGGLE     = 3,
    PWMO_CTRL_MAX
} pwm_out_ctrl_e;



 



 




 
void hal_pwm_out_init(void);





 
void hal_pwm_out_deinit(void);





 
void hal_pwm_out_pause(function_state_e state);









 
void hal_pwm_out_config_all(pwm_out_ctrl_e ctl0, pwm_out_ctrl_e ctl1, uint32_t thr0, uint32_t thr1, uint32_t period);









 
void hal_pwm_out_sync_all(pwm_out_ctrl_e ctl0, pwm_out_ctrl_e ctl1, uint32_t thr0, uint32_t thr1, uint32_t period);





 
void hal_pwm_out_sync_period(uint32_t period);






 
void hal_pwm_out_sync_ctl(pwm_out_ctrl_e ctl0, pwm_out_ctrl_e ctl1);






 
void hal_pwm_out_sync_thr(uint32_t thr0, uint32_t thr1);





 
void hal_pwm_out_sync_pause(function_state_e pause_state);





 
void hal_pwm_in_init(void);





 
void hal_pwm_in_deinit(void);





 
void hal_pwm_in_register_callback(fcb_type cb_func);










 
void hal_pwm_in_config_int(function_state_e high_overflow_en, function_state_e low_overflow_en, function_state_e total_overflow_en,
                           function_state_e high_done_en, function_state_e low_done_en, function_state_e total_done_en);






 
void hal_pwm_in_set_int(pwm_int_type_e pwm_int, function_state_e enable);





 
void hal_pwm_in_clear_int(void);





 
void hal_pwm_in_ctrl_int(function_state_e state);





 
uint32_t hal_pwm_in_get_total_period(void);





 
uint32_t hal_pwm_in_get_high_period(void);





 
uint32_t hal_pwm_in_get_low_period(void);





 
uint32_t hal_pwm_in_get_current_count(void);


    



 
    void hal_pwm_out_sel_io(io_pad_e pad);
# 24 "..\\src\\app\\demo\\ap_demo.c"


# 1 "..\\src\\app\\demo\\app_tp_transfer.h"








 



# 14 "..\\src\\app\\demo\\app_tp_transfer.h"
# 15 "..\\src\\app\\demo\\app_tp_transfer.h"
# 16 "..\\src\\app\\demo\\app_tp_transfer.h"



	


typedef struct
{
    uint8_t tp_point_buffer[6];    
    uint8_t tp_read_point_counter;                    		 
    uint8_t tp_point_up_error_flag;                   		 
    uint32_t tp_point_error_time_counter;                 
} st_tp_scan_data;








 
void ap_tp_calibration(void);







 
void app_tp_screen_init(void);







 
void app_tp_init(void);







 
void app_tp_transfer_screen_int(void);







 
void app_tp_transfer_screen_start(void);







 
_Bool app_tp_phone_reset_on(void);







 
void app_tp_phone_clear_reset_on(void);








 
void app_tp_s_write(const uint8_t *txbuffer, size_t buffer_size);







 
_Bool app_tp_enter_sleep_on(void);



# 27 "..\\src\\app\\demo\\ap_demo.c"





 


 


 

 

 

 

 

 

 

 




     


     

     

     


     

     

     

     

     

 
     




# 95 "..\\src\\app\\demo\\ap_demo.c"



	
	
 
static hal_dsi_rx_ctrl_handle_t *g_rx_ctrl_handle = 0;
static hal_dsi_tx_ctrl_handle_t *g_tx_ctrl_handle = 0;











	

static volatile _Bool g_calibration_flag = 0;










static uint8_t swire_num=50;
static uint8_t swire_num_bak=50;

 
static volatile _Bool start_display_on = 1;
static _Bool g_need_enter_sleep_mode = 0;
static _Bool g_exit_sleep_mode = 0;
static _Bool S21_G991B_frame_update = 0;



 
static _Bool panel_display_done = 0;

static volatile _Bool g_resolution_change = 0;
static void swire_init(void);
void Gpio_swire_output(uint8_t flag, uint8_t num);


extern uint8_t Flag_blacklight_EN;
extern uint8_t tp_sleep_in;
extern uint8_t tp_sleep_count;
uint8_t phone_start_flag=0;
uint16_t phone_DisplayOFF_count=0;
uint8_t phone_DisplayOFF_flag=0;





uint32_t rx_filter_1080_h_4_96[32][2] =
{
    0xB029EC0A, 0x0000000F,
    0x904DF003, 0x0000000F,
    0x6871F9FB, 0x0000000F,
    0x4899FBF4, 0x0000000F,
    0x28C1FDED, 0x0000000F,
    0x08EDFBE7, 0x0000000F,
    0xE119FDE0, 0x0000000E,
    0xC145F9DB, 0x0000000E,
    0xA175F3D6, 0x0000000E,
    0x81A9EBD1, 0x0000000E,
    0x69D9E1CD, 0x0000000E,
    0x520DD5C9, 0x0000000E,
    0x3A3DC7C7, 0x0000000E,
    0x2A71B7C4, 0x0000000E,
    0x1A9DA7C3, 0x0000000E,
    0x12CD93C2, 0x0000000E,
    0x12F97DC2, 0x0000000E,
    0x132567C2, 0x0000000E,
    0x1B4D4FC3, 0x0000000E,
    0x236D39C5, 0x0000000E,
    0x3B8D1FC7, 0x0000000E,
    0x4BA907CA, 0x0000000E,
    0x6BC0EDCD, 0x0000000E,
    0x8BD4D5D0, 0x0000000E,
    0xB3E4BBD4, 0x0000000E,
    0xDBF0A3D8, 0x0000000E,
    0x03F88DDC, 0x0000000F,
    0x3BF477E1, 0x0000000F,
    0x6BF861E5, 0x0000000F,
    0xA3F44DE9, 0x0000000F,
    0xDBF039ED, 0x0000000F,
    0x1BE027F2, 0x00000000
};


uint32_t rx_filter_2400_v_4_96[32][2] =
{
    0xB029EC0A, 0x0000000F,
    0x904DF003, 0x0000000F,
    0x6871F9FB, 0x0000000F,
    0x4899FBF4, 0x0000000F,
    0x28C1FDED, 0x0000000F,
    0x08EDFBE7, 0x0000000F,
    0xE119FDE0, 0x0000000E,
    0xC145F9DB, 0x0000000E,
    0xA175F3D6, 0x0000000E,
    0x81A9EBD1, 0x0000000E,
    0x69D9E1CD, 0x0000000E,
    0x520DD5C9, 0x0000000E,
    0x3A3DC7C7, 0x0000000E,
    0x2A71B7C4, 0x0000000E,
    0x1A9DA7C3, 0x0000000E,
    0x12CD93C2, 0x0000000E,
    0x12F97DC2, 0x0000000E,
    0x132567C2, 0x0000000E,
    0x1B4D4FC3, 0x0000000E,
    0x236D39C5, 0x0000000E,
    0x3B8D1FC7, 0x0000000E,
    0x4BA907CA, 0x0000000E,
    0x6BC0EDCD, 0x0000000E,
    0x8BD4D5D0, 0x0000000E,
    0xB3E4BBD4, 0x0000000E,
    0xDBF0A3D8, 0x0000000E,
    0x03F88DDC, 0x0000000F,
    0x3BF477E1, 0x0000000F,
    0x6BF861E5, 0x0000000F,
    0xA3F44DE9, 0x0000000F,
    0xDBF039ED, 0x0000000F,
    0x1BE027F2, 0x00000000
};



uint32_t rx_filter_1080_h_4_line[32][2] =
{
    0x0001FE00, 0x00000000,
    0x0021F000, 0x00000000,
    0x0041E000, 0x00000000,
    0x0061D000, 0x00000000,
    0x0081C000, 0x00000000,
    0x00A1B000, 0x00000000,
    0x00C1A000, 0x00000000,
    0x00E19000, 0x00000000,
    0x01018000, 0x00000000,
    0x01217000, 0x00000000,
    0x01416000, 0x00000000,
    0x01615000, 0x00000000,
    0x01814000, 0x00000000,
    0x01A13000, 0x00000000,
    0x01C12000, 0x00000000,
    0x01E11000, 0x00000000,
    0x02010000, 0x00000000,
    0x0220F000, 0x00000000,
    0x0240E000, 0x00000000,
    0x0260D000, 0x00000000,
    0x0280C000, 0x00000000,
    0x02A0B000, 0x00000000,
    0x02C0A000, 0x00000000,
    0x02E09000, 0x00000000,
    0x03008000, 0x00000000,
    0x03207000, 0x00000000,
    0x03406000, 0x00000000,
    0x03605000, 0x00000000,
    0x03804000, 0x00000000,
    0x03A03000, 0x00000000,
    0x03C02000, 0x00000000,
    0x03E01000, 0x00000000
};


uint32_t rx_filter_2400_v_4_line[32][2] =
{
    0x0001FE00, 0x00000000,
    0x0021F000, 0x00000000,
    0x0041E000, 0x00000000,
    0x0061D000, 0x00000000,
    0x0081C000, 0x00000000,
    0x00A1B000, 0x00000000,
    0x00C1A000, 0x00000000,
    0x00E19000, 0x00000000,
    0x01018000, 0x00000000,
    0x01217000, 0x00000000,
    0x01416000, 0x00000000,
    0x01615000, 0x00000000,
    0x01814000, 0x00000000,
    0x01A13000, 0x00000000,
    0x01C12000, 0x00000000,
    0x01E11000, 0x00000000,
    0x02010000, 0x00000000,
    0x0220F000, 0x00000000,
    0x0240E000, 0x00000000,
    0x0260D000, 0x00000000,
    0x0280C000, 0x00000000,
    0x02A0B000, 0x00000000,
    0x02C0A000, 0x00000000,
    0x02E09000, 0x00000000,
    0x03008000, 0x00000000,
    0x03207000, 0x00000000,
    0x03406000, 0x00000000,
    0x03605000, 0x00000000,
    0x03804000, 0x00000000,
    0x03A03000, 0x00000000,
    0x03C02000, 0x00000000,
    0x03E01000, 0x00000000
};







static void ap_reset_cb(void *data)
{
	 
	
	 
	do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "disable reset!!!!!!!!!!!!!\n", "S21_demo", 316); }; } while (0);
	
	hal_system_set_pvd(1);
	hal_system_set_vcc(1);
	__NVIC_SystemReset();
}



static _Bool ap_dcs_read(uint8_t data_type, uint8_t dcs_cmd, uint8_t param)
{


	static uint8_t flag_0a = 0;
	static uint8_t flag_5a = 0;
	static uint8_t flag_c9_43 = 0;
	
# 498 "..\\src\\app\\demo\\ap_demo.c"
	
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);

	
	
	if (dcs_cmd == 0xDA)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
							 DSI_VC_0,
							 0x1, 0xA1);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 516,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0xDB)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
										 DSI_VC_0,
										 0x1, 0x01);   
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 532,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0xDC)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
										 DSI_VC_0,
										 0x1, 0x04); 
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 548,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0x0A)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
										 DSI_VC_0,
										 1, 0x9F);
		}
		else if(return_size == 3)
		{
			
			if (flag_0a == 0)
			{
				hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_LONG_RESPONSE,
										 DSI_VC_0,
										 3, 0x9F,0x9F,0x9F);
				flag_0a = 1;
			}
			else
			{
				hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_LONG_RESPONSE,
										 DSI_VC_0,
										 3, 0x9B,0x9B,0x9B);
			}
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 583,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0x0E)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
										 DSI_VC_0,
										 0x1, 0x81);  
		}
		else if (return_size == 3)
		{
			
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
									 DSI_ACK_DT_DSC_LONG_RESPONSE,
									 DSI_VC_0,
									 3, 0x80,0x80,0x80);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 607,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0x0F)
	{
		
	
		S21_G991B_frame_update = 1;
		
		hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
								 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
								 DSI_VC_0,
								 1, 0xC0);
	}
	else if (dcs_cmd == 0xEE)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
										 DSI_VC_0,
										 0x1, 0x00);  
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 634,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0x03)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
										 DSI_VC_0,
										 0x1, 0x01);  
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 650,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0x04)
	{
		
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		if (return_size == 3)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             3, 0xA1,0x01,0x04);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 666,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0x05)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 1)
		{




			
			
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
									 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
									 DSI_VC_0,
									 1, 0x00);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 688,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0x5A)
	{
		
		if (flag_5a == 0)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_LONG_RESPONSE,
										 DSI_VC_0,
										 41, 
										 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
										 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
										 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
			flag_5a = 1;
		}
		else
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_LONG_RESPONSE,
										 DSI_VC_0,
										 41, 
										 0x01,0x00,0x03,0x00,0x7D,0x01,0xFF,0x00,0x03,0x01,0xFF,0x00,0xED,0x00,0xF6,0x01,
			                             0x00,0x00,0x9B,0x00,0xAC,0x00,0xBB,0x00,0x9B,0x00,0xAC,0x00,0xBB,0x00,0x9B,0x00,
			                             0xAC,0x00,0xBB,0x00,0x9B,0x00,0xAC,0x00,0xBB);
		}
	}
	else if (dcs_cmd == 0x87)
	{
		
		hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
								 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
								 DSI_VC_0,
								 1, 0x00);
	}
	else if (dcs_cmd == 0xFE)
	{
		
		hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
								 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
								 DSI_VC_0,
								 1, 0x10);
	}
	else if (dcs_cmd == 0x7F)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 10)
		{
			static uint8_t ret_7f_count = 0;
			
            if (ret_7f_count == 0)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x40,0x04,0x00,0x00,0x00,0x00,0x9B,0x33,0xB9,0x6E);
                ret_7f_count = 1;
            }
            else if (ret_7f_count == 1)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
                ret_7f_count = 2;
            }
			else if (ret_7f_count == 2)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
                ret_7f_count = 0;
            }
		}
		else if (return_size == 4)
		{
			
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
									 DSI_ACK_DT_DSC_LONG_RESPONSE,
									 DSI_VC_0,
									 4, 0x9B,0x33,0xB9,0x6E);
		}
		else if (return_size == 3)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_LONG_RESPONSE,
										 DSI_VC_0,
										 3, 0xFF,0x00,0x00);
										
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 783,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0xE9)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
										 DSI_VC_0,
										 0x1, 0x04);        
		}
		else if (return_size == 2)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_2B,
										 DSI_VC_0,
										 2, 0x04, 0x00);
										
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 807,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0xA1)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 10)
		{
			static uint8_t ret_a1_count = 0;
			
            if (ret_a1_count == 0)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x0B,0xED,0x0C,0x8E,0xA4,0x0A,0x0E,0x0D,0x21,0x16);
                ret_a1_count = 1;
            }
            else if (ret_a1_count == 1)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x30,0x01,0x01,0xFB,0x41,0x34,0x58,0x54,0x33,0x53);
                ret_a1_count = 2;
            }
			else if (ret_a1_count == 2)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x41,0x33,0x37,0x38,0x4A,0x42,0x46,0x32,0x34,0x32);
                ret_a1_count = 0;
            }
		}
		else if (return_size == 20)
		{
			
			 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             20, 
			                                 0x30,0x01,0x01,0xF9,0x41,0x34,0x58,0x54,0x34,0x53,0x41,0x33,0x31,0x34,0x47,0x42,
											 0x47,0x31,0x34,0x30);
		}
		else if (return_size == 7)
		{
			
			 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             7, 0xA5,0x02,0x06,0x2F,0x14,0x14,0xE0);
		}
		else if (return_size == 4)
		{
			
			 hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             4, 0x0B,0xEF,0x0C,0x87);
		}
		else if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
										 DSI_VC_0,
										 1, 0x81);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 878,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0xA2)
	{
		static uint8_t ret_a2_count = 0;
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 10)
		{			
            if (ret_a2_count == 0)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x11,0x00,0x00,0x89,0x30,0x80,0x09,0x60,0x04,0x38);
            }
            else if (ret_a2_count == 1)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x00,0x78,0x02,0x1C,0x02,0x1C,0x02,0x00,0x02,0x0E);
            }
            else if (ret_a2_count == 2)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x00,0x20,0x0B,0xAF,0x00,0x07,0x00,0x0C,0x00,0xCF);
            }
            else if (ret_a2_count == 3)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x00,0xD9,0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00);
            }
            else if (ret_a2_count == 4)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38,0x46,0x54);
            }
            else if (ret_a2_count == 5)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x62,0x69,0x70,0x77,0x79,0x7B,0x7D,0x7E,0x01,0x02);
            }
            else if (ret_a2_count == 6)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x01,0x00,0x09,0x40,0x09,0xBE,0x19,0xFC,0x19,0xFA);
            }
			else if (ret_a2_count == 7)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x19,0xF8,0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6);
            }
			ret_a2_count++;
			if (ret_a2_count >7)
				ret_a2_count =0;
		}
		else if (return_size == 9)
		{
 			ret_a2_count =0;
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_LONG_RESPONSE,
										 DSI_VC_0,
										 9, 0x2B,0x34,0x2B,0x74,0x3B,0x74,0x6B,0xF4,0x00);
										
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 959,dcs_cmd, return_size); }; } while (0);
		}
	}	else if (dcs_cmd == 0xD6)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);

		if (return_size == 5)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 5, 0x08,0x45,0x30,0x98,0xEE);															   
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 974,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0x9A)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);

		if (return_size == 4)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_LONG_RESPONSE,
										 DSI_VC_0,
										 4, 0x2D, 0xEA, 0x6B, 0x43);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 990,dcs_cmd, return_size); }; } while (0);
		}

	}
	else if (dcs_cmd == 0xC6)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);

		if(return_size == 10)
		{
			static uint8_t ret_c6_count = 0;
			
            if (ret_c6_count == 0)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x01,0x08,0x05,0x00,0x10,0x20,0x05,0x0E,0x93,0xF5);
                ret_c6_count = 1;
            }
            else if (ret_c6_count == 1)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x2A,0x0E,0xE4,0x11,0x2E,0x10,0xA4,0x41,0x45,0x11);
                ret_c6_count = 2;
            }
			else if (ret_c6_count == 2)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0xF4,0x7D,0x60,0x14,0x14,0xD5,0x81,0x17,0xD5,0x91);
                ret_c6_count = 3;
            }
			else if (ret_c6_count == 3)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0xC1,0x1D,0xD6,0xC2,0x1F,0x28,0x19,0x1E,0xDB,0x28);
                ret_c6_count = 0;
            }
		}
		else if (return_size == 3)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 3, 0x19,0x1E,0xDB);															   
		}
		else if (return_size == 1)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_SHORT_RESPONSE_1B,
							 DSI_VC_0,
							 1, 0x55);															   
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 1051,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0xC7)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		if (return_size == 10)
		{
			static uint8_t ret_c7_count = 0;
			
            if (ret_c7_count == 0)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x0E,0x0E,0x0E,0x07,0xA2,0x0C,0xA2,0x08,0xF2,0x38);
                ret_c7_count = 1;
            }
            else if (ret_c7_count == 1)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0xBC,0x0A,0x72,0x74,0xD6,0x0E,0x63,0x39,0x17,0x11);
                ret_c7_count = 2;
            }
			else if (ret_c7_count == 2)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x03,0xD1,0x45,0x13,0xF4,0x7D,0x77,0x18,0x85,0x8D);
                ret_c7_count = 3;
            }
			else if (ret_c7_count == 3)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0xC7,0x1E,0xE7,0x02,0x34,0x28,0x19,0x1E,0xDB,0x28);
                ret_c7_count = 0;
            }
		}
		else if (return_size == 3)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 3, 0x19,0x1E,0xDB);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 1103,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0xB5)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);

		if (return_size == 2)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_2B,
										 DSI_VC_0,
										 2, 0x14, 0x03);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 1119,dcs_cmd, return_size); }; } while (0);
		}

	}
	else if (dcs_cmd == 0xB8)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);

		if (return_size == 2)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
										 DSI_ACK_DT_DSC_SHORT_RESPONSE_2B,
										 DSI_VC_0,
										 2, 0xC0, 0xB2);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 1136,dcs_cmd, return_size); }; } while (0);
		}

	}
	else if (dcs_cmd == 0xC8)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		
		if (return_size == 10)
		{
			static uint8_t ret_c8_count = 0;
			
            if (ret_c8_count == 0)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x20,0x32,0x39,0x45,0x6E,0x5E,0x60,0x5F,0x5E,0x5F);
                ret_c8_count = 1;
            }
            else if (ret_c8_count == 1)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x5F,0x48,0x4A,0x4A,0x4E,0x50,0x50,0x5D,0x5F,0x5E);
                ret_c8_count = 2;
            }
			else if (ret_c8_count == 2)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x57,0x5B,0x58,0x42,0x52,0x44,0x5C,0x6E,0x5C,0x2B);
                ret_c8_count = 0;
            }
		}
		else if (return_size == 7)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 4, 0x8A,0x14,0x00,0x2B,0x34,0x23,0xC8);
		}
		else if (return_size == 4)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 4, 0x8A,0x14,0x00,0x2B);
		}
		else if (return_size == 2)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_SHORT_RESPONSE_2B,
							 DSI_VC_0,
							 1, 0x66,0x23);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 1196,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if (dcs_cmd == 0xC9)
	{
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		if (return_size == 10)
		{
			static uint8_t ret_c9_count = 0;
			
            if (ret_c9_count == 0)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x14,0x14,0x14,0x0D,0x73,0xB5,0x0F,0x0D,0xF3,0xC9);
                ret_c9_count = 1;
            }
            else if (ret_c9_count == 1)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x13,0x0E,0x93,0xDD,0x1B,0x10,0x74,0x0D,0x39,0x12);
                ret_c9_count = 2;
            }
			else if (ret_c9_count == 2)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0x24,0x61,0x59,0x14,0x74,0xC9,0x7F,0x18,0x75,0xAD);
                ret_c9_count = 3;
            }
			else if (ret_c9_count == 3)
            {
                hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
                                             DSI_ACK_DT_DSC_LONG_RESPONSE,
                                             DSI_VC_0,
                                             10, 0xC7,0x1E,0x86,0xF6,0x2E,0x28,0x19,0x1E,0xDB,0x28);
                ret_c9_count = 0;
            }
		}
		else if (return_size == 39)
		{
			
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 39,
							 0x0F,0x0F,0x0F,0x04,0x41,0x24,0x66,0x09,0x82,0x34,0xBC,0x0B,0x32,0x88,0xD9,0x0F,
							 0x23,0x69,0x20,0x12,0x04,0x15,0x51,0x15,0x04,0xC1,0x84,0x19,0xF5,0xE1,0xD7,0x20,
							 0xA7,0x76,0x50,0x25,0xF8,0xA6,0xAD);
		}
		else if (return_size == 43)
		{
			
			if (flag_c9_43 == 0){
				flag_c9_43++;
				hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 39,
							 0x17,0x17,0x17,0x08,0x62,0x20,0xA2,0x0A,0x02,0x60,0xC2,0x0B,0x42,0x94,0xDA,0x0E,
							 0xA3,0x45,0x17,0x11,0x43,0xD9,0x44,0x13,0xE4,0x75,0x73,0x18,0x55,0x7D,0xBE,0x1E,
							 0x46,0xDA,0x25,0x22,0x77,0xD2,0x70,0x27,0x68,0xF6,0xC9);
			}
			else if (flag_c9_43 == 1){
				flag_c9_43++;
				hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 39,
							 0x17,0x17,0x17,0x09,0x02,0x4C,0xAE,0x0A,0x62,0x78,0xC7,0x0B,0x72,0xA4,0xDC,0x0E,
							 0xB3,0x55,0x17,0x11,0x33,0xD9,0x43,0x13,0xE4,0x75,0x71,0x17,0xF5,0x75,0xBC,0x1E,
							 0x56,0xEA,0x28,0x27,0x88,0xFE,0xCC,0x27,0x88,0xFE,0xCC);
			}
			
			

			else if (flag_c9_43 == 2){ 
				flag_c9_43++;
				hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 39,
							 0x17,0x17,0x17,0x0A,0xB2,0xC8,0xCE,0x0B,0xA2,0xEC,0xDE,0x0C,0x73,0x04,0xED,0x0F,
							 0x13,0x81,0x1E,0x11,0x53,0xF5,0x47,0x13,0xF4,0x85,0x73,0x18,0x15,0x7D,0xBD,0x1E,
							 0x56,0xE2,0x27,0x27,0x88,0xFE,0xCC,0x27,0x88,0xFE,0xCC);
			}
			else if (flag_c9_43 == 3){
				flag_c9_43++;
				hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 39,
							 0x17,0x17,0x17,0x0C,0x43,0x4C,0xEC,0x0C,0xE3,0x60,0xF7,0x0D,0x93,0x71,0x01,0x0F,
							 0xB3,0xBD,0x28,0x11,0xB4,0x1D,0x4C,0x14,0x24,0x99,0x75,0x18,0x05,0x89,0xBD,0x1E,
							 0x36,0xDE,0x25,0x27,0x88,0xFE,0xCC,0x27,0x88,0xFE,0xCC);
			}
			else if (flag_c9_43 == 4){
				flag_c9_43++;
				hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 39,
							 0x17,0x17,0x17,0x0D,0xB3,0xC1,0x11,0x0E,0x53,0xD5,0x16,0x0E,0xF3,0xE9,0x1D,0x10,
							 0xA4,0x1D,0x38,0x12,0x44,0x5D,0x56,0x14,0x64,0xC1,0x7B,0x18,0x15,0x99,0xC0,0x1E,
							 0x26,0xDE,0x23,0x27,0x88,0xFE,0xCC,0x27,0x88,0xFE,0xCC);
			}
			else
			{
				do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "C9----- r[%x] [%d] [%d]err\r\n", "S21_demo", 1308,dcs_cmd, return_size, flag_c9_43); }; } while (0);
			}
		}
		else if (return_size == 4)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 4, 0x28,0x19,0x1E,0xDB);
		}
		else if (return_size == 3)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
							 DSI_ACK_DT_DSC_LONG_RESPONSE,
							 DSI_VC_0,
							 3, 0x19,0x1E,0xDB);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 1327,dcs_cmd, return_size); }; } while (0);
		}
	}
	else if(dcs_cmd == 0xEA)
	{
		
	
		
		uint32_t return_size = hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle);
		if (return_size == 5)
		{
			hal_dsi_rx_ctrl_send_ack_cmd(g_rx_ctrl_handle,
									 DSI_ACK_DT_DSC_LONG_RESPONSE,
									 DSI_VC_0,
									 5, 0x00,0x00,0x00,0x00,0x00);
		}
		else
		{
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r[%x] [%d] err\r\n", "S21_demo", 1345,dcs_cmd, return_size); }; } while (0);
		}
	}
	else
{
        do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "r %x ng need return [%d]\n", "S21_demo", 1350,dcs_cmd, hal_dsi_rx_ctrl_get_max_ret_size(g_rx_ctrl_handle)); }; } while (0);
 }









 
    return 1;

		
}

 static _Bool ap_update_frame_rate(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet)
{
	static uint8_t frame_rate = 100;
	
if( S21_G991B_frame_update == 1){
	if (frame_rate != dcs_packet->packet_param[0])
	{
		frame_rate = dcs_packet->packet_param[0];	
		if (frame_rate == 0x00)
		{
			hal_dsi_rx_ctrl_set_tear_mode_ex(g_rx_ctrl_handle, 2400, TE_HW_MODE);
		}
		else
		{
			hal_dsi_rx_ctrl_set_tear_mode_ex(g_rx_ctrl_handle, 2400, TE_SOFT_120HZ_MODE);  
		}
		
		do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "Frame_rate:%02x\r\n", "S21_demo", 1384,frame_rate); }; } while (0);
	}
}
	return 1;
}

 
static _Bool pps_update_handle(uint8_t *pps, uint8_t size, uint32_t pic_width, uint32_t pic_height)
{
     
	
    if (pic_width != g_rx_ctrl_handle->base_info.src_w || pic_height != g_rx_ctrl_handle->base_info.src_h)
    { 
         
 
        g_rx_ctrl_handle->base_info.src_w = pic_width;  
        g_rx_ctrl_handle->base_info.src_h = pic_height; 
           
			
			
        g_rx_ctrl_handle->compress_en = 1; 
			
		
			
		if(pic_width > 720) 
		{ 
	        g_tx_ctrl_handle->base_info.src_w = pic_width; 
	        g_tx_ctrl_handle->base_info.src_h = pic_height; 
		} 
		hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle); 
        do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "resolution update w[%d] h[%d] compress[%d]\n", "S21_demo", 1414,pic_width, pic_height, g_rx_ctrl_handle ->compress_en); }; } while (0);
    } 
    do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "PPS Update\n", "S21_demo", 1416); }; } while (0);  
    return 1;   
} 


static _Bool ap_set_display_off(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) 
{
	hal_dsi_tx_ctrl_write_cmd(0x05, 0, 2, 0x28); 
	do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "disp off \n", "S21_demo", 1424); }; } while (0); 
    return 1; 
}

static _Bool ap_set_enter_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet) 
{
	hal_dsi_rx_ctrl_set_sw_tear_mode(g_rx_ctrl_handle); 
	
	Gpio_swire_output(0, 0); 
	delayMs(50); 
	hal_dsi_tx_ctrl_write_cmd(0x05, 0, 2, 0x10); 
	delayMs(20); 
	hal_gpio_set_output_data(IO_PAD_PWMEN, IO_LVL_LOW); 

	
	


	do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "enter sleep mode\n", "S21_demo", 1442); }; } while (0);

	g_need_enter_sleep_mode = 1;

	g_exit_sleep_mode = 0;
	
    return 1;
}

static _Bool ap_set_display_on(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet)
{
    do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "disp on \n", "S21_demo", 1453); }; } while (0);


    return 1;
}

static _Bool ap_set_exit_sleep_mode(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet)
{
    do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "exit sleep mode\n", "S21_demo", 1461); }; } while (0);
	g_exit_sleep_mode = 1;
	
				hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x22);
				delayMs(1);
				hal_dsi_rx_ctrl_toggle_resolution(g_rx_ctrl_handle);
				hal_dsi_tx_ctrl_write_cmd(0x05, 0, 1, 0x13);
	
     
    
    
    return 1;
}






 
void Gpio_swire_output(uint8_t flag, uint8_t num)
{
	uint8_t ii;

	if (flag)
	{
		if (flag ==2)
		{
			hal_gpio_init_output(IO_PAD_ADCIN, IO_LVL_HIGH);	  
			delayMs(2);
		}
		for (ii =0; ii< num; ii++)
		{
			hal_gpio_set_output_data(IO_PAD_ADCIN, IO_LVL_LOW);
			delayUs(10);
			hal_gpio_set_output_data(IO_PAD_ADCIN, IO_LVL_HIGH);
			delayUs(9);
		}
	}
	else
	{
		hal_gpio_init_output(IO_PAD_ADCIN, IO_LVL_LOW);	  
	}
}



 

uint16_t value_reg_b1 =0;
uint16_t value_reg_ca =0;

static uint32_t value_reg_df =0;
static uint8_t value_blue =0;
static uint8_t blue_flag =0;







static uint32_t s20_power_on_flag =0;   
uint16_t value_reg_ca_bak =0;
uint16_t value_reg_b1_bak =0;





static _Bool ap_set_backlight_51(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet)
{
	uint8_t cmd_data[2]; 

    cmd_data[0] = dcs_packet->packet_param[0]; 
    cmd_data[1] = dcs_packet->packet_param[1];  
	hal_dsi_tx_ctrl_write_cmd(0x39, 0, 3, 0x51, cmd_data[0], cmd_data[1]);  
	
    return 1;
}	

# 1835 "..\\src\\app\\demo\\ap_demo.c"

static _Bool ap_get_reg_ca(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet)
{
    value_reg_ca = (dcs_packet->packet_param[0] << 8) + dcs_packet->packet_param[1];
    do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "CA[%x]", "S21_demo", 1839,value_reg_ca); }; } while (0);
    
    return 1;
}

# 1853 "..\\src\\app\\demo\\ap_demo.c"


uint8_t panel_mode =1; 			
uint16_t panel_r,panel_g,panel_b; 









static _Bool ap_get_reg_df(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet)
{
	ccm_coef_t ccm;
	ccm.coef_c00 = 255;
	ccm.coef_c01 = 0;
	ccm.coef_c02 = 0;
	ccm.coef_c10 = 0;
	ccm.coef_c11 = 255;
	ccm.coef_c12 = 0;
	ccm.coef_c20 = 0;
	ccm.coef_c21 = 0;
	ccm.coef_c22 = 255;
	

	value_reg_df = (dcs_packet->packet_param[35] << 8) + dcs_packet->packet_param[33];
	panel_mode = dcs_packet->packet_param[0];
	panel_r =dcs_packet->packet_param[49];
	panel_g =dcs_packet->packet_param[51];
	panel_b =dcs_packet->packet_param[53];


	if (panel_mode ==00)
	{
	  	
		

		
		
		

		ccm.coef_c00 = panel_r;
		ccm.coef_c11 = panel_g;
		ccm.coef_c22 = panel_b;
		hal_dsi_tx_ctrl_set_ccm(ccm);

# 1968 "..\\src\\app\\demo\\ap_demo.c"

	}
	else
	{





		
		
		panel_r =228-2*(0xFF-panel_r);
		panel_g =238-2*(0xFF-panel_g);
		panel_b =238-2*(0xFF-panel_b);

	
		ccm.coef_c00 = panel_r;
		ccm.coef_c11 = panel_g;
		ccm.coef_c22 = panel_b;
		hal_dsi_tx_ctrl_set_ccm(ccm);
	}
	
# 1998 "..\\src\\app\\demo\\ap_demo.c"

# 2073 "..\\src\\app\\demo\\ap_demo.c"

    return 1;
}


static _Bool ap_set_tp_calibration_04(hal_dsi_rx_ctrl_handle_t *handler, hal_dcs_packet_t *dcs_packet)
{
    if( (dcs_packet->packet_param[0] == 0x01) && (dcs_packet->packet_param[1] == 0x01) && (dcs_packet->packet_param[1] == 0x01) )
    {
    	g_calibration_flag = 1;
    }
    return 1;
}



 
static const hal_dcs_execute_entry_t g_cus_rx_dcs_execute_table[] =
{
    {DCS_SET_DISPLAY_ON, ap_set_display_on, 1},  
    {DCS_SET_DISPLAY_OFF, ap_set_display_off, 1},   
	  {0xDF, ap_get_reg_df, 0},  
	

	  {0x51, ap_set_backlight_51, 0},   
	  {0x60, ap_update_frame_rate, 1},  
    {DCS_ENTER_SLEEP_MODE, ap_set_enter_sleep_mode, 1},  
    {DCS_EXIT_SLEEP_MODE, ap_set_exit_sleep_mode, 1},  


	  {0x04, ap_set_tp_calibration_04, 1},

    {0, 0, 0}                        
};

static void tx_panel_reset(void)
{
    hal_dsi_tx_ctrl_panel_reset_pin(IO_LVL_HIGH); 
    delayMs(10);                
    hal_dsi_tx_ctrl_panel_reset_pin(IO_LVL_LOW); 
    delayMs(10);                
    hal_dsi_tx_ctrl_panel_reset_pin(IO_LVL_HIGH); 
    delayMs(10); 
}


static void send_panel_init_code(uint32_t size, uint8_t * data)
{
	uint32_t data_offeset = 0;
	uint8_t data_type;
	uint8_t vc;
	uint8_t data_size;
	uint8_t * p_data;

	while(data_offeset < size)
	{
		data_type = data[data_offeset];
		vc = data[data_offeset + 1];
		data_size = data[data_offeset + 2];
		p_data = &data[data_offeset + 3];
		hal_dsi_tx_ctrl_write_array_cmd(data_type, vc, data_size, p_data);
		data_offeset = data_offeset + data_size + 3;
		delayUs(50);
	}
}

const uint8_t panel_init_code[] = {

	0x05, 0, 1, 0x11,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x00,
	0x39,0,9,0xBA,0x01,0xAF,0x00,0x14,0x09,0xAC,0x00,0x01,
	0x39,0,2,0x6F,0x08,
	0x39,0,9,0xBA,0x01,0xAF,0x00,0x14,0x00,0x1C,0x00,0x00,
	0x39,0,2,0x6F,0x10,
	0x39,0,8,0xBA,0x01,0xAF,0x00,0x14,0x03,0x4C,0x00,
	0x39,0,9,0xBB,0x01,0xAF,0x00,0x14,0x00,0x1C,0x00,0x41,
	0x39,0,2,0x6F,0x06,
	0x39,0,4,0xB5,0x2B,0x1C,0x32,
	0x39,0,2,0x6F,0x0B,
	0x39,0,4,0xB5,0x33,0x2B,0x23,
	0x39,0,2,0x6F,0x10,
	0x39,0,6,0xB5,0x1C,0x1C,0x1C,0x1C,0x1C,
	0x39,0,3,0xB5,0x86,0x02,
	0x39,0,2,0x6F,0x02,
	0x39,0,14,0xB6,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
	0x39,0,14,0xB7,0x00,0xFE,0xDC,0xBA,0x98,0x76,0x54,0x32,0x10,0x00,0x00,0x00,0x05,
	0x39,0,2,0x6F,0x0D,
	0x39,0,7,0xB7,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x13,
	0x39,0,13,0xB7,0x17,0x89,0x9A,0xAB,0xBC,0xCD,0xDE,0xEF,0xFF,0xFF,0xFF,0xFF,
	0x39,0,2,0x6F,0x1F,
	0x39,0,25,0xB7,0x47,0xFF,0x88,0x10,0x99,0x21,0xAA,0x32,0xBB,0x43,0xCC,0x54,0xDD,0x65,0xEE,0x76,0xB0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
	0x39,0,5,0xB2,0x18,0x63,0x08,0x08,
	0x39,0,2,0x6F,0x09,
	0x39,0,2,0xB2,0x40,
	0x39,0,2,0x6F,0x0F,
	0x39,0,9,0xB2,0x30,0x20,0x81,0x46,0x21,0x46,0x20,0x00,
	0x39,0,13,0xB3,0x00,0x08,0x00,0x18,0x00,0x18,0x00,0x31,0x00,0x31,0x00,0x62,
	0x39,0,2,0x6F,0x0C,
	0x39,0,13,0xB3,0x00,0x62,0x00,0xC0,0x00,0xC0,0x01,0x46,0x01,0x46,0x01,0x47,
	0x39,0,2,0x6F,0x18,
	0x39,0,13,0xB3,0x01,0x47,0x03,0x33,0x03,0x33,0x07,0xFF,0x07,0xFF,0x0F,0xFF,
	0x39,0,2,0x6F,0x24,
	0x39,0,9,0xB3,0x01,0x55,0x08,0xCC,0x08,0xCC,0x0F,0xFF,
	0x39,0,2,0x6F,0x2C,
	

















	0x39,0,15,0xB3,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,
	0x39,0,2,0x6F,0x3A,
	0x39,0,13,0xB3,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,
	0x39,0,2,0x6F,0x46,
	0x39,0,13,0xB3,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,
	0x39,0,15,0xB4,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, 
	0x39,0,2,0x6F,0x0E, 
	0x39,0,13,0xB4,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, 
	0x39,0,2,0x6F,0x1A, 
	0x39,0,13,0xB4,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,  
	0x39,0,2,0x6F,0x30, 
	0x39,0,15,0xB4,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, 
	0x39,0,2,0x6F,0x3E, 
	0x39,0,13,0xB4,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, 
	0x39,0,2,0x6F,0x4A, 
	0x39,0,13,0xB4,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60,0x00,0x60, 
	
	0x39,0,2,0x6F,0x26,
	0x39,0,11,0xB4,0x09,0x90,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,
	0x39,0,3,0xB9,0x00,0x96,
	0x39,0,3,0xBD,0x04,0xB0,
	
	0x39,0,4,0xC0,0x46,0xF3,0xC1,
	0x39,0,2,0x6F,0x08,
	0x39,0,2,0xC0,0x40,
	0x39,0,2,0x6F,0x09,
	0x39,0,3,0xC0,0x20,0x81,
	0x39,0,2,0x6F,0x02,
	0x39,0,2,0xC1,0x24,
	0x39,0,2,0x6F,0x02,
	0x39,0,9,0xC1,0x24,0x57,0x00,0x57,0x00,0x57,0x00,0x57,
	0x39,0,2,0x6F,0x0A,
	0x39,0,3,0xC1,0x00,0x57,
	0x39,0,2,0x6F,0x01,
	0x39,0,2,0xC3,0x00,
	0x39,0,2,0x6F,0x08,
	0x39,0,2,0xC3,0x00,
	0x39,0,2,0xC5,0x10,
	0x39,0,2,0xC8,0x0D,
	0x39,0,2,0xC9,0x84,
	0x39,0,5,0xCA,0x12,0x00,0x82,0xBC,
	0x39,0,2,0xCB,0x88,
	0x39,0,2,0x6F,0x02,
	0x39,0,3,0xEC,0x80,0x10,
	0x39,0,2,0xB9,0x00,
	0x39,0,5,0xBE,0x0E,0x0B,0x14,0x13,
	0x39,0,2,0x6F,0x05,
	0x39,0,2,0xBE,0x8A,
	0x39,0,2,0x6F,0x29,
	0x39,0,2,0xD9,0x00,
	0x39,0,2,0x6F,0x01,
	0x39,0,2,0xD9,0x80,
	0x39,0,2,0x6F,0x07,
	0x39,0,3,0xB2,0x07,0xFF,
	0x39,0,2,0x6F,0x17,
	0x39,0,3,0xB2,0x07,0xFF,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x00,
	0x39,0,2,0x6F,0x2A,
	0x39,0,2,0xD9,0x43,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x01,
	0x39,0,11,0xB5,0x00,0xB0,0x00,0xB0,0x00,0xB0,0x00,0xB0,0x00,0xB0,
	0x39,0,11,0xB6,0x01,0x48,0x00,0xC0,0x00,0xC0,0x01,0x48,0x00,0xC0,
	0x39,0,3,0xB0,0x04,0x04,
	0x39,0,3,0xB3,0x13,0x13,
	0x39,0,7,0xB7,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,
	0x39,0,3,0xB1,0x08,0x08,
	0x39,0,3,0xB4,0x13,0x13,
	0x39,0,7,0xB8,0x46,0x46,0x46,0x46,0x46,0x46,
	0x39,0,29,0xB9,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00,
	0x39,0,5,0xBA,0x10,0x10,0x10,0x10,
	0x39,0,13,0xC2,0x00,0xB0,0x01,0x48,0x00,0xB0,0x01,0x48,0x00,0xB0,0x01,0x48,
	0x39,0,2,0xBB,0x03,
	0x39,0,2,0x6F,0x05,
	0x39,0,20,0xBB,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
	0x39,0,2,0x6F,0x18,
	0x39,0,20,0xBB,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
	0x39,0,2,0x6F,0x2B,
	0x39,0,20,0xBB,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
	0x39,0,2,0x6F,0x3E,
	0x39,0,20,0xBB,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
	0x39,0,3,0xC4,0x80,0x03,
	0x39,0,3,0xCD,0x05,0x81,
	0x39,0,2,0xC7,0x01,
	0x39,0,2,0xCF,0x5C,
	0x39,0,6,0xCE,0x00,0x00,0x01,0x00,0x04,
	0x39,0,2,0x6F,0x01,
	0x39,0,4,0xD2,0x00,0x00,0x11,
	0x39,0,2,0x6F,0x06,
	0x39,0,2,0xD2,0x05,
	0x39,0,2,0x6F,0x0F,
	0x39,0,2,0xD2,0x00,
	0x39,0,2,0x6F,0x09,
	0x39,0,2,0xD2,0x00,
	0x39,0,2,0x6F,0x10,
	0x39,0,2,0xD8,0x0C,
	0x39,0,2,0xD1,0x07,
	0x39,0,2,0x6F,0x02,
	0x39,0,2,0xD1,0x06,
	0x39,0,2,0x6F,0x05,
	0x39,0,2,0xD1,0x06,
	0x39,0,3,0xD6,0x00,0x20,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x02,
	0x39,0,25,0xB9,0x00,0x04,0x00,0x0C,0x00,0x14,0x00,0x1C,0x00,0x2C,0x00,0x3C,0x00,0x4C,0x00,0x5C,0x00,0x7C,0x00,0x9C,0x00,0xBC,0x00,0xDC,
	0x39,0,25,0xBA,0x00,0xFC,0x01,0x3C,0x01,0x7C,0x01,0xBC,0x01,0xFC,0x02,0x7C,0x02,0xFC,0x03,0x7C,0x03,0xBC,0x03,0xDC,0x03,0xFC,0x03,0xFF,
	0x39,0,2,0xBC,0x11,
	0x39,0,17,0xBD,0x96,0x00,0x69,0x00,0x00,0x96,0x00,0x69,0xBB,0x44,0x44,0xBB,0xEE,0x11,0x11,0xEE,
	0x39,0,2,0xC1,0x02,
	0x39,0,9,0xC2,0x91,0x00,0x19,0x00,0x91,0x00,0x19,0x00,
	0x39,0,3,0xC0,0x00,0x00,
	0x39,0,2,0x6F,0x02,
	0x39,0,2,0xBF,0x13,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x02,
	0x39,0,2,0xCC,0x30,
	0x39,0,2,0xBF,0x29,
	0x39,0,19,0xB0,0x00,0x00,0x00,0xEA,0x01,0x30,0x01,0xBD,0x02,0x2B,0x02,0x9A,0x02,0xEF,0x03,0x35,0x03,0xC1,
	0x39,0,19,0xB1,0x04,0x22,0x04,0x87,0x04,0xE1,0x05,0x2F,0x05,0xC9,0x06,0x4E,0x06,0xC5,0x07,0x34,0x07,0x9C,
	0x39,0,15,0xB2,0x07,0xFF,0x08,0x62,0x08,0xC8,0x09,0x2D,0x09,0x92,0x0A,0x74,0x0A,0x77,
	0x39,0,19,0xB3,0x00,0x00,0x00,0xAF,0x00,0xEA,0x01,0x60,0x01,0xCD,0x02,0x2E,0x02,0x7E,0x02,0xBF,0x03,0x42,
	0x39,0,19,0xB4,0x03,0x98,0x03,0xEE,0x04,0x44,0x04,0x8E,0x05,0x12,0x05,0x80,0x05,0xEC,0x06,0x50,0x06,0xAD,
	0x39,0,15,0xB5,0x07,0x0A,0x07,0x63,0x07,0xB9,0x08,0x0E,0x08,0x62,0x09,0x11,0x09,0x14,
	0x39,0,19,0xB6,0x00,0x00,0x00,0xC4,0x01,0x1C,0x01,0xCD,0x02,0x61,0x02,0xE5,0x03,0x4B,0x03,0xA1,0x04,0x3F,
	0x39,0,19,0xB7,0x04,0xAB,0x05,0x17,0x05,0x7A,0x05,0xD1,0x06,0x6D,0x06,0xF3,0x07,0x74,0x07,0xEB,0x08,0x5B,
	0x39,0,15,0xB8,0x08,0xCB,0x09,0x3B,0x09,0xB0,0x0A,0x24,0x0A,0x97,0x0B,0x87,0x0B,0x89,
	0x39,0,2,0xBF,0x28,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x1D,0x01,0x59,0x01,0xBC,0x02,0x24,0x02,0x83,0x02,0xD7,0x03,0x01,0x03,0x79,
	0x39,0,19,0xB1,0x03,0xEB,0x04,0x54,0x04,0xA9,0x04,0xF7,0x05,0x7E,0x05,0xF9,0x06,0x71,0x06,0xDB,0x07,0x40,
	0x39,0,15,0xB2,0x07,0x9B,0x07,0xF3,0x08,0x51,0x08,0xAB,0x09,0x08,0x09,0xE5,0x09,0xE7,
	0x39,0,19,0xB3,0x00,0x00,0x00,0xF2,0x01,0x36,0x01,0x6A,0x01,0xBD,0x02,0x14,0x02,0x5E,0x02,0x8A,0x02,0xFA,
	0x39,0,19,0xB4,0x03,0x5D,0x03,0xB9,0x04,0x04,0x04,0x4D,0x04,0xCA,0x05,0x34,0x05,0x9A,0x05,0xF5,0x06,0x4F,
	0x39,0,15,0xB5,0x06,0xA3,0x06,0xF3,0x07,0x48,0x07,0x94,0x07,0xE6,0x08,0xA1,0x08,0xA7,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x10,0x01,0x5C,0x01,0xC0,0x02,0x40,0x02,0xBA,0x03,0x22,0x03,0x5B,0x03,0xE8,
	0x39,0,19,0xB7,0x04,0x64,0x04,0xDE,0x05,0x35,0x05,0x8E,0x06,0x20,0x06,0x9E,0x07,0x1C,0x07,0x89,0x07,0xF5,
	0x39,0,15,0xB8,0x08,0x57,0x08,0xB9,0x09,0x21,0x09,0x86,0x09,0xF1,0x0A,0xF9,0x0A,0xFE,
	0x39,0,2,0xBF,0x27,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x2E,0x01,0x2F,0x01,0x81,0x01,0xCF,0x02,0x07,0x02,0x48,0x02,0x86,0x02,0xE6,
	0x39,0,19,0xB1,0x03,0x3E,0x03,0x79,0x03,0xC4,0x04,0x0C,0x04,0x8A,0x04,0xF3,0x05,0x51,0x05,0xA2,0x05,0xF4,
	0x39,0,15,0xB2,0x06,0x43,0x06,0x8E,0x06,0xD4,0x07,0x17,0x07,0x56,0x07,0xCD,0x07,0xD0,
	0x39,0,19,0xB3,0x00,0x00,0x01,0x08,0x01,0x2A,0x01,0x4B,0x01,0x76,0x01,0xA6,0x01,0xDE,0x02,0x17,0x02,0x6E,
	0x39,0,19,0xB4,0x02,0xBE,0x02,0xFA,0x03,0x3B,0x03,0x7A,0x03,0xE9,0x04,0x4A,0x04,0x9D,0x04,0xE9,0x05,0x2F,
	0x39,0,15,0xB5,0x05,0x73,0x05,0xB3,0x05,0xEF,0x06,0x2A,0x06,0x63,0x06,0xD1,0x06,0xD3,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x3A,0x01,0x42,0x01,0x84,0x01,0xD4,0x02,0x1D,0x02,0x6F,0x02,0xBE,0x03,0x37,
	0x39,0,19,0xB7,0x03,0xA2,0x03,0xE9,0x04,0x3D,0x04,0x8C,0x05,0x15,0x05,0x8A,0x05,0xEB,0x06,0x45,0x06,0x98,
	0x39,0,15,0xB8,0x06,0xEB,0x07,0x3A,0x07,0x82,0x07,0xC9,0x08,0x0D,0x08,0x8F,0x08,0x92,
	0x39,0,2,0xBF,0x26,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x29,0x01,0x34,0x01,0x50,0x01,0x86,0x01,0xBA,0x01,0xE4,0x02,0x0A,0x02,0x5D,
	0x39,0,19,0xB1,0x02,0xA6,0x02,0xE6,0x03,0x20,0x03,0x51,0x03,0xB2,0x04,0x08,0x04,0x5C,0x04,0xA9,0x04,0xEE,
	0x39,0,15,0xB2,0x05,0x2C,0x05,0x67,0x05,0x9C,0x05,0xD2,0x06,0x08,0x06,0x6D,0x06,0x70,
	0x39,0,19,0xB3,0x00,0x00,0x00,0xFE,0x01,0x1C,0x01,0x3A,0x01,0x4E,0x01,0x6A,0x01,0x88,0x01,0xA8,0x01,0xF2,
	0x39,0,19,0xB4,0x02,0x34,0x02,0x6E,0x02,0xA2,0x02,0xD1,0x03,0x28,0x03,0x77,0x03,0xC0,0x04,0x05,0x04,0x45,
	0x39,0,15,0xB5,0x04,0x7D,0x04,0xB2,0x04,0xE4,0x05,0x12,0x05,0x40,0x05,0x97,0x05,0x99,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x36,0x01,0x44,0x01,0x5D,0x01,0x89,0x01,0xC0,0x01,0xF0,0x02,0x20,0x02,0x8C,
	0x39,0,19,0xB7,0x02,0xE7,0x03,0x37,0x03,0x7D,0x03,0xB8,0x04,0x28,0x04,0x89,0x04,0xE3,0x05,0x37,0x05,0x84,
	0x39,0,15,0xB8,0x05,0xC5,0x06,0x03,0x06,0x3F,0x06,0x76,0x06,0xAD,0x07,0x18,0x07,0x1A,
	0x39,0,2,0xBF,0x25,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x28,0x01,0x34,0x01,0x50,0x01,0x86,0x01,0xBB,0x01,0xE4,0x02,0x0A,0x02,0x5C,
	0x39,0,19,0xB1,0x02,0xA5,0x02,0xE5,0x03,0x1F,0x03,0x50,0x03,0xB1,0x04,0x07,0x04,0x5B,0x04,0xA8,0x04,0xED,
	0x39,0,15,0xB2,0x05,0x2B,0x05,0x66,0x05,0x9B,0x05,0xD3,0x06,0x07,0x06,0x6C,0x06,0x6E,
	0x39,0,19,0xB3,0x00,0x00,0x00,0xFE,0x01,0x1C,0x01,0x3A,0x01,0x4E,0x01,0x6A,0x01,0x88,0x01,0xA8,0x01,0xF2,
	0x39,0,19,0xB4,0x02,0x33,0x02,0x6D,0x02,0xA1,0x02,0xD0,0x03,0x27,0x03,0x76,0x03,0xBF,0x04,0x04,0x04,0x44,
	0x39,0,15,0xB5,0x04,0x7C,0x04,0xB1,0x04,0xE3,0x05,0x12,0x05,0x3F,0x05,0x96,0x05,0x98,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x35,0x01,0x44,0x01,0x5D,0x01,0x89,0x01,0xC0,0x01,0xF0,0x02,0x20,0x02,0x8C,
	0x39,0,19,0xB7,0x02,0xE6,0x03,0x36,0x03,0x7C,0x03,0xB7,0x04,0x27,0x04,0x88,0x04,0xE2,0x05,0x36,0x05,0x83,
	0x39,0,15,0xB8,0x05,0xC4,0x06,0x02,0x06,0x3E,0x06,0x77,0x06,0xAC,0x07,0x17,0x07,0x19,
	0x39,0,2,0xBF,0x24,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x24,0x01,0x36,0x01,0x46,0x01,0x66,0x01,0x91,0x01,0xBC,0x01,0xDB,0x02,0x18,
	0x39,0,19,0xB1,0x02,0x59,0x02,0x93,0x02,0xC7,0x02,0xF8,0x03,0x4B,0x03,0x9F,0x03,0xE6,0x04,0x29,0x04,0x64,
	0x39,0,15,0xB2,0x04,0x9F,0x04,0xD6,0x05,0x09,0x05,0x39,0x05,0x67,0x05,0xBD,0x05,0xBF,
	0x39,0,19,0xB3,0x00,0x00,0x00,0xF2,0x01,0x15,0x01,0x2F,0x01,0x42,0x01,0x54,0x01,0x6A,0x01,0x81,0x01,0xB5,
	0x39,0,19,0xB4,0x01,0xEF,0x02,0x23,0x02,0x52,0x02,0x7E,0x02,0xCB,0x03,0x14,0x03,0x55,0x03,0x92,0x03,0xC7,
	0x39,0,15,0xB5,0x03,0xFC,0x04,0x2F,0x04,0x5E,0x04,0x89,0x04,0xB2,0x04,0xFF,0x05,0x01,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x31,0x01,0x45,0x01,0x50,0x01,0x6F,0x01,0x94,0x01,0xC1,0x01,0xE5,0x02,0x33,
	0x39,0,19,0xB7,0x02,0x88,0x02,0xD1,0x03,0x11,0x03,0x4D,0x03,0xB1,0x04,0x11,0x04,0x62,0x04,0xAC,0x04,0xEC,
	0x39,0,15,0xB8,0x05,0x2C,0x05,0x6A,0x05,0xA1,0x05,0xD3,0x06,0x03,0x06,0x61,0x06,0x63,
	0x39,0,2,0xBF,0x23,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x21,0x01,0x31,0x01,0x3F,0x01,0x4F,0x01,0x67,0x01,0x86,0x01,0xA6,0x01,0xDA,
	0x39,0,19,0xB1,0x02,0x07,0x02,0x37,0x02,0x64,0x02,0x8F,0x02,0xDB,0x03,0x1C,0x03,0x5C,0x03,0x99,0x03,0xCD,
	0x39,0,15,0xB2,0x04,0x00,0x04,0x30,0x04,0x5E,0x04,0x8A,0x04,0xB3,0x04,0xFF,0x05,0x01,
	0x39,0,19,0xB3,0x00,0x00,0x00,0xF3,0x01,0x08,0x01,0x23,0x01,0x34,0x01,0x42,0x01,0x4F,0x01,0x5F,0x01,0x80,
	0x39,0,19,0xB4,0x01,0xA6,0x01,0xD0,0x01,0xF9,0x02,0x1F,0x02,0x64,0x02,0xA0,0x02,0xD9,0x03,0x0F,0x03,0x3E,
	0x39,0,15,0xB5,0x03,0x6C,0x03,0x98,0x03,0xC0,0x03,0xE7,0x04,0x0E,0x04,0x55,0x04,0x56,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x2E,0x01,0x3F,0x01,0x4B,0x01,0x59,0x01,0x6F,0x01,0x8B,0x01,0xAA,0x01,0xE4,
	0x39,0,19,0xB7,0x02,0x1E,0x02,0x5C,0x02,0x96,0x02,0xCC,0x03,0x29,0x03,0x79,0x03,0xC4,0x04,0x0A,0x04,0x45,
	0x39,0,15,0xB8,0x04,0x7E,0x04,0xB4,0x04,0xE5,0x05,0x15,0x05,0x43,0x05,0x96,0x05,0x98,
	0x39,0,2,0xBF,0x22,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x1F,0x01,0x2D,0x01,0x3B,0x01,0x3F,0x01,0x4F,0x01,0x60,0x01,0x75,0x01,0xA3,
	0x39,0,19,0xB1,0x01,0xC9,0x01,0xED,0x02,0x10,0x02,0x32,0x02,0x72,0x02,0xAD,0x02,0xE3,0x03,0x15,0x03,0x46,
	0x39,0,15,0xB2,0x03,0x6F,0x03,0x9D,0x03,0xC3,0x03,0xE9,0x04,0x0D,0x04,0x50,0x04,0x51,
	0x39,0,19,0xB3,0x00,0x00,0x00,0xF0,0x01,0x00,0x01,0x17,0x01,0x2C,0x01,0x34,0x01,0x3E,0x01,0x48,0x01,0x5D,
	0x39,0,19,0xB4,0x01,0x76,0x01,0x90,0x01,0xAD,0x01,0xCC,0x02,0x06,0x02,0x3A,0x02,0x6C,0x02,0x98,0x02,0xC4,
	0x39,0,15,0xB5,0x02,0xEA,0x03,0x12,0x03,0x34,0x03,0x57,0x03,0x77,0x03,0xB4,0x03,0xB5,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x2B,0x01,0x3A,0x01,0x48,0x01,0x4A,0x01,0x59,0x01,0x69,0x01,0x7B,0x01,0xA7,
	0x39,0,19,0xB7,0x01,0xD2,0x01,0xFC,0x02,0x29,0x02,0x56,0x02,0xA8,0x02,0xF1,0x03,0x33,0x03,0x6F,0x03,0xAA,
	0x39,0,15,0xB8,0x03,0xDA,0x04,0x0F,0x04,0x3A,0x04,0x64,0x04,0x8D,0x04,0xD6,0x04,0xD8,
	0x39,0,2,0xBF,0x21,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x1E,0x01,0x27,0x01,0x38,0x01,0x3C,0x01,0x3E,0x01,0x4A,0x01,0x57,0x01,0x73,
	0x39,0,19,0xB1,0x01,0x94,0x01,0xB3,0x01,0xCE,0x01,0xEA,0x02,0x20,0x02,0x4D,0x02,0x80,0x02,0xA6,0x02,0xD1,
	0x39,0,15,0xB2,0x02,0xF5,0x03,0x1B,0x03,0x3B,0x03,0x61,0x03,0x7D,0x03,0xB7,0x03,0xB9,
	0x39,0,19,0xB3,0x00,0x00,0x00,0xED,0x00,0xFA,0x01,0x0E,0x01,0x1C,0x01,0x2B,0x01,0x32,0x01,0x38,0x01,0x47,
	0x39,0,19,0xB4,0x01,0x56,0x01,0x67,0x01,0x7A,0x01,0x8E,0x01,0xBA,0x01,0xE4,0x02,0x11,0x02,0x33,0x02,0x59,
	0x39,0,15,0xB5,0x02,0x7B,0x02,0x9D,0x02,0xBA,0x02,0xDA,0x02,0xF4,0x03,0x2A,0x03,0x2B,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x2A,0x01,0x34,0x01,0x45,0x01,0x48,0x01,0x49,0x01,0x55,0x01,0x60,0x01,0x79,
	0x39,0,19,0xB7,0x01,0x99,0x01,0xB9,0x01,0xD8,0x01,0xF9,0x02,0x3D,0x02,0x78,0x02,0xB8,0x02,0xE8,0x03,0x1C,
	0x39,0,15,0xB8,0x03,0x49,0x03,0x76,0x03,0x9D,0x03,0xC8,0x03,0xE9,0x04,0x2D,0x04,0x2E,
	0x39,0,2,0xBF,0x20,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x1F,0x01,0x22,0x01,0x2C,0x01,0x2D,0x01,0x2E,0x01,0x2F,0x01,0x30,0x01,0x49,
	0x39,0,19,0xB1,0x01,0x59,0x01,0x6A,0x01,0x7D,0x01,0x91,0x01,0xB6,0x01,0xD7,0x01,0xF9,0x02,0x1C,0x02,0x39,
	0x39,0,15,0xB2,0x02,0x54,0x02,0x70,0x02,0x8E,0x02,0xA5,0x02,0xC0,0x02,0xEB,0x02,0xEC,
	0x39,0,19,0xB3,0x00,0x00,0x00,0xE2,0x00,0xF2,0x01,0x02,0x01,0x12,0x01,0x1F,0x01,0x22,0x01,0x2A,0x01,0x32,
	0x39,0,19,0xB4,0x01,0x39,0x01,0x42,0x01,0x4B,0x01,0x55,0x01,0x69,0x01,0x81,0x01,0x9A,0x01,0xB6,0x01,0xD1,
	0x39,0,15,0xB5,0x01,0xE9,0x02,0x04,0x02,0x1C,0x02,0x31,0x02,0x4A,0x02,0x72,0x02,0x73,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x29,0x01,0x2E,0x01,0x3D,0x01,0x40,0x01,0x41,0x01,0x42,0x01,0x43,0x01,0x54,
	0x39,0,19,0xB7,0x01,0x62,0x01,0x71,0x01,0x83,0x01,0x96,0x01,0xBD,0x01,0xE3,0x02,0x0E,0x02,0x37,0x02,0x5E,
	0x39,0,15,0xB8,0x02,0x80,0x02,0xA5,0x02,0xC9,0x02,0xE6,0x03,0x09,0x03,0x3D,0x03,0x3E,
	0x39,0,2,0xBF,0x39,
	0x39,0,19,0xB0,0x00,0x00,0x01,0xFD,0x02,0x44,0x02,0x8C,0x02,0xC3,0x03,0x31,0x03,0x8D,0x04,0x28,0x04,0xA7,
	0x39,0,19,0xB1,0x05,0x13,0x05,0x73,0x05,0xC5,0x06,0x17,0x06,0xA4,0x07,0x23,0x07,0x93,0x08,0x02,0x08,0x64,
	0x39,0,15,0xB2,0x08,0xC1,0x09,0x78,0x0A,0x22,0x0A,0x76,0x0A,0x9D,0x0A,0xCC,0x0A,0xCC,
	0x39,0,19,0xB3,0x00,0x00,0x01,0xE0,0x02,0x1E,0x02,0x45,0x02,0x77,0x02,0xDC,0x03,0x33,0x03,0xC1,0x04,0x31,
	0x39,0,19,0xB4,0x04,0x92,0x04,0xE7,0x05,0x2F,0x05,0x77,0x05,0xF2,0x06,0x62,0x06,0xC3,0x07,0x23,0x07,0x76,
	0x39,0,15,0xB5,0x07,0xC3,0x08,0x5B,0x08,0xE5,0x09,0x26,0x09,0x44,0x09,0x67,0x09,0x67,
	0x39,0,19,0xB6,0x00,0x00,0x01,0xE6,0x02,0x41,0x02,0x8E,0x02,0xD4,0x03,0x61,0x03,0xD5,0x04,0x8A,0x05,0x16,
	0x39,0,19,0xB7,0x05,0x8C,0x05,0xF4,0x06,0x4C,0x06,0xA3,0x07,0x39,0x07,0xC2,0x08,0x3C,0x08,0xB4,0x09,0x20,
	0x39,0,15,0xB8,0x09,0x86,0x0A,0x51,0x0B,0x14,0x0B,0x72,0x0B,0xA0,0x0B,0xCC,0x0B,0xCC,
	0x39,0,2,0xBF,0x38,
	0x39,0,19,0xB0,0x00,0x00,0x02,0x73,0x02,0xA1,0x02,0xCF,0x02,0xF7,0x03,0x45,0x03,0x8D,0x04,0x0E,0x04,0x7D,
	0x39,0,19,0xB1,0x04,0xDE,0x05,0x34,0x05,0x80,0x05,0xC9,0x06,0x4A,0x06,0xBD,0x07,0x26,0x07,0x85,0x07,0xE1,
	0x39,0,15,0xB2,0x08,0x35,0x08,0xD2,0x09,0x65,0x09,0xAD,0x09,0xD0,0x09,0xF5,0x09,0xF5,
	0x39,0,19,0xB3,0x00,0x00,0x02,0x81,0x02,0x9B,0x02,0xAB,0x02,0xC4,0x02,0xF6,0x03,0x32,0x03,0xA3,0x04,0x04,
	0x39,0,19,0xB4,0x04,0x5A,0x04,0xA7,0x04,0xEA,0x05,0x2B,0x05,0x9B,0x06,0x00,0x06,0x5C,0x06,0xAE,0x06,0xFD,
	0x39,0,15,0xB5,0x07,0x45,0x07,0xCA,0x08,0x44,0x08,0x80,0x08,0x9E,0x08,0xB9,0x08,0xB9,
	0x39,0,19,0xB6,0x00,0x00,0x02,0x70,0x02,0xA4,0x02,0xD0,0x03,0x01,0x03,0x63,0x03,0xC0,0x04,0x5F,0x04,0xDF,
	0x39,0,19,0xB7,0x05,0x4B,0x05,0xA9,0x05,0xFB,0x06,0x4B,0x06,0xD5,0x07,0x50,0x07,0xC1,0x08,0x28,0x08,0x8C,
	0x39,0,15,0xB8,0x08,0xE7,0x09,0x95,0x0A,0x3B,0x0A,0x8C,0x0A,0xB7,0x0A,0xDD,0x0A,0xDD,
	0x39,0,2,0xBF,0x37,
	0x39,0,19,0xB0,0x00,0x00,0x01,0xC4,0x02,0x8A,0x02,0xA8,0x02,0xC7,0x02,0xFC,0x03,0x2F,0x03,0x90,0x03,0xE4,
	0x39,0,19,0xB1,0x04,0x34,0x04,0x7D,0x04,0xBC,0x04,0xF9,0x05,0x64,0x05,0xC6,0x06,0x1C,0x06,0x6C,0x06,0xB8,
	0x39,0,15,0xB2,0x06,0xFD,0x07,0x7E,0x07,0xF7,0x08,0x2E,0x08,0x49,0x08,0x63,0x08,0x66,
	0x39,0,19,0xB3,0x00,0x00,0x01,0xCD,0x02,0x8E,0x02,0x9E,0x02,0xA9,0x02,0xC7,0x02,0xE8,0x03,0x34,0x03,0x7F,
	0x39,0,19,0xB4,0x03,0xC4,0x04,0x04,0x04,0x3C,0x04,0x72,0x04,0xD2,0x05,0x28,0x05,0x73,0x05,0xB9,0x05,0xFB,
	0x39,0,15,0xB5,0x06,0x38,0x06,0xA8,0x07,0x10,0x07,0x3F,0x07,0x56,0x07,0x6D,0x07,0x6F,
	0x39,0,19,0xB6,0x00,0x00,0x01,0xC1,0x02,0x89,0x02,0xAB,0x02,0xC8,0x03,0x07,0x03,0x48,0x03,0xC3,0x04,0x2C,
	0x39,0,19,0xB7,0x04,0x8A,0x04,0xDF,0x05,0x26,0x05,0x69,0x05,0xDD,0x06,0x47,0x06,0xA3,0x06,0xFA,0x07,0x4A,
	0x39,0,15,0xB8,0x07,0x95,0x08,0x21,0x08,0xA4,0x08,0xDF,0x08,0xFD,0x09,0x1A,0x09,0x1D,
	0x39,0,2,0xBF,0x36,
	0x39,0,19,0xB0,0x00,0x00,0x02,0x4D,0x02,0x68,0x02,0x83,0x02,0x9F,0x02,0xC7,0x02,0xEE,0x03,0x30,0x03,0x72,
	0x39,0,19,0xB1,0x03,0xAD,0x03,0xE7,0x04,0x1A,0x04,0x4C,0x04,0xA2,0x04,0xF7,0x05,0x3E,0x05,0x84,0x05,0xC0,
	0x39,0,15,0xB2,0x05,0xFC,0x06,0x67,0x06,0xC8,0x06,0xF6,0x07,0x0E,0x07,0x23,0x07,0x23,
	0x39,0,19,0xB3,0x00,0x00,0x02,0x8B,0x02,0x92,0x02,0x99,0x02,0x9E,0x02,0xA8,0x02,0xB7,0x02,0xE4,0x03,0x18,
	0x39,0,19,0xB4,0x03,0x4C,0x03,0x80,0x03,0xAE,0x03,0xDA,0x04,0x25,0x04,0x70,0x04,0xAF,0x04,0xED,0x05,0x22,
	0x39,0,15,0xB5,0x05,0x56,0x05,0xB4,0x06,0x09,0x06,0x31,0x06,0x45,0x06,0x58,0x06,0x58,
	0x39,0,19,0xB6,0x00,0x00,0x02,0x6B,0x02,0x80,0x02,0x96,0x02,0xA8,0x02,0xC9,0x02,0xF1,0x03,0x45,0x03,0x9B,
	0x39,0,19,0xB7,0x03,0xE8,0x04,0x2F,0x04,0x6C,0x04,0xA8,0x05,0x08,0x05,0x67,0x05,0xB4,0x06,0x00,0x06,0x41,
	0x39,0,15,0xB8,0x06,0x82,0x06,0xF4,0x07,0x5C,0x07,0x8E,0x07,0xA6,0x07,0xBE,0x07,0xBE,
	0x39,0,2,0xBF,0x35,
	0x39,0,19,0xB0,0x00,0x00,0x02,0x4D,0x02,0x60,0x02,0x74,0x02,0x87,0x02,0xB3,0x02,0xD9,0x03,0x25,0x03,0x69,
	0x39,0,19,0xB1,0x03,0xA6,0x03,0xE0,0x04,0x15,0x04,0x49,0x04,0x9F,0x04,0xF4,0x05,0x3C,0x05,0x82,0x05,0xBE,
	0x39,0,15,0xB2,0x05,0xFA,0x06,0x65,0x06,0xC8,0x06,0xF7,0x07,0x0D,0x07,0x20,0x07,0x20,
	0x39,0,19,0xB3,0x00,0x00,0x02,0x81,0x02,0x8B,0x02,0x96,0x02,0x9C,0x02,0xAA,0x02,0xB6,0x02,0xE4,0x03,0x17,
	0x39,0,19,0xB4,0x03,0x4A,0x03,0x7A,0x03,0xA9,0x03,0xD6,0x04,0x21,0x04,0x6C,0x04,0xAC,0x04,0xEA,0x05,0x1F,
	0x39,0,15,0xB5,0x05,0x54,0x05,0xB3,0x06,0x08,0x06,0x30,0x06,0x43,0x06,0x56,0x06,0x56,
	0x39,0,19,0xB6,0x00,0x00,0x02,0x68,0x02,0x7C,0x02,0x91,0x02,0xA2,0x02,0xC8,0x02,0xEC,0x03,0x47,0x03,0x9B,
	0x39,0,19,0xB7,0x03,0xE4,0x04,0x2B,0x04,0x69,0x04,0xA6,0x05,0x06,0x05,0x65,0x05,0xB3,0x05,0xFF,0x06,0x40,
	0x39,0,15,0xB8,0x06,0x80,0x06,0xF3,0x07,0x5C,0x07,0x8D,0x07,0xA5,0x07,0xBC,0x07,0xBC,
	0x39,0,2,0xBF,0x34,
	0x39,0,19,0xB0,0x00,0x00,0x02,0x72,0x02,0x83,0x02,0x95,0x02,0xA7,0x02,0xC8,0x02,0xEA,0x03,0x30,0x03,0x74,
	0x39,0,19,0xB1,0x03,0xB2,0x03,0xE8,0x04,0x1B,0x04,0x4C,0x04,0xA5,0x04,0xF5,0x05,0x3B,0x05,0x80,0x05,0xBB,
	0x39,0,15,0xB2,0x05,0xF6,0x06,0x60,0x06,0xC0,0x06,0xEF,0x07,0x04,0x07,0x18,0x07,0x18,
	0x39,0,19,0xB3,0x00,0x00,0x02,0xA6,0x02,0xB1,0x02,0xBD,0x02,0xC5,0x02,0xD1,0x02,0xDC,0x02,0xFC,0x03,0x2C,
	0x39,0,19,0xB4,0x03,0x5D,0x03,0x8B,0x03,0xB8,0x03,0xE4,0x04,0x31,0x04,0x76,0x04,0xB4,0x04,0xF1,0x05,0x25,
	0x39,0,15,0xB5,0x05,0x58,0x05,0xB4,0x06,0x08,0x06,0x30,0x06,0x41,0x06,0x55,0x06,0x55,
	0x39,0,19,0xB6,0x00,0x00,0x02,0x8D,0x02,0xA1,0x02,0xB6,0x02,0xC8,0x02,0xE7,0x03,0x06,0x03,0x52,0x03,0xA6,
	0x39,0,19,0xB7,0x03,0xF1,0x04,0x33,0x04,0x6F,0x04,0xA9,0x05,0x0C,0x05,0x65,0x05,0xB2,0x05,0xFD,0x06,0x3D,
	0x39,0,15,0xB8,0x06,0x7C,0x06,0xEE,0x07,0x55,0x07,0x87,0x07,0x9D,0x07,0xB4,0x07,0xB4,
	0x39,0,2,0xBF,0x33,
	0x39,0,19,0xB0,0x00,0x00,0x02,0xAE,0x02,0xBD,0x02,0xCD,0x02,0xDD,0x02,0xFD,0x03,0x1C,0x03,0x5A,0x03,0x91,
	0x39,0,19,0xB1,0x03,0xC5,0x03,0xFA,0x04,0x23,0x04,0x53,0x04,0xA5,0x04,0xEF,0x05,0x32,0x05,0x73,0x05,0xAD,
	0x39,0,15,0xB2,0x05,0xE5,0x06,0x4B,0x06,0xA8,0x06,0xD6,0x06,0xEC,0x06,0xFD,0x06,0xFD,
	0x39,0,19,0xB3,0x00,0x00,0x03,0x06,0x03,0x0D,0x03,0x15,0x03,0x1D,0x03,0x27,0x03,0x30,0x03,0x49,0x03,0x64,
	0x39,0,19,0xB4,0x03,0x88,0x03,0xB0,0x03,0xD2,0x03,0xF8,0x04,0x39,0x04,0x79,0x04,0xB3,0x04,0xEC,0x05,0x1E,
	0x39,0,15,0xB5,0x05,0x4E,0x05,0xA6,0x05,0xF6,0x06,0x1C,0x06,0x2E,0x06,0x3F,0x06,0x3F,
	0x39,0,19,0xB6,0x00,0x00,0x02,0xED,0x02,0xFA,0x03,0x08,0x03,0x16,0x03,0x2E,0x03,0x45,0x03,0x84,0x03,0xBF,
	0x39,0,19,0xB7,0x03,0xFF,0x04,0x3E,0x04,0x72,0x04,0xA9,0x05,0x06,0x05,0x5A,0x05,0xA4,0x05,0xED,0x06,0x2C,
	0x39,0,15,0xB8,0x06,0x69,0x06,0xD8,0x07,0x3B,0x07,0x6B,0x07,0x82,0x07,0x97,0x07,0x97,
	0x39,0,2,0xBF,0x32,
	0x39,0,19,0xB0,0x00,0x00,0x03,0x10,0x03,0x1A,0x03,0x24,0x03,0x2E,0x03,0x42,0x03,0x57,0x03,0x85,0x03,0xB1,
	0x39,0,19,0xB1,0x03,0xE4,0x04,0x0A,0x04,0x2F,0x04,0x57,0x04,0xA2,0x04,0xE4,0x05,0x22,0x05,0x5F,0x05,0x96,
	0x39,0,15,0xB2,0x05,0xCA,0x06,0x2A,0x06,0x83,0x06,0xAE,0x06,0xC3,0x06,0xD5,0x06,0xD5,
	0x39,0,19,0xB3,0x00,0x00,0x03,0x59,0x03,0x61,0x03,0x69,0x03,0x71,0x03,0x81,0x03,0x8C,0x03,0x9E,0x03,0xAE,
	0x39,0,19,0xB4,0x03,0xC5,0x03,0xDE,0x03,0xF6,0x04,0x11,0x04,0x4E,0x04,0x7E,0x04,0xB2,0x04,0xE4,0x05,0x13,
	0x39,0,15,0xB5,0x05,0x3F,0x05,0x90,0x05,0xDC,0x05,0xFF,0x06,0x10,0x06,0x21,0x06,0x21,
	0x39,0,19,0xB6,0x00,0x00,0x03,0x3F,0x03,0x4B,0x03,0x57,0x03,0x63,0x03,0x7B,0x03,0x90,0x03,0xBB,0x03,0xE5,
	0x39,0,19,0xB7,0x04,0x1B,0x04,0x49,0x04,0x75,0x04,0xA2,0x05,0x01,0x05,0x48,0x05,0x8F,0x05,0xD4,0x06,0x10,
	0x39,0,15,0xB8,0x06,0x4A,0x06,0xB3,0x07,0x14,0x07,0x41,0x07,0x56,0x07,0x6B,0x07,0x6B,
	0x39,0,2,0xBF,0x31,
	0x39,0,19,0xB0,0x00,0x00,0x03,0x5D,0x03,0x65,0x03,0x6D,0x03,0x75,0x03,0x85,0x03,0x95,0x03,0xB6,0x03,0xD6,
	0x39,0,19,0xB1,0x03,0xF4,0x04,0x18,0x04,0x39,0x04,0x5A,0x04,0x9A,0x04,0xD2,0x05,0x09,0x05,0x3F,0x05,0x71,
	0x39,0,15,0xB2,0x05,0x9E,0x05,0xF7,0x06,0x49,0x06,0x70,0x06,0x82,0x06,0x95,0x06,0x95,
	0x39,0,19,0xB3,0x00,0x00,0x03,0xBC,0x03,0xC1,0x03,0xC6,0x03,0xCB,0x03,0xD5,0x03,0xDF,0x03,0xEC,0x03,0xF7,
	0x39,0,19,0xB4,0x04,0x04,0x04,0x15,0x04,0x26,0x04,0x38,0x04,0x62,0x04,0x88,0x04,0xB3,0x04,0xDC,0x05,0x04,
	0x39,0,15,0xB5,0x05,0x29,0x05,0x70,0x05,0xB3,0x05,0xD5,0x05,0xE4,0x05,0xF2,0x05,0xF2,
	0x39,0,19,0xB6,0x00,0x00,0x03,0x9F,0x03,0xA7,0x03,0xAF,0x03,0xB7,0x03,0xC8,0x03,0xD9,0x03,0xF6,0x04,0x11,
	0x39,0,19,0xB7,0x04,0x31,0x04,0x59,0x04,0x7D,0x04,0xA2,0x04,0xEE,0x05,0x2E,0x05,0x6C,0x05,0xA9,0x05,0xE4,
	0x39,0,15,0xB8,0x06,0x16,0x06,0x7A,0x06,0xD4,0x06,0xFE,0x07,0x12,0x07,0x26,0x07,0x26,
	0x39,0,2,0xBF,0x30,
	0x39,0,19,0xB0,0x00,0x00,0x03,0xB3,0x03,0xB8,0x03,0xBD,0x03,0xC2,0x03,0xCC,0x03,0xD6,0x03,0xEA,0x03,0xFF,
	0x39,0,19,0xB1,0x04,0x14,0x04,0x27,0x04,0x3C,0x04,0x52,0x04,0x7D,0x04,0xA8,0x04,0xD2,0x04,0xFB,0x05,0x20,
	0x39,0,15,0xB2,0x05,0x47,0x05,0x8C,0x05,0xCD,0x05,0xF0,0x06,0x00,0x06,0x0E,0x06,0x0E,
	0x39,0,19,0xB3,0x00,0x00,0x04,0x1A,0x04,0x1D,0x04,0x20,0x04,0x23,0x04,0x2A,0x04,0x31,0x04,0x3E,0x04,0x47,
	0x39,0,19,0xB4,0x04,0x50,0x04,0x57,0x04,0x60,0x04,0x69,0x04,0x7D,0x04,0x91,0x04,0xAB,0x04,0xC7,0x04,0xE2,
	0x39,0,15,0xB5,0x04,0xFC,0x05,0x31,0x05,0x63,0x05,0x7C,0x05,0x87,0x05,0x94,0x05,0x94,
	0x39,0,19,0xB6,0x00,0x00,0x04,0x00,0x04,0x05,0x04,0x0A,0x04,0x0F,0x04,0x19,0x04,0x23,0x04,0x36,0x04,0x47,
	0x39,0,19,0xB7,0x04,0x5B,0x04,0x6C,0x04,0x81,0x04,0x97,0x04,0xC7,0x04,0xF4,0x05,0x25,0x05,0x55,0x05,0x81,
	0x39,0,15,0xB8,0x05,0xAE,0x06,0x00,0x06,0x4A,0x06,0x6F,0x06,0x80,0x06,0x92,0x06,0x92,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x02,
	0x39,0,2,0xBF,0x42,
	0x39,0,19,0xB0,0x00,0x00,0x04,0x9E,0x04,0xD9,0x05,0x14,0x05,0x4F,0x05,0x9D,0x05,0xDD,0x06,0x48,0x06,0xAE,
	0x39,0,19,0xB1,0x07,0x03,0x07,0x57,0x07,0xA0,0x07,0xE6,0x08,0x62,0x08,0xD5,0x09,0x36,0x09,0x94,0x09,0xE3,
	0x39,0,15,0xB2,0x0A,0x35,0x0A,0xC4,0x0B,0x43,0x0B,0x81,0x0B,0x9F,0x0B,0xBA,0x0B,0xBA,
	0x39,0,19,0xB3,0x00,0x00,0x04,0xBB,0x04,0xBB,0x04,0xBB,0x04,0xBB,0x04,0xD9,0x05,0x16,0x05,0x95,0x06,0x05,
	0x39,0,19,0xB4,0x06,0x61,0x06,0xB3,0x06,0xF9,0x07,0x3A,0x07,0xA9,0x08,0x12,0x08,0x69,0x08,0xBE,0x09,0x07,
	0x39,0,15,0xB5,0x09,0x4F,0x09,0xCE,0x0A,0x3F,0x0A,0x75,0x0A,0x8E,0x0A,0xA6,0x0A,0xA6,
	0x39,0,19,0xB6,0x00,0x00,0x04,0x7B,0x04,0xA5,0x04,0xCF,0x04,0xF2,0x05,0x46,0x05,0xA5,0x06,0x4E,0x06,0xD9,
	0x39,0,19,0xB7,0x07,0x4F,0x07,0xB7,0x08,0x10,0x08,0x62,0x08,0xEB,0x09,0x6D,0x09,0xD5,0x0A,0x3B,0x0A,0x90,
	0x39,0,15,0xB8,0x0A,0xE8,0x0B,0x80,0x0C,0x07,0x0C,0x48,0x0C,0x67,0x0C,0x85,0x0C,0x85,
	0x39,0,2,0xBF,0x41,
	0x39,0,19,0xB0,0x00,0x00,0x03,0x85,0x04,0xC4,0x04,0xF1,0x05,0x1E,0x05,0x6A,0x05,0xA4,0x05,0xFF,0x06,0x50,
	0x39,0,19,0xB1,0x06,0x9E,0x06,0xE1,0x07,0x21,0x07,0x60,0x07,0xCD,0x08,0x2F,0x08,0x8A,0x08,0xE0,0x09,0x2A,
	0x39,0,15,0xB2,0x09,0x72,0x09,0xF0,0x0A,0x66,0x0A,0x9C,0x0A,0xB7,0x0A,0xD1,0x0A,0xD3,
	0x39,0,19,0xB3,0x00,0x00,0x03,0x9B,0x04,0xBB,0x04,0xBB,0x04,0xBB,0x04,0xC5,0x04,0xE0,0x05,0x3E,0x05,0x9E,
	0x39,0,19,0xB4,0x05,0xF3,0x06,0x3C,0x06,0x7F,0x06,0xBC,0x07,0x23,0x07,0x7B,0x07,0xCE,0x08,0x1C,0x08,0x5E,
	0x39,0,15,0xB5,0x08,0x9F,0x09,0x12,0x09,0x7A,0x09,0xAB,0x09,0xC3,0x09,0xDA,0x09,0xDC,
	0x39,0,19,0xB6,0x00,0x00,0x03,0x6A,0x04,0x96,0x04,0xB6,0x04,0xD5,0x05,0x0F,0x05,0x50,0x05,0xDA,0x06,0x59,
	0x39,0,19,0xB7,0x06,0xC3,0x07,0x20,0x07,0x75,0x07,0xC2,0x08,0x45,0x08,0xB2,0x09,0x18,0x09,0x78,0x09,0xC8,
	0x39,0,15,0xB8,0x0A,0x16,0x0A,0x9E,0x0B,0x1C,0x0B,0x56,0x0B,0x73,0x0B,0x8E,0x0B,0x90,
	0x39,0,2,0xBF,0x40,
	0x39,0,19,0xB0,0x00,0x00,0x01,0x7F,0x04,0x7D,0x04,0xB0,0x04,0xC3,0x04,0xEA,0x05,0x10,0x05,0x58,0x05,0x8A,
	0x39,0,19,0xB1,0x05,0xB7,0x05,0xE0,0x06,0x03,0x06,0x25,0x06,0x69,0x06,0xAB,0x06,0xE3,0x07,0x1A,0x07,0x50,
	0x39,0,15,0xB2,0x07,0x80,0x07,0xDC,0x08,0x2E,0x08,0x56,0x08,0x6A,0x08,0x7C,0x08,0x7E,
	0x39,0,19,0xB3,0x00,0x00,0x01,0x88,0x04,0x99,0x04,0xBB,0x04,0xBB,0x04,0xBB,0x04,0xBB,0x04,0xBE,0x04,0xD2,
	0x39,0,19,0xB4,0x04,0xF2,0x05,0x1A,0x05,0x43,0x05,0x6C,0x05,0xB9,0x06,0x02,0x06,0x3E,0x06,0x77,0x06,0xAC,
	0x39,0,15,0xB5,0x06,0xDB,0x07,0x31,0x07,0x7A,0x07,0x9E,0x07,0xB0,0x07,0xC1,0x07,0xC3,
	0x39,0,19,0xB6,0x00,0x00,0x01,0x74,0x04,0x5B,0x04,0x88,0x04,0x96,0x04,0xB1,0x04,0xCC,0x04,0xFC,0x05,0x32,
	0x39,0,19,0xB7,0x05,0x6D,0x05,0xAA,0x05,0xE1,0x06,0x17,0x06,0x7B,0x06,0xD5,0x07,0x22,0x07,0x6B,0x07,0xAF,
	0x39,0,15,0xB8,0x07,0xE9,0x08,0x57,0x08,0xB1,0x08,0xDE,0x08,0xF4,0x09,0x09,0x09,0x0B,
	0x39,0,2,0xCE,0x01,
	0x39,0,2,0xCC,0x00,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x02,
	0x39,0,25,0xB9,0x00,0x04,0x00,0x0C,0x00,0x1C,0x00,0x2C,0x00,0x3C,0x00,0x4C,0x00,0x5C,0x00,0x7C,0x00,0x9C,0x00,0xBC,0x00,0xDC,0x00,0xFC,
	0x39,0,25,0xBA,0x01,0x3C,0x01,0x7C,0x01,0xBC,0x01,0xFC,0x02,0x3C,0x02,0x7C,0x02,0xBC,0x02,0xFC,0x03,0x3C,0x03,0x7C,0x03,0xFC,0x03,0xFF,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x03,
	0x39,0,2,0x6F,0x1E,
	0x39,0,7,0xB0,0xFF,0xFF,0xF0,0xFF,0xFF,0xF0,
	0x39,0,2,0x6F,0x24,
	0x39,0,7,0xB0,0xFF,0xFF,0xF0,0xFF,0xFF,0xF0,
	0x39,0,2,0x6F,0x2A,
	0x39,0,7,0xB0,0xFF,0xFF,0xF0,0xFF,0xFF,0xF0,
	0x39,0,2,0x6F,0x30,
	0x39,0,7,0xB0,0xFF,0xFF,0xF0,0xFF,0xFF,0xF0,
	0x39,0,2,0x6F,0x36,
	0x39,0,7,0xB0,0xFF,0xFF,0xF0,0xFF,0xFF,0xF0,
	0x39,0,6,0xB2,0x00,0x10,0x10,0x06,0x01,
	0x39,0,2,0x6F,0x05,
	0x39,0,13,0xB2,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x10,0x10,
	0x39,0,2,0x6F,0x11,
	0x39,0,9,0xB2,0x06,0x01,0x06,0x01,0x06,0x01,0x06,0x01,
	0x39,0,2,0x6F,0x19,
	0x39,0,2,0xB2,0x00,
	0x39,0,10,0xB4,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
	0x39,0,16,0xB6,0xB0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x0F,
	0x39,0,4,0xB6,0x1F,0x00,0x0A,
	0x39,0,2,0x6F,0x1A,
	0x39,0,4,0xB6,0x0F,0x00,0x0A,
	0x39,0,2,0x6F,0x25,
	0x39,0,4,0xB6,0x0F,0x00,0x0A,
	0x39,0,2,0x6F,0x30,
	0x39,0,4,0xB6,0x0F,0x00,0x0A,
	0x39,0,17,0xBB,0x11,0x00,0x0F,0x5E,0x00,0x0F,0x5E,0x00,0x0F,0x5E,0x00,0x0F,0x5E,0x00,0x0F,0x5E,
	0x39,0,17,0xBC,0x22,0x10,0x10,0x3D,0x00,0x10,0x3D,0x00,0x10,0x3D,0x00,0x10,0x3D,0x00,0x10,0x3D,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x04,
	0x39,0,2,0xC2,0x14,
	0x39,0,2,0xB1,0x02,
	0x39,0,2,0xB2,0x40,
	0x39,0,2,0x6F,0x01,
	0x39,0,4,0xB2,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x04,
	0x39,0,4,0xB2,0x09,0xE3,0x40,
	0x39,0,2,0x6F,0x07,
	0x39,0,4,0xB2,0x09,0xE4,0x00,
	0x39,0,2,0x6F,0x0A,
	0x39,0,4,0xB2,0x09,0xE3,0x40,
	0x39,0,2,0xCB,0x86,
	0x39,0,6,0xD0,0x00,0x00,0x00,0x10,0x01,
	0x39,0,2,0x6F,0x01,
	0x39,0,6,0xCB,0x05,0x10,0x1F,0x3E,0x7C,
	0x39,0,2,0x6F,0x06,
	0x39,0,11,0xCB,0x00,0x08,0x00,0x62,0x01,0x47,0x07,0xFF,0x0F,0xFF,
	0x39,0,2,0x6F,0x00,
	0x39,0,6,0xD2,0x40,0x20,0x18,0x12,0x0A,
	0x39,0,2,0x6F,0x05,
	0x39,0,6,0xD2,0x40,0x20,0x18,0x0C,0x0B,
	0x39,0,2,0x6F,0x0A,
	0x39,0,6,0xD2,0x40,0x20,0x18,0x0F,0x0B,
	0x39,0,2,0x6F,0x0F,
	0x39,0,6,0xD2,0x40,0x10,0x14,0x10,0x0E,
	0x39,0,2,0x6F,0x14,
	0x39,0,6,0xD2,0x2F,0x20,0x20,0x10,0x12,
	0x39,0,2,0x6F,0x19,
	0x39,0,6,0xD2,0x80,0x30,0x15,0x10,0x0D,
	0x39,0,2,0x6F,0x1E,
	0x39,0,6,0xD2,0x80,0x30,0x28,0x10,0x08,
	0x39,0,2,0x6F,0x23,
	0x39,0,6,0xD2,0x80,0x20,0x18,0x0A,0x0A,
	0x39,0,2,0x6F,0x28,
	0x39,0,6,0xD2,0x68,0x20,0x1A,0x10,0x12,
	0x39,0,2,0x6F,0x2D,
	0x39,0,6,0xD2,0x60,0x20,0x20,0x10,0x1A,
	0x39,0,2,0x6F,0x32,
	0x39,0,6,0xD2,0x40,0x10,0x18,0x10,0x0A,
	0x39,0,2,0x6F,0x37,
	0x39,0,6,0xD2,0x40,0x10,0x18,0x10,0x0A,
	0x39,0,2,0x6F,0x3C,
	0x39,0,6,0xD2,0x40,0x10,0x18,0x10,0x08,
	0x39,0,2,0x6F,0x41,
	0x39,0,6,0xD2,0x40,0x10,0x18,0x10,0x0D,
	0x39,0,2,0x6F,0x46,
	0x39,0,6,0xD2,0x2F,0x20,0x20,0x10,0x10,
	0x39,0,2,0x6F,0x00,
	0x39,0,6,0xD4,0x40,0x30,0x18,0x0A,0x09,
	0x39,0,2,0x6F,0x05,
	0x39,0,6,0xD4,0x40,0x28,0x22,0x0A,0x08,
	0x39,0,2,0x6F,0x0A,
	0x39,0,6,0xD4,0x40,0x20,0x10,0x10,0x06,
	0x39,0,2,0x6F,0x0F,
	0x39,0,6,0xD4,0x30,0x20,0x10,0x10,0x04,
	0x39,0,2,0x6F,0x14,
	0x39,0,6,0xD4,0x30,0x20,0x10,0x10,0x04,
	0x39,0,2,0x6F,0x19,
	0x39,0,6,0xD4,0x80,0x48,0x18,0x10,0x0D,
	0x39,0,2,0x6F,0x1E,
	0x39,0,6,0xD4,0x80,0x40,0x30,0x0D,0x10,
	0x39,0,2,0x6F,0x23,
	0x39,0,6,0xD4,0x80,0x30,0x20,0x14,0x0D,
	0x39,0,2,0x6F,0x28,
	0x39,0,6,0xD4,0xA8,0x28,0x20,0x10,0x0A,
	0x39,0,2,0x6F,0x2D,
	0x39,0,6,0xD4,0x60,0x28,0x20,0x10,0x08,
	0x39,0,2,0x6F,0x32,
	0x39,0,6,0xD4,0x40,0x30,0x18,0x0A,0x0A,
	0x39,0,2,0x6F,0x37,
	0x39,0,6,0xD4,0x40,0x28,0x20,0x0A,0x08,
	0x39,0,2,0x6F,0x3C,
	0x39,0,6,0xD4,0x40,0x20,0x10,0x10,0x06, 
	0x39,0,2,0x6F,0x41, 
	0x39,0,6,0xD4,0x20,0x20,0x10,0x10,0x04, 
	0x39,0,2,0x6F,0x46, 
	0x39,0,6,0xD4,0x30,0x20,0x10,0x10,0x04, 
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x05, 
	0x39,0,3,0xC7,0x07,0x01, 
	0x39,0,4,0xB0,0x07,0x21,0x00,  
	0x39,0,3,0xB3,0x85,0x80, 
	0x39,0,3,0xB5,0x85,0x81, 
	0x39,0,5,0xB7,0x84,0x00,0x00,0x81, 
	0x39,0,5,0xB8,0x84,0x00,0x00,0x81, 
	0x39,0,5,0xB9,0x85,0x00,0x00,0x81, 
	0x39,0,4,0xD0,0x00,0x03,0x10, 
	0x39,0,5,0xE0,0x82,0x00,0x00,0x02,  
	0x39,0,4,0xD1,0x00,0x01,0x10, 
	0x39,0,5,0xE1,0x82,0x00,0x00,0x02, 
	0x39,0,3,0xEC,0x0D,0x01, 
	0x39,0,2,0x6F,0x02, 
	0x39,0,19,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 
	0x39,0,2,0x6F,0x06, 
	0x39,0,3,0xEC,0x00,0xFF,
	0x39,0,2,0xCA,0x33,
	0x39,0,4,0xCB,0x33,0x33,0x33,
	0x39,0,2,0xD8,0x22,
	0x39,0,2,0xD9,0x01,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x06,
	0x39,0,6,0xB0,0x13,0x32,0x12,0x32,0x04,
	0x39,0,6,0xB1,0x32,0x31,0x0E,0x32,0x31,
	0x39,0,6,0xB2,0x32,0x00,0x32,0x31,0x32,
	0x39,0,2,0xB3,0x0F,
	0x39,0,6,0xB6,0x13,0x32,0x12,0x32,0x04,
	0x39,0,6,0xB7,0x32,0x31,0x0E,0x32,0x31,
	0x39,0,6,0xB8,0x32,0x00,0x32,0x31,0x32,
	0x39,0,2,0xB9,0x0F,
	0x39,0,2,0xD0,0x01,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x07,
	0x39,0,6,0xB0,0x84,0x40,0x78,0x70,0x00,
	0x39,0,7,0xB1,0x1C,0x0C,0x00,0x0C,0x1C,0x00,
	0x39,0,2,0xB2,0x20,
	0x39,0,2,0x6F,0x36,
	0x39,0,2,0xB2,0x32,
	0x39,0,2,0x6F,0x3F,
	0x39,0,2,0xB2,0x04,
	0x39,0,2,0x6F,0x09,
	0x39,0,2,0xB2,0x20,
	0x39,0,2,0x6F,0x48,
	0x39,0,2,0xB2,0x32,
	0x39,0,2,0x6F,0x51,
	0x39,0,2,0xB2,0x04,
	0x39,0,2,0x6F,0x12,
	0x39,0,2,0xB2,0xF0,
	0x39,0,2,0x6F,0x5A,
	0x39,0,2,0xB2,0x03,
	0x39,0,2,0x6F,0x63,
	0x39,0,2,0xB2,0x9B,
	0x39,0,2,0x6F,0x1B,
	0x39,0,2,0xB2,0x20,
	0x39,0,2,0x6F,0x6C,
	0x39,0,2,0xB2,0x32,
	0x39,0,2,0x6F,0x75,
	0x39,0,2,0xB2,0x04,
	0x39,0,2,0x6F,0x24,
	0x39,0,2,0xB2,0x20,
	0x39,0,2,0x6F,0x7E,
	0x39,0,2,0xB2,0x32,
	0x39,0,2,0x6F,0x87,
	0x39,0,2,0xB2,0x04,
	0x39,0,2,0x6F,0x2D,
	0x39,0,2,0xB2,0xCC,
	0x39,0,2,0x6F,0x90,
	0x39,0,2,0xB2,0x03,
	0x39,0,2,0x6F,0x99,
	0x39,0,2,0xB2,0x3A,
	0x39,0,2,0xB4,0xC0,
	0x39,0,3,0xB7,0x00,0x00,
	0x39,0,6,0xC0,0x01,0x01,0x00,0x00,0x55,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC1,0x30,0x0F,0x0A,0xF9,0x1E,0x40,0xDB,0x90,0x3F,0xF3,0xD3,0xC4,0x7F,0xE9,0x6E,0x2C,0x00,0x03,0x60,0x44,0xA4,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC1,0x00,0x18,0x00,0x00,0xA6,0x35,0x33,0x30,0x1D,0x66,0x0F,0xCB,0x72,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC1,0x00,0x10,0x30,0x00,0x17,0x35,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC2,0x38,0x0F,0x02,0x71,0x02,0x11,0xFB,0x82,0x3F,0xFB,0x9C,0x6A,0xFF,0xFE,0x3D,0x86,0x00,0x00,0x5F,0xE6,0xF9,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC2,0x00,0x00,0x36,0x00,0x17,0xA3,0x33,0xD0,0x09,0xCB,0x0F,0x93,0xE9,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC2,0x90,0x10,0x2A,0x90,0x13,0x35,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC3,0x3C,0x00,0x0A,0xF9,0x22,0x84,0x26,0xEC,0x3F,0xEB,0x6D,0x20,0x00,0x0A,0x17,0xC0,0x80,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC3,0x90,0x14,0x2A,0x90,0xA6,0x5F,0x33,0x10,0x00,0x00,0x0C,0xCB,0x92,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC3,0x94,0x24,0x2A,0x94,0x2B,0x35,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC4,0x3C,0x00,0x02,0x40,0x01,0x69,0x03,0x90,0x3F,0xFA,0xCB,0x54,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC4,0x80,0x00,0xBB,0x90,0x13,0x29,0x33,0xE0,0x00,0x00,0x0C,0x92,0x13,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC4,0x04,0x20,0x30,0x04,0x27,0x35,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC5,0x2A,0x0F,0x0A,0xF9,0x22,0x84,0xD9,0x14,0x00,0x08,0x0E,0xDC,0x00,0x20,0x4A,0x58,0xFF,0xF7,0xD5,0xE1,0x64,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC5,0x93,0x91,0x2A,0x94,0x23,0x5F,0x33,0x1F,0xE1,0xC6,0x00,0x35,0x92,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC6,0x2A,0x0F,0x02,0x11,0x01,0x69,0xFC,0x96,0x00,0x04,0xBE,0xAA,0xC0,0x00,0x40,0xDE,0x7F,0xFF,0xA2,0xEF,0x69,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC6,0x84,0x24,0xBC,0x94,0x37,0x29,0x33,0xDF,0xF7,0xE9,0x00,0x6D,0x13,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC7,0x26,0x00,0x0A,0xF9,0x1E,0x40,0x24,0x70,0x00,0x00,0x00,0x00,0x7F,0xD5,0x38,0x0C,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC7,0x03,0x91,0x00,0x04,0x1F,0x35,0x33,0x30,0x00,0x00,0x03,0x35,0x72,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC8,0x2E,0x00,0x02,0x71,0x02,0x11,0x04,0x7E,0x00,0x03,0xF3,0x48,0xFF,0xFD,0xD6,0x34,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC8,0x04,0x20,0x36,0x04,0x37,0xA3,0x33,0xD0,0x00,0x00,0x03,0x6D,0xE9,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC9,0x21,0x00,0x27,0xD9,0x27,0xD9,0x00,0x00,0x3F,0xE0,0x8E,0xC6,0x3F,0xE0,0x8E,0xC6,0x80,0x06,0x33,0xD5,0xF1,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC9,0x00,0x16,0x13,0x00,0x7B,0x78,0x33,0xD0,0x27,0xD9,0x0F,0x9B,0x9B,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xCA,0x27,0x00,0x27,0xD9,0x27,0xD9,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x8E,0xC6,0x80,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xCA,0x00,0x7C,0x13,0x00,0xE1,0x78,0x33,0xD0,0x00,0x00,0x03,0x65,0x9B,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xCA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xCB,0x2D,0x00,0x27,0xD9,0x27,0xD9,0x00,0x00,0x3F,0xE0,0x8E,0xC6,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xCB,0x00,0x16,0x79,0x00,0x7B,0xDE,0x33,0x70,0x00,0x00,0x0C,0x9B,0x65,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xCC,0x2B,0x00,0x27,0xD9,0x27,0xD9,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x7F,0xF9,0xCC,0x2A,0x0F,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xCC,0x00,0x7C,0x79,0x00,0xE1,0xDE,0x33,0x7F,0xD8,0x27,0x00,0x65,0x65,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xCD,0x21,0x00,0x03,0x84,0x03,0xC1,0x00,0x00,0x3F,0xFF,0x26,0x08,0x3F,0xFF,0x1E,0xC4,0x00,0x00,0x0D,0x32,0x84,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xCD,0x01,0xFC,0x17,0x02,0x1B,0x35,0x33,0x90,0x03,0xA2,0x0F,0xE2,0xE1,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xCD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xCE,0x2D,0x00,0x03,0x84,0x03,0xC1,0x00,0x00,0x3F,0xFF,0x26,0x08,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xCE,0x01,0xFC,0x36,0x02,0x1B,0x54,0x33,0x40,0x00,0x00,0x0C,0xE2,0x1F,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xCE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xCF,0x27,0x00,0x03,0x84,0x03,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0x3A,0xE4,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xCF,0x02,0x1C,0x17,0x02,0x39,0x35,0x33,0x80,0x00,0x00,0x03,0x1E,0xE3,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xCF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xD0,0x2B,0x00,0x03,0x84,0x03,0x49,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF4,0x73,0x5C,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xD0,0x02,0x1C,0x36,0x02,0x39,0x54,0x33,0x5F,0xFC,0x9A,0x00,0x1E,0x1D,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xD1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xD1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xD1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xD2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xD2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xD2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xD3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xD3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xD3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xD4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xD4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xD4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xD5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xD5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xD5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xD6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xD6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xD6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xD7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xD7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xD7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x07,
	0x39,0,6,0xC0,0x01,0x01,0x00,0x00,0x55,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xC9,0x21,0x00,0x29,0x71,0x29,0x71,0x00,0x00,0x3F,0xDE,0xA7,0x12,0x3F,0xDE,0xA7,0x12,0x80,0x06,0xB5,0x63,0xE1,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xC9,0x81,0xB5,0x0D,0x82,0x1C,0x74,0x33,0xE0,0x29,0x71,0x0F,0x99,0x99,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xC9,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xCA,0x27,0x00,0x29,0x71,0x27,0xD9,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xDF,0xEF,0x62,0x80,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xCA,0x82,0x1D,0x0D,0x82,0x82,0x74,0x33,0xD0,0x00,0x00,0x03,0x67,0x9B,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xCA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xCB,0x2D,0x00,0x28,0xA4,0x29,0x71,0x00,0x00,0x3F,0xDF,0x4C,0x08,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xCB,0x81,0xB5,0x75,0x82,0x1C,0xDB,0x33,0x70,0x00,0x00,0x0C,0x9A,0x67,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xCB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0x6F,0x00,
	0x39,0,22,0xCC,0x2B,0x00,0x28,0xA4,0x27,0xD9,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x7F,0xF9,0xAC,0x90,0xFC,
	0x39,0,2,0x6F,0x15,
	0x39,0,16,0xCC,0x82,0x1D,0x75,0x82,0x82,0xDB,0x33,0x8F,0xD7,0xC2,0x00,0x66,0x65,0x00,0x00,
	0x39,0,2,0x6F,0x24,
	0x39,0,8,0xCC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x39,0,2,0xD9,0x40,
	0x39,0,5,0x3B,0x00,0x14,0x09,0xAC,   
	0x39,0,2,0x03,0x00,
	0x39,0,2,0x90,0x02,
	0x39,0,19,0x91,0x89,0x28,0x00,0x0C,0xC2,0x00,0x03,0x1C,0x01,0x7E,0x00,0x0F,0x08,0xBB,0x04,0x3D,0x10,0xF0,
	0x39,0,1,0x2C,
	0x39,0,5,0x51,0x07,0xFF,0x0F,0xFF,
	0x39,0,5,0xFF,0xAA,0x55,0xA5,0x80,
	0x39,0,2,0x6F,0x1D,
	0x39,0,2,0xF2,0x05,
	0x39,0,2,0x53,0x20,
	0x39,0,1,0x35,
	0x39,0,5,0x2A,0x00,0x00,0x04,0x37,
	0x39,0,5,0x2B,0x00,0x00,0x09,0x5F,
	0x39,0,2,0x2F,0x01,
	0x39,0,2,0x26,0x04,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x00,
	0x39,0,2,0xC0,0x65,
	0x39,0,5,0x3B,0x00,0x10,0x00,0x20,    
	0x39,0,2,0x90,0x00,
	0x39,0,1,0x2C,
	0x39,0,3,0x51,0x03,0x00,
	0x39,0,6,0xF0,0x55,0xAA,0x52,0x08,0x00,
	0x39,0,3,0xB5,0x94,0x42,
	0x39,0,2,0x6F,0x05,
	0x39,0,5,0xB5,0x7F,0x2B,0x12,0x33,
	0x39,0,2,0x6F,0x0B,
	0x39,0,4,0xB5,0x2B,0x1A,0x33,


# 3709 "..\\src\\app\\demo\\ap_demo.c"
	
# 4709 "..\\src\\app\\demo\\ap_demo.c"

};



static void init_panel(void)
{

	
     
    tx_panel_reset();

     
    hal_dsi_tx_ctrl_enter_init_panel_mode(); 
	


	send_panel_init_code(sizeof(panel_init_code), panel_init_code); 
	
	

	delayMs(5); 
	hal_gpio_init_output(IO_PAD_PWMEN, IO_LVL_HIGH);
	delayMs(80);   
	Gpio_swire_output(2, 42);    
	delayMs(200);   
	hal_dsi_tx_ctrl_write_cmd(0x29, 0, 3, 0x51, 0x00, 0x00);  

	delayMs(2);



	  
	hal_dsi_tx_ctrl_exit_init_panel_mode(); 
	

}



static void open_mipi_rx(void) 
{
     
    hal_gpio_set_mode(IO_PAD_AP_TE, IO_MODE_TEAR); 

    if (g_rx_ctrl_handle == 0) 
    {
         
        g_rx_ctrl_handle = hal_dsi_rx_ctrl_create_handle(); 
    }
     
    g_rx_ctrl_handle->base_info.src_w = 1080; 
    g_rx_ctrl_handle->base_info.src_h = 2400; 
    g_rx_ctrl_handle->base_info.dst_w = 1080; 
    g_rx_ctrl_handle->base_info.dst_h = 2400; 
    g_rx_ctrl_handle->base_info.src_frate = DSI_FRAME_RATE_120HZ; 
    g_rx_ctrl_handle->base_info.src_mode = DSI_DATA_CMD_MODE; 
    g_rx_ctrl_handle->rx_color_mode = DSI_RGB888; 
    g_rx_ctrl_handle->rx_lanes = DSI_LANE_4; 
    g_rx_ctrl_handle->rx_nonburst_models = DSI_NONBURST_EVENT;   
    g_rx_ctrl_handle->rx_vc = DSI_VC_0; 
    g_rx_ctrl_handle->compress_en = 1; 
    g_rx_ctrl_handle->rx_hsclk_rate = 1400000000; 
    g_rx_ctrl_handle->cus_dcs_entry_table = g_cus_rx_dcs_execute_table;   
    g_rx_ctrl_handle->rx_dcs_read_entry = ap_dcs_read;   
    g_rx_ctrl_handle->pps_update_entry = pps_update_handle; 
    g_rx_ctrl_handle->pq_marginal = PQ_TYPE_5; 

    g_rx_ctrl_handle->base_info.extra_info.rot_angle = VIDOE_ROT_ANGLE_0; 
    g_rx_ctrl_handle->base_info.extra_info.mirror_en = 0; 
    g_rx_ctrl_handle->base_info.extra_info.ltpo = 1;  


     
    if (g_rx_ctrl_handle->compress_en == 1)
    {
# 4795 "..\\src\\app\\demo\\ap_demo.c"
		
		uint8_t pps[128] = {0x11,0x00,0x00,0x89,0x30,0x80,0x09,0x60,0x04,0x38,0x00,0x78,0x02,0x1C,0x02,0x1C,
							0x02,0x00,0x02,0x0E,0x00,0x20,0x0B,0xAF,0x00,0x07,0x00,0x0C,0x00,0xCF,0x00,0xD9,
							0x18,0x00,0x10,0xF0,0x03,0x0C,0x20,0x00,0x06,0x0B,0x0B,0x33,0x0E,0x1C,0x2A,0x38,
							0x46,0x54,0x62,0x69,0x70,0x77,0x79,0x7B,0x7D,0x7E,0x01,0x02,0x01,0x00,0x09,0x40,
							0x09,0xBE,0x19,0xFC,0x19,0xFA,0x19,0xF8,0x1A,0x38,0x1A,0x78,0x1A,0xB6,0x2A,0xF6,
							0x2B,0x34,0x2B,0x74,0x3B,0x74,0x63,0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
							0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
							0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

        hal_dsi_rx_ctrl_pre_init_pps(g_rx_ctrl_handle, pps, 128);
    }

     
    hal_dsi_rx_ctrl_init(g_rx_ctrl_handle);

	hal_dsi_rx_ctrl_set_cus_sync_line(g_rx_ctrl_handle, 2200);
    
    hal_dsi_rx_ctrl_set_cus_scld_filter(g_rx_ctrl_handle,rx_filter_1080_h_4_96,rx_filter_2400_v_4_96);

     
    hal_dsi_rx_ctrl_start(g_rx_ctrl_handle);
	
	hal_dsi_rx_ctrl_set_cus_esc_clk(g_rx_ctrl_handle,20000000);
}

static void init_mipi_tx(void)
{
    if (g_tx_ctrl_handle == 0)
    {
        g_tx_ctrl_handle = hal_dsi_tx_ctrl_create_handle();
    }
    g_tx_ctrl_handle->channel_id = DSI_VC_0;
    g_tx_ctrl_handle->lane_num = DSI_LANE_4;
    g_tx_ctrl_handle->vid_mode = DSI_BURST_MODE;
    g_tx_ctrl_handle->cmd_tx_type = DSI_CMD_TX_LP;
    g_tx_ctrl_handle->dpi_vsa = 8;
    g_tx_ctrl_handle->dpi_vbp = 8;
    g_tx_ctrl_handle->dpi_vfp = 70;
    g_tx_ctrl_handle->dpi_hsa = 8;
    g_tx_ctrl_handle->dpi_hbp = 90;
    g_tx_ctrl_handle->dpi_hfp = 99;
    g_tx_ctrl_handle->base_info.src_w = 1080;
    g_tx_ctrl_handle->base_info.src_h = 2400;
    g_tx_ctrl_handle->base_info.dst_w = 1080;
    g_tx_ctrl_handle->base_info.dst_h = 2400;
    g_tx_ctrl_handle->base_info.src_frate = DSI_FRAME_RATE_120HZ;
    g_tx_ctrl_handle->base_info.src_mode = DSI_DATA_CMD_MODE;
  	g_tx_ctrl_handle->tx_line_delay = 100;  
	  g_tx_ctrl_handle->tx_frame_rate = 60;
		g_rx_ctrl_handle->base_info.extra_info.ltpo = 1;  
	
    hal_dsi_tx_ctrl_init(g_tx_ctrl_handle);
     
    hal_dsi_tx_ctrl_set_overwrite_rgb(0x00, 0x00, 0x00);
}


static void tx_display_on(void)
{
    init_panel();
	

    hal_dsi_tx_ctrl_start(g_tx_ctrl_handle);
	
	
    delayMs(50);
    hal_dsi_tx_ctrl_write_cmd(0x05, 0, 2, 0x29);
}

static void swire_timer_callback(void *data)
{

	if(Flag_blacklight_EN)
	{
		hal_swire_start(12, 12, 12, 12, 50);
	}
	else if(s20_power_on_flag)
	{
		hal_swire_start(12, 12, 12, 12, 50);
	}
	else

	{
		hal_swire_start(12, 12, 12, 12, swire_num);
	}
}

static void swire_callback(void *data)
{
     
    
    {
        hal_timer_start(TIMER_NUM1, 26, swire_timer_callback, 0);
    }
}

 
static void swire_init()
{
    hal_swire_open(DISABLE);
    hal_swire_init();
     
    hal_swire_register_callback(swire_callback);
    hal_swire_open(ENABLE);
    
    hal_swire_start(12, 12, 12, 12, 50); 
    hal_timer_init(TIMER_NUM1);
    hal_timer_start(TIMER_NUM1, 26, swire_timer_callback, 0);
}



























static void soft_timer3_cb(void *data)
{
	hal_timer_start(TIMER_NUM3, 10, soft_timer3_cb, 0);
	tp_sleep_count++;
	if(phone_DisplayOFF_count>0)
	{
	   phone_DisplayOFF_count++;
	}	
	
	
# 4955 "..\\src\\app\\demo\\ap_demo.c"
	



}



void app_tp_calibration_exec(void)
{
	if(g_calibration_flag)
	{	  
		g_calibration_flag = 0;
		ap_tp_calibration();
		do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "calibration successful \n", "S21_demo", 4969); }; } while (0);
	}
}



void ap_demo(void)
{
	hal_gpio_init_output(IO_PAD_TD_LEDPWM, IO_LVL_LOW);
	hal_gpio_init_output(IO_PAD_AP_SWIRE, IO_LVL_LOW);
	hal_gpio_init_output(IO_PAD_ADCIN, IO_LVL_LOW);
	
	hal_gpio_init_output(IO_PAD_PWMEN, IO_LVL_LOW);  
	tp_sleep_in = 1;
	app_tp_I2C_init();	
	
     
    open_mipi_rx();
    do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "s21 demo1\n", "S21_demo", 4987); }; } while (0);
	
 
 

	 

	 
    init_mipi_tx();
     
			
	
		 	__NVIC_SetPriority(I2C0_IRQn,0);
			__NVIC_SetPriority(I2C1_IRQn,1);

	
	
			
  

    app_tp_init();



	tp_sleep_count = 0;
	phone_DisplayOFF_count=1;
	hal_timer_init(TIMER_NUM3);
	hal_timer_start(TIMER_NUM3, 10, soft_timer3_cb, 0);
	do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "start timer3\n", "S21_demo", 5015); }; } while (0);


	while (1)
	{
         
        if (start_display_on == 1 )
        {
			 
			tx_display_on();
			start_display_on = 0;
			panel_display_done = 1;

			app_tp_phone_clear_reset_on();

			 
			app_tp_transfer_screen_start();


			hal_gpio_set_ap_reset_int(ENABLE, ap_reset_cb, DETECT_RISING_EDGE);

        }
		
		if(phone_DisplayOFF_flag==1)
		{	
			if(phone_DisplayOFF_count>950)
			{
				phone_DisplayOFF_count=0;
				phone_start_flag=1;
			}
		}
		else
		{
			if(phone_DisplayOFF_count>20)
			{
				phone_DisplayOFF_count=0;
				phone_start_flag=1;
				hal_gpio_set_output_data(IO_PAD_AP_INT, IO_LVL_LOW); 
			}			
		}		
		





		
		

		app_tp_calibration_exec();

		

         
        app_tp_transfer_screen_int();

		
        while (hal_dsi_rx_ctrl_dsc_async_handler(g_rx_ctrl_handle))
		{
		}
		

        if (g_need_enter_sleep_mode)
        {
			hal_gpio_init_output(IO_PAD_TD_LEDPWM, IO_LVL_HIGH);
             

            hal_dsi_tx_ctrl_stop(g_tx_ctrl_handle);
            hal_dsi_tx_ctrl_deinit(g_tx_ctrl_handle);
            hal_dsi_rx_ctrl_stop(g_rx_ctrl_handle);
            hal_dsi_rx_ctrl_deinit(g_rx_ctrl_handle);





			
			do { if (kLOG_LEVEL_DBG <= kLOG_LEVEL_DBG) { LOG_printf("[%s] (%04d) " "disable video path \n", "S21_demo", 5092); }; } while (0);
			g_need_enter_sleep_mode = 0;
			hal_system_set_vcc(0);
			tp_sleep_in=1;
        }

		
# 5106 "..\\src\\app\\demo\\ap_demo.c"

         
        
    }	
}



