TouchConfig.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. #include "TouchConfig.h"
  2. #include <string.h>
  3. #include "TouchCommon.h"
  4. #include "HidReport.h"
  5. #include "bsp_param.h"
  6. #include "api.h"
  7. #if USBCONFIG
  8. ST_CONFIG const_config ={
  9. 24,//sizeof(ST_CONFIG) - 13,//0x18 + 10,
  10. EN_USB_UART,
  11. 0,
  12. 0,
  13. 0,
  14. EN_MULTITOUCH_ONLY,
  15. EN_UART_PROTOCAL_10, //0x60
  16. 0x27,
  17. 0xC6,
  18. 0x09,
  19. 0x28,
  20. 0,
  21. 0,
  22. 0,
  23. 0x08,
  24. 0x79,
  25. 0x03,
  26. 0x8a,
  27. 0x40,
  28. 0x00, //16384
  29. 0x25,
  30. 0x80, //9600
  31. {0,0,0,0,0,0},
  32. {0,0},
  33. };
  34. __attribute__ ((aligned(4))) ST_CONFIG config;
  35. UINT16 GetCheckSum(PUINT8 cfg)
  36. {
  37. UINT8 i;
  38. UINT16 chk_sum = 0;
  39. for(i = 0; i< cfg[0] - 2; i++)
  40. {
  41. chk_sum += *(cfg + i);
  42. }
  43. return chk_sum;
  44. }
  45. BOOL CheckConfigValid(PUINT8 cfg)
  46. {
  47. UINT16 chk_sum;
  48. UINT16 tmp;
  49. if((cfg[0] == 0) || (cfg[0] > CONFIG_SIZE))
  50. {
  51. PRINT( "CONFIG NG\n" );
  52. return 0;
  53. }
  54. if(cfg[0] <= CONFIG_SIZE)
  55. {
  56. chk_sum = GetCheckSum(cfg);
  57. tmp = cfg[cfg[0] - 2];
  58. tmp = (tmp << 8) + cfg[cfg[0] - 1];
  59. if(chk_sum != tmp)
  60. {
  61. PRINT( "CONFIG CHKSUM ERROR\n" );
  62. return 0;
  63. }
  64. }
  65. return 1;
  66. }
  67. void ConfigInit()
  68. {
  69. UINT16 temp;
  70. PRINT("Load config\r\n");
  71. GetConfigFromFlash((PUINT8)&config);
  72. if(!CheckConfigValid((PUINT8)&config))
  73. {
  74. PRINT("Config invalid\r\n");
  75. {
  76. UINT16 chksum;
  77. PRINT("Reset config\r\n");
  78. config = const_config;
  79. config.len = CONFIG_SIZE;
  80. chksum = GetCheckSum((PUINT8)&config);
  81. //config.check_sum = chksum;
  82. ((PUINT8)&config)[CONFIG_SIZE-2] = chksum >> 8;
  83. ((PUINT8)&config)[CONFIG_SIZE-1] = chksum;
  84. }
  85. SaveConfig((PUINT8)&config);
  86. }
  87. temp = ((UINT16)config.resolution_x_h << 8) + config.resolution_x_l;
  88. if (0 == temp)
  89. {
  90. config.resolution_x_h = 0x40; //16384
  91. config.resolution_x_l = 0x00;
  92. }
  93. temp = ((UINT16)config.resolution_y_h << 8) + config.resolution_y_l;
  94. if (0 == temp)
  95. {
  96. config.resolution_y_h = 0x25; //9600
  97. config.resolution_y_l = 0x80;
  98. }
  99. }
  100. void GetConfigFromFlash(PUINT8 pBuf)
  101. {
  102. bsp_param_read(pBuf, TOUCH_CONFIG_ADDR, sizeof(ST_CONFIG));
  103. }
  104. void SaveConfig(PUINT8 cfg)
  105. {
  106. if(CheckConfigValid(cfg))
  107. {
  108. bsp_param_write(cfg, TOUCH_CONFIG_ADDR, sizeof(ST_CONFIG));
  109. bsp_param_sync();
  110. }
  111. }
  112. UINT32 GetHandsShakeValue(UINT8* buf)
  113. {
  114. UINT8 i;
  115. UINT32 HandsShakeValue = 0x0928;
  116. for(i = 0; i < 16; i++)
  117. {
  118. HandsShakeValue = (HandsShakeValue * 9897) + (buf[i]);
  119. }
  120. return HandsShakeValue;
  121. }
  122. void CheckFlag()
  123. {
  124. //ÓëAP³ÌÐòµÄÎÕÊÖ±ê¼Ç
  125. UINT32 uid[4];
  126. UINT32 hash_flag;
  127. bsp_param_read((UINT8*)&hash_flag, TOUCH_HASH_FLAG_ADDR, 4);
  128. os_spiflash_id_get((UINT8*)uid);
  129. uid[3] = GetHandsShakeValue((UINT8*)uid);
  130. if(hash_flag!=uid[3])
  131. {
  132. //SoftResetChip();
  133. }
  134. }
  135. CHIP_TYPE GetChipTypeFromFlash(void)
  136. {
  137. UINT8 ct;
  138. bsp_param_read((u8 *)&ct, TOUCH_CHIP_TYPE_ADDR, 1);
  139. return ct;
  140. }
  141. void SaveChipTypeToFlash(CHIP_TYPE chip_type)
  142. {
  143. UINT8 ct = chip_type;
  144. bsp_param_write((u8 *)&ct, TOUCH_CHIP_TYPE_ADDR, 1);
  145. bsp_param_sync();
  146. }
  147. #endif