ZXPocTask.h 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. #ifndef __ZXPOCTASK_H
  2. #define __ZXPOCTASK_H
  3. #include <rtl.h>
  4. #define MCU_R_CFG_MODE_STR 100 //PC应答进入配置磨砂
  5. #define MCU_R_SET_PARAM_STR 101 //上位机配置参数命令
  6. #define MCU_R_GET_PARAM_STR 102 //上位机获取当前配置参数命令
  7. #define MCU_R_POC_RESTART 103//重启POC
  8. #define MCU_R_GET_VER_STR 109 //获取单片机的版本号
  9. #define MCU_R_LED_STR 110 //设置LED
  10. #define MCU_R_AMP_ON_STR 111 //打开功放
  11. #define MCU_R_AMP_OFF_STR 112 //关闭功放
  12. #define MCU_R_APP_START_STR 113 //启动成功
  13. #define MCU_R_GET_BATVOL_STR 114 //获取电池电压值
  14. #define MCU_R_ENABLE_GPS_STR 117 //使能GPS
  15. #define MCU_R_DISABLE_GPS_STR 118 //关闭GPS
  16. #define MCU_R_TRANS_AT_CMD_STR 119 //转发AT指令
  17. #define MCU_R_VERSION_STR_STR 120 //获取模块版本号
  18. #define MCU_R_POWEROFF_CMD_STR 121 //关闭命令
  19. #define MCU_R_JION_RET_STR 129 //入群结果
  20. #define MCU_R_GET_GNUM_STR 132 //群组数量
  21. #define MCU_R_GET_GP_STATE_STR 133 //群组状态
  22. #define MCU_R_GET_GP_LIST_STR 134 //群组列表
  23. #define MCU_R_GET_UNUM_STR 135 //用户数量
  24. #define MCU_R_GET_LUS_LIST_STR 137 //在线用户列表
  25. #define MCU_R_TIME_STR 140 //网络时间
  26. #define MCU_R_GET_REC_NUM_STR 150 //获取群组录音个数
  27. #define MCU_R_GET_REC_LIST_STR 151 //录音文件列表
  28. #define MCU_R_PLAY_REC_STR 152 //播放录音文件状态
  29. #define MCU_R_PUSH_SELF_INFO_STR 200 //用户自己的信息
  30. #define MCU_R_PUSH_ONOFFLINE_STR 201 //在线离线消息
  31. #define MCU_R_PUSH_UPDATE_STR 202 //固件升级专题
  32. #define MCU_R_PUSH_GP_STATE_STR 203 //群组变化状态
  33. #define MCU_R_PUSH_US_STATE_STR 204 //推送好友状态变化
  34. #define MCU_R_PUSH_PTT_RES_STR 205 //推送PTT说话状态
  35. #define MCU_R_PUSH_SPEAK_STR 206 //推送被叫 说话状态
  36. #define MCU_R_PUSH_P2PCALL_STR 207 //推送单呼 主叫状态
  37. #define MCU_R_PUSH_P2PBCALL_STR 208 //推送单呼 被叫状态
  38. #define MCU_R_PUSH_TMP_GROUP_STR 209 //切换到临时 群组
  39. #define MCU_S_MCU_OK_STR 500 //上电工作
  40. #define MCU_S_CFG_MODE_OK 501 //应答PC进入配置模式
  41. #define MCU_S_SET_P_OK_STR 503 //返回设置参数成功
  42. #define MCU_S_SET_P_FD_STR 505 //返回设置参数失败
  43. #define MCU_S_GET_P_OK_STR 504 //返回参数数据
  44. #define MCU_S_GET_P_FD_STR 506 //返回获取参数失败
  45. #define MCU_S_MY_VERSION 507 //返回单片机版本
  46. #define MCU_S_GET_VERSION 508 //获取模块固件版本号
  47. #define MCU_S_GET_TIME 509 //获取GMT时间
  48. #define MCU_S_SET_TIME 510 //设置当前时间
  49. #define MCU_S_OGPS_DATA_STR 523 //GPS原始数据
  50. #define MCU_S_AGPS_DATA_STR 525 //GPS解析后的数据
  51. #define MCU_S_JION_GROUP_STR 529 //入群命令
  52. #define MCU_S_GET_GNUM_STR 532 //获取群组数量
  53. #define MCU_S_GET_GP_STATE_STR 533 //获取群状态
  54. #define MCU_S_GET_GP_LIST_STR 534 //获取群组列表
  55. #define MCU_S_GET_UNUM_STR 535 //获取用户数量
  56. #define MCU_S_GET_AUS_LIST_STR 536 // 获取所有用户列表
  57. #define MCU_S_GET_LUS_LIST_STR 537 //获取在线用户列表
  58. #define MCU_S_PTT_CALL_STR 538 //PTT呼叫
  59. #define MCU_S_SOS_CALL_STR 539 //SOS呼叫
  60. #define MCU_S_P2P_CALL_STR 540 //单呼命令
  61. #define MCU_S_UPDATE_STR 542 //固件升级
  62. #define MCU_S_GET_REC_NUM_STR 550 //获取群组录音文件个数
  63. #define MCU_S_GET_REC_LIST_STR 551 //获取群组录音文件列表
  64. #define MCU_S_PLAY_REC_STR 552 //开始播放录音文件
  65. #define MCU_S_STOP_REC_STR 553//停止播放录音文件
  66. char ZXPocHandle(char *msg,int MsgLen);
  67. //#define POC_TASK_STK_SIZE 1024/8
  68. extern OS_TID idPocTask;
  69. //extern U64 stkPocTask[POC_TASK_STK_SIZE];
  70. extern int g_iModemVer;
  71. extern char g_iPocVer[15];
  72. #define POC_USER_ID_LEN 9 //8+1 9
  73. #define POC_GROUP_ID_LEN 9 //8+1
  74. #define POC_USER_ONLINE_LIST_LEN 300
  75. #define POC_USER_NAME_LEN 36//24 //用户名长度
  76. #define POC_GROUP_NAME_LEN 36//24 //群组名长度
  77. #define POC_ALL_USERS_NUM 5//只需要装与显示时一页的数LIST_ROW就够了,采用动态更新方式
  78. #define POC_ALL_GROUPS_NUM 5 //本机所属的所有群组的个数 //100
  79. #define POC_ALL_VOICES_NUM 5 //5
  80. typedef struct{
  81. unsigned long ID;
  82. char status;//0 离线 1--在线(不在此群组) 2--在线(在此群组)
  83. char name[POC_USER_NAME_LEN];
  84. }SUT_POC_USER;
  85. typedef struct{
  86. unsigned long ID;
  87. unsigned short usernum;//组内成员个数
  88. char name[POC_GROUP_NAME_LEN];
  89. }SUT_POC_GROUP;
  90. typedef struct{
  91. unsigned char ID;
  92. unsigned char time;
  93. unsigned char type;// 0 呼出 1呼入
  94. char name[POC_USER_NAME_LEN];
  95. }SUT_POC_VOICE;
  96. typedef struct{
  97. unsigned char Logined;//POC登陆状态 0--未登录 1--已登陆
  98. unsigned char FirstLogined;//首次登陆标志 0--未登陆 1--第一次已登陆
  99. unsigned char Speaker; //远程说话标志 1有人说 0无人说
  100. unsigned char TTS; //TTS播报标志 1有播报 0无播报
  101. unsigned char Mic; //Mic 0--关闭 1--打开
  102. unsigned char ModemPowerOn;//1--模块已上电 0--模块未上电
  103. unsigned char PPTpress;//PPT
  104. unsigned char ModemInactiveCt;//当模块启动后,每秒加1,收到模块AT则清零,当加到一定数值仍不清零则重启模块及UART。
  105. unsigned short PocLostCt;//当模块首次登陆系统后,如果再离线开始计数,每秒加1,直到模块再次登陆POC系统才清零,当加到一定数值仍不清零则重启模块及UART
  106. unsigned short UserOnLineNum;//组内在线成员个数
  107. unsigned short GroupOnLineNum;//组内在线群组个数
  108. unsigned short VoiceOnLineNum;
  109. //unsigned short UserOnLineIndex;
  110. //以下用于存储本机用户ID和用户名,本机所处的群组ID和群组明
  111. SUT_POC_USER LocalUser;
  112. SUT_POC_GROUP LocalGroup;
  113. //以下是当前群组所有成员
  114. signed short handleIndex; // unsi
  115. signed short voicehandleIndex;
  116. unsigned char GetOneUserFlag;
  117. unsigned char FillUserIndex;
  118. /**********M20**************/
  119. unsigned char GetOneGroupFlag;
  120. unsigned char FillGroupIndex;
  121. unsigned char GetOneVoiceFlag;
  122. unsigned char FillVoiceIndex;
  123. unsigned char UserNum_Update;
  124. unsigned char GroupNum_Update;
  125. unsigned char VoiceNum_Update;
  126. int GroupsNum;
  127. char Callname[POC_USER_NAME_LEN+4];
  128. unsigned long CallID;
  129. SUT_POC_USER AllUsers[POC_ALL_USERS_NUM];
  130. SUT_POC_GROUP AllGroups[POC_ALL_GROUPS_NUM];
  131. SUT_POC_VOICE AllVoices[POC_ALL_VOICES_NUM];
  132. char switchGroupID[8];
  133. unsigned char danHunStatus;//0 未单呼状态,1 被动单呼。2 主动单呼
  134. unsigned char statusChaned;//用来修复当低优先级用户一直在讲话,不释放,然后被抢麦,
  135. //只要抢麦者释放话语权后,低优先级用户显示出群组名字,再
  136. //被抢麦,都会显示有问题。第二次以后都会。
  137. unsigned char modemRstFlag;
  138. unsigned char loginResult;//登陆状态 0未登陆 1账号信息错误 2无网络连接 3 登陆成功 4 请插卡
  139. unsigned char SOS_Flag;
  140. unsigned char Page_Up;
  141. unsigned char Top_Index;
  142. //unsigned char Tail_Index;
  143. unsigned char PocingCnt;// 正在被呼 用于 被呼UI跳转主界面
  144. unsigned char keypressCnt; //时间 返回主界面
  145. unsigned char recordflag; //语音记录标志
  146. unsigned int recordID;
  147. unsigned char Prepare; //准备
  148. unsigned char Modeminited;
  149. }SUT_POC_STATUS;
  150. extern SUT_POC_STATUS sutPocStatus;
  151. //---------------------------------------------------------------------------------
  152. #define POC_CMD_PPT_START "AT+POC=538&1\r\n" //开始讲话,按下PTT键
  153. #define POC_CMD_PPT_STOP "AT+POC=538&2\r\n" //结束讲话,松开PTT键
  154. #define POC_CMD_UP "AT+POC=10000007\r\n" //选组上键
  155. #define POC_CMD_DOWN "AT+POC=10000008\r\n" //选组下键
  156. #define POC_CMD_USER_SUM "AT+POC=535\r\n" //获取成员总数
  157. #define POC_CMD_GROUP_SUM "AT+POC=532\r\n" //获取群组总数
  158. #define POC_SOS "AT+POC=539\r\n"
  159. #define PC_Shake_hand_OK "AT+POC=501\r\n" //MCUPC- 握手成功
  160. #define PC_SETOK "AT+POC=503\r\n" //返回设置参数成功
  161. #define RF_TEST "AT+POC=605\r\n" //综测
  162. //#define POC_danhu_Hang_up "AT+POC=540&2&5219872"//主呼 挂断
  163. __task void PocTask(void);
  164. char PocHandle(char *msg);
  165. int GBKTostr(char *src,char *dec,short maxlen);
  166. unsigned char StringCatByNumb(char *msg,char numb,char *string);
  167. void LoginPocInfo();
  168. extern unsigned long g_ulGroupID;
  169. extern unsigned char g_ucSelect;
  170. #endif