hook.c 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. #include "includes.h"
  2. #include "hook.h"
  3. //////////低功耗控制钩子功能/////////////////////
  4. unsigned int pwrSaveTick;
  5. unsigned char sendEnableNow=0;
  6. unsigned char QueryTime=10;//查询时间 QueryTime/2
  7. unsigned char QueryTick=0;//查询时间计时
  8. unsigned int HeadsetQudou=0;
  9. ASSIST_DEF uiAssist;
  10. void enableDataSend(void)
  11. {
  12. //此刻可以发GPS数据啦,我们让接下来2秒内可以发心跳或GPS位置包,我们只限制这两个就好了
  13. uTimerStart(&pwrSaveTick,200);
  14. sendEnableNow=1;
  15. SlwTrace(INF, "Send enable",1);
  16. }
  17. char isSendDataEnable(void)
  18. {
  19. if(hgs_poc_type == POC_BND) return 1;//西安POC的话,就一直返回yes,不存在低功耗操作
  20. if(newPara.pwrMode == 1) return 1;//常规模式就一直返回yes
  21. if(sendEnableNow==0) return 0;
  22. else return 1;
  23. }
  24. void powerSaveHandle(void)
  25. {
  26. if(sendEnableNow==0) return;
  27. if(uTimerExpired(&pwrSaveTick)==0) return; //未超时返回
  28. sendEnableNow=0;
  29. SlwTrace(INF, "Send disable",1);
  30. }
  31. void SwitchGroupCtrl(void)
  32. {
  33. if(m_GroupSwitch)
  34. {
  35. if(++m_GroupSwitchCnt >=5)
  36. {
  37. //MeSpeak(ENCODE_ASCII, "CDCBB3F6", 0);
  38. if(sutUIstatus.Status == UIS_STANDBY)
  39. ShowButton(1,107,"菜单");
  40. m_GroupSwitch=0;
  41. SlwTrace(INF, "QuitGroupSel",1);
  42. }
  43. }
  44. }
  45. void SwitchGroupPre(void)
  46. {
  47. //让菜单变成:确定
  48. ShowButton(1,107,"确定");
  49. m_GroupSwitch=1;
  50. m_GroupSwitchCnt=0;
  51. }
  52. void SwitchVoicePre(char type)
  53. {
  54. char buf[20];
  55. //GuiDrawRect(29,110,128,126,1);
  56. GuiClearRect(29,110,90,126);
  57. switch(m_VoiceStep)
  58. {
  59. case 0:
  60. m_VoiceStep=1;
  61. break;
  62. case 1:
  63. if(type)
  64. {
  65. if(newPara.VolumLv<9)newPara.VolumLv++;
  66. }else{
  67. if(newPara.VolumLv>0){
  68. newPara.VolumLv--;
  69. // if(m_VoiceSwitchCnt<=2)GuiFillRect(29+1+newPara.VolumLv*10,110+1,127,126-1,COLOR_WHITE_BACK);
  70. // printf("newPara.VolumLv===%d\r\n",newPara.VolumLv);
  71. }
  72. }
  73. break;
  74. }
  75. //GuiFillRect(29,110+1,29+newPara.VolumLv*10-1,126-1,COLOR_BLUE);
  76. GuiShowBmp(29,110,"volume.bmp");
  77. snprintf(buf,sizeof(buf),"音量 %d",newPara.VolumLv);
  78. GuiShowStr(45,110,buf,1,0);
  79. snprintf(buf,sizeof(buf),"AT+CLVL=%d\r\n",newPara.VolumLv*10);
  80. ModemSendAt(buf);
  81. if(hgs_poc_type==POC_OWN){
  82. snprintf(buf,sizeof(buf),"AT+CRSL=%d\r\n",newPara.VolumLv*10);
  83. ModemSendAt(buf);
  84. }else {
  85. if(newPara.KeySound!=0){
  86. snprintf(buf,sizeof(buf),"AT+POC=tonevol=%d\r\n",newPara.VolumLv);
  87. ModemSendAt(buf);
  88. }
  89. snprintf(buf,sizeof(buf),"AT+POC=ttsvol=%d\r\n",(newPara.VolumLv));
  90. ModemSendAt(buf);
  91. }
  92. m_VoiceSwitch=1;
  93. m_VoiceSwitchCnt=0;
  94. }
  95. void SwitchVoiceCtrl(void)
  96. {
  97. if(m_VoiceSwitch)
  98. {
  99. if(++m_VoiceSwitchCnt >=2)
  100. {
  101. if(sutUIstatus.Status == UIS_STANDBY){
  102. //GuiClearRect(29,110,128,126);//GuiDrawRect(29,50+50,128,66+50,1);
  103. GuiClearRect(29,110,90,126);
  104. ModifyConfigureFile(0);
  105. m_VoiceSwitch=0;
  106. m_VoiceStep=0;
  107. SlwTrace(INF, "QuitVoiceSel",1);
  108. }
  109. }
  110. }
  111. }
  112. void HeadsetProcess(void)
  113. {
  114. static signed char HeadsetStatue=0;//-2
  115. static signed char HeadseLastStatue=0;//-3
  116. if(INTERNAL_HEADSET==1) return;
  117. if(SET==GPIO_ReadInputDataBit(HEADSET_PORT,HEADSET_PIN))HeadsetStatue=1;
  118. else HeadsetStatue=-1;
  119. if(HeadseLastStatue!=HeadsetStatue){
  120. if(HeadsetStatue==1){
  121. printf("耳机接入---\r\n");
  122. ModemSendAt("AT+AUDCH=1,3\r\n");
  123. sutPocStatus.HeadSetPtt=1;
  124. uTimerStart(&HeadsetQudou,300);
  125. }
  126. else {
  127. printf("耳机拔出---\r\n");
  128. ModemSendAt("AT+AUDCH=0,0\r\n");
  129. sutPocStatus.HeadSetPtt=0;
  130. uTimerStart(&HeadsetQudou,300);
  131. }
  132. HeadseLastStatue=HeadsetStatue;
  133. }
  134. }
  135. //开机后的一些控制
  136. void onStartCtl(void){
  137. KeyCount();
  138. SwitchGroupCtrl();
  139. SwitchVoiceCtrl();
  140. if(newPara.lcdParaList[newPara.lcdParaDefaultIndex]>0){
  141. if(++LcdOnTimeCt>=newPara.lcdParaList[newPara.lcdParaDefaultIndex]){
  142. LcdOnTimeCt=0;
  143. if(sutPocStatus.FirstLogined==0){
  144. LCDBackLight(1);//没登陆过(刚开机),LCD一直亮着//0
  145. }else LCDBackLight(0);
  146. }
  147. }
  148. }
  149. void AtRequest()
  150. {
  151. static char step=0;
  152. switch(step)
  153. {
  154. case 0:
  155. break;
  156. }
  157. }
  158. void UiassistStart(unsigned char type){
  159. uiAssist.type=type;
  160. uiAssist.machine=0;
  161. uiAssist.status=1;
  162. }
  163. void UiassistEnd(unsigned char type){
  164. uiAssist.type=type;
  165. uiAssist.machine=0;
  166. uiAssist.status=0;
  167. assistResult=0;
  168. }
  169. unsigned char assistResult=0;
  170. unsigned char getAssistResult(void){
  171. unsigned char ret=0;
  172. ret=assistResult;
  173. if(assistResult) assistResult=0;
  174. return ret;
  175. }
  176. PT_THREAD (ptUIAssist(struct pt *pt)){
  177. static timer_t ptTimer;
  178. PT_BEGIN(pt);
  179. while(1){
  180. if(uiAssist.status!=0){
  181. switch(uiAssist.type){
  182. case 0: // //刚进入
  183. switch(uiAssist.machine){
  184. case 0:
  185. if(SimpleUserInfoScan(1, 2)){//操作完成了
  186. printf("获取成功了---\r\n");
  187. assistResult=1;
  188. uiAssist.status=0;
  189. }
  190. break;
  191. }
  192. break;
  193. case 1: //上翻
  194. switch(uiAssist.machine){
  195. case 0:
  196. if(SimpleUserInfoScan(0,0)){
  197. assistResult=1;
  198. uiAssist.status=0;
  199. }
  200. break;
  201. }
  202. break;
  203. case 2: //下翻
  204. switch(uiAssist.machine){
  205. case 0:
  206. if(SimpleUserInfoScan(0,1)){
  207. assistResult=1;
  208. uiAssist.status=0;
  209. }
  210. break;
  211. }
  212. break;
  213. }
  214. }
  215. PTTimerStart(&pt_timerPool, &ptTimer, 1);//1
  216. PT_WAIT_UNTIL(pt, PTTimerIsExpired(&ptTimer));
  217. }
  218. PT_END(pt);
  219. }