hook.c 4.6 KB

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