bndapp.c 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. #include "broad.h"
  2. #include "type.h"
  3. #include "lsapi_oem.h"
  4. #include "lsapi_sys.h"
  5. #include "lsapi_os.h"
  6. #include "includes.h"
  7. #include "bndapp.h"
  8. #include "oem_lib.h"
  9. static void get_grouplist(int begin, int count);
  10. static void get_memberlist(int begin, int count);
  11. static int ui_random(int r){
  12. return 1;
  13. }
  14. /*通知登录状态*/
  15. void cb_login_state(int online){
  16. const char* str;
  17. if(online == USER_ONLINE){
  18. str = "USER_ONLINE";
  19. }
  20. else{
  21. str = "USER_OFFLINE";
  22. sutPocStatus.logined=0;
  23. }
  24. MSG_INFO(1,"loginstate==%s",str);
  25. }
  26. void cb_audio(AUDIO_STATE state, uid_t uid, const char* name, int flag){
  27. const char* str;
  28. size_t len;
  29. switch(state){
  30. case BND_SPEAK_START:
  31. str = "BND_SPEAK_START";
  32. sutPocStatus.mic=1;
  33. //MSG_INFO(1,str);
  34. break;
  35. case BND_SPEAK_STOP:
  36. str = "BND_SPEAK_STOP";
  37. paControl(true);
  38. sutPocStatus.mic=0;
  39. //MSG_INFO(1,str);
  40. break;
  41. case BND_LISTEN_START:
  42. str = "BND_LISTEN_START";
  43. sutPocStatus.spk=1;
  44. //spkCtl(1);
  45. paControl(true);
  46. break;
  47. case BND_LISTEN_STOP:
  48. str = "BND_LISTEN_STOP";
  49. sutPocStatus.spk=0;
  50. //spkCtl(0);
  51. break;
  52. case BND_TTS_START:
  53. paControl(true);
  54. sutPocStatus.TTS=1;
  55. break;
  56. case BND_TTS_STOP:
  57. paControl(true);
  58. sutPocStatus.TTS=0;
  59. MSG_INFO(1, "TTS---STOP");
  60. break;
  61. case BND_TONE_START:
  62. paControl(true);
  63. sutPocStatus.TONE=1;
  64. break;
  65. case BND_TONE_STOP:
  66. paControl(true);
  67. sutPocStatus.TONE=0;
  68. break;
  69. }
  70. // MSG_INFO(1,"stat=====%d",state);
  71. if(name!=NULL){
  72. backLightReset();
  73. tryWakeupApp();
  74. Utf8ToGbkOrUnicode(name,strlen(name),&sutPocStatus.CallName,&len,0);
  75. MSG_INFO(1,"state:%d[%s],uid:%d,len:%d,name:%s,flag:%d",state,str, uid,len,&sutPocStatus.CallName, flag);
  76. }
  77. }
  78. /*通知进入群组*/
  79. static bnd_member_t mm;
  80. static bnd_group_t GG;
  81. static char PlayTTSBuf[100]={0};
  82. void my_update(char *groupname,unsigned int gid){
  83. char len,i;
  84. char *Login="E5B7B2E799BBE5BD952C";
  85. char *EnterGroup="E8BF9BE585A52C";
  86. char tempbuf[12];
  87. if(groupname==NULL)return;
  88. memset(&mm,0,sizeof(mm));
  89. if(Utf8ToGbkOrUnicode(groupname,strlen(groupname),&sutPocStatus.LocalGroup.name,&len,0)){
  90. //MSG_INFO(1,"change erro-----");
  91. }
  92. //MSG_INFO(1,"groupname===%s",sutPocStatus.LocalGroup.name);
  93. sutPocStatus.LocalGroup.ID=gid;
  94. //MSG_INFO(1,"sutPocStatus.LocalGroup.ID22222222===%08x",sutPocStatus.LocalGroup.ID);
  95. //如果gid传入0,可查询当前群组信息
  96. broad_group_getbyid(0,&GG);
  97. if(GG.type==GRP_SINGLECALL){
  98. sutPocStatus.danHuStatus=1;
  99. }else{
  100. sutPocStatus.danHuStatus=0;
  101. }
  102. // MSG_INFO(1,"joinGroup==%d,%d,%s",gid,len,sutPocStatus.LocalGroup.name);
  103. broad_member_getbyid(0,&mm);
  104. if(Utf8ToGbkOrUnicode(mm.name,strlen(mm.name),&sutPocStatus.LocalUser.name,&len,0)){
  105. // MSG_INFO(1,"change erro-----");
  106. }
  107. // MSG_INFO(1,"joinmember==%s,uid===%d",&sutPocStatus.LocalUser.name,mm.uid);
  108. //群组登录成功为登陆标准
  109. sutPocStatus.logined=1;
  110. if(!sutPocStatus.firstLogin){
  111. //首次登陆播报群组和成员
  112. StrAsciiToHex(Login,tempbuf);
  113. snprintf(PlayTTSBuf, sizeof(PlayTTSBuf),"%s%s%s",mm.name,tempbuf,groupname);
  114. broad_play_tts(PlayTTSBuf,true);
  115. backLightReset();
  116. }else {
  117. //切换群组播报
  118. StrAsciiToHex(EnterGroup,tempbuf);
  119. snprintf(PlayTTSBuf, sizeof(PlayTTSBuf),"%s%s",tempbuf,groupname);
  120. broad_play_tts(PlayTTSBuf,true);
  121. }
  122. sutPocStatus.firstLogin=1;
  123. // LSAPI_OSI_ThreadSleep(500);
  124. MSG_INFO(1,"LocalGroup.ID333===%08x",gid);
  125. }
  126. void cb_join_group(const char* groupname, gid_t gid){
  127. #if 0
  128. bnd_member_t mm;
  129. bnd_group_t GG;
  130. char len,i;
  131. char PlayTTSBuf[100]={0};
  132. char *Login="E5B7B2E799BBE5BD952C";
  133. char *EnterGroup="E8BF9BE585A52C";
  134. char tempbuf[10];
  135. //char p[]={0xE7,0xBE,0xA4, 0xE7, 0xBB, 0x84, 0xE5 ,0x85,0xAB,0x00};
  136. memset(&mm,0,sizeof(mm));
  137. if(Utf8ToGbkOrUnicode(groupname,strlen(groupname),&sutPocStatus.LocalGroup.name,&len,0)){
  138. MSG_INFO(1,"change erro-----");
  139. }
  140. sutPocStatus.LocalGroup.ID=gid;
  141. /*
  142. MSG_INFO(1,"groupname2len===%d",strlen(groupname));
  143. MSG_INFO(1,"len===%d",len);
  144. */
  145. //如果gid传入0,可查询当前群组信息
  146. broad_group_getbyid(0,&GG);
  147. if(GG.type==GRP_SINGLECALL){
  148. sutPocStatus.danHuStatus=1;
  149. }else{
  150. sutPocStatus.danHuStatus=0;
  151. }
  152. MSG_INFO(1,"joinGroup==%d,%d,%s",gid,len,&sutPocStatus.LocalGroup.name);
  153. broad_member_getbyid(0,&mm);
  154. if(Utf8ToGbkOrUnicode(mm.name,strlen(mm.name),&sutPocStatus.LocalUser.name,&len,0)){
  155. MSG_INFO(1,"change erro-----");
  156. }
  157. MSG_INFO(1,"joinmember==%s,uid===%d",&sutPocStatus.LocalUser.name,mm.uid);
  158. //群组登录成功为登陆标准
  159. sutPocStatus.logined=1;
  160. if(!sutPocStatus.firstLogin){
  161. //首次登陆播报群组和成员
  162. // snprintf(PlayTTSBuf, sizeof(PlayTTSBuf),"%s已登录,%s",sutPocStatus.LocalUser.name,sutPocStatus.LocalGroup.name);
  163. // ttsPlay(ENCODE_USER_ASCII,PlayTTSBuf);
  164. StrAsciiToHex(Login,tempbuf);
  165. snprintf(PlayTTSBuf, sizeof(PlayTTSBuf),"%s%s%s",mm.name,tempbuf,groupname);
  166. broad_play_tts(PlayTTSBuf,true);
  167. backLightReset();
  168. }else {
  169. //切换群组播报
  170. // snprintf(PlayTTSBuf, sizeof(PlayTTSBuf),"进入,%s",sutPocStatus.LocalGroup.name);
  171. //ttsPlay(ENCODE_USER_ASCII,PlayTTSBuf);
  172. StrAsciiToHex(EnterGroup,tempbuf);
  173. snprintf(PlayTTSBuf, sizeof(PlayTTSBuf),"%s%s",tempbuf,groupname);
  174. broad_play_tts(PlayTTSBuf,true);
  175. }
  176. sutPocStatus.firstLogin=1;
  177. #endif
  178. int i;
  179. i++;
  180. my_update(groupname,(unsigned int)gid);
  181. }
  182. /*呼叫结果*/
  183. void cb_callmember(int ret){
  184. const char* str;
  185. if(ret==1){
  186. str = "call sucess";
  187. }else{
  188. str = "call failed";
  189. }
  190. MSG_INFO(1, "BND cb_callmember%s",str);
  191. }
  192. /*通知需要更新列表*/
  193. void cb_listupdate(int flag){
  194. const char* str;
  195. bnd_member_t mm;
  196. char num;
  197. if(flag==1){
  198. str = "you need get grouplist -- update";
  199. //get_grouplist(0,10);
  200. }else if(flag==2){
  201. str = "you need get memberlist -- update";
  202. if(num=broad_get_memberlist(sutPocStatus.LocalGroup.ID,&mm, 16, 0, 1)){
  203. //sutPocStatus.danHuStatus=0; //210623
  204. }
  205. MSG_INFO(1, "BND cb_listupdate----num===%d",num);
  206. }
  207. MSG_INFO(1, "BND cb_listupdate%s",str);
  208. }
  209. /*成员变化通知*/
  210. /*
  211. flag:1 离组
  212. gid:变化的gid
  213. num:个数
  214. uids:uid集合
  215. */
  216. void cb_memberchange(int flag, gid_t gid, int num, uid_t uids){
  217. const char* str;
  218. if(flag==1){
  219. MSG_INFO(1, "BND cb_memberchange_flag[%d]_gid[%d]_num[%d]_uids[%ld]",flag,gid,num,uids);
  220. }
  221. }
  222. bnd_time_t now_time;
  223. /*获取当前时间戳*/
  224. void current_zone_time(MY_CLOCK *myclock)
  225. {
  226. char buffer[128] = {0};//打印128个字节会挂掉
  227. memset(&now_time, 0, sizeof(now_time));
  228. broad_current_zone_time(&now_time, 8);
  229. myclock->year=now_time.year;
  230. myclock->month=now_time.month;
  231. myclock->day=now_time.day;
  232. myclock->hour=now_time.hour;
  233. myclock->min=now_time.minute;
  234. myclock->sec=now_time.second;
  235. }
  236. void cb_error_det(const char* info){
  237. MSG_INFO(1,"error---det");
  238. broad_play_tts(info,true);
  239. }
  240. void UserGetBNDVer(char *VerSrc){
  241. char flag=0;
  242. char *p=0;
  243. char i;
  244. for(i=0;i<strlen(VerSrc);i++){
  245. if(VerSrc[i]=='-'){
  246. if(flag==0){
  247. flag=1;
  248. i++;
  249. p=&VerSrc[i];
  250. }else{
  251. VerSrc[i]=0;
  252. break;
  253. }
  254. }
  255. }
  256. strncpy(sutApp.pocVersion, p,strlen(p));
  257. }
  258. void UserGetBNDICCID(char *Src){
  259. char tmp[10];
  260. char flag=0;
  261. char *p=0;
  262. char i;
  263. char j=0;
  264. for(i=0;i<strlen(Src);i++){
  265. sutApp.ICCID[i]=Src[i];
  266. if(Src[i]==0x0d){
  267. sutApp.ICCID[i]=0;
  268. break;
  269. }
  270. }
  271. sutApp.ICCID[19]=0;
  272. }
  273. void ls_getModuleInfo_demo()
  274. {
  275. char Module[32];
  276. LSAPI_Log_Debug("enter ls_getModuleInfo_demo!");
  277. memset(Module, 0x00, 32);
  278. LSAPI_SYS_getModuleType(Module);
  279. MSG_INFO(1,"ls_getModuleInfo_demo:ModuleType %s", Module);
  280. memset(Module, 0x00, 32);
  281. LSAPI_SYS_getModuleVersion(Module);
  282. MSG_INFO(1,"ls_getModuleInfo_demo:ModuleVersion %s", Module);
  283. memset(Module, 0x00, 32);
  284. LSAPI_SYS_getModulebtime(Module);
  285. MSG_INFO(1,"ls_getModuleInfo_demo:Modulebtime %s", Module);
  286. }
  287. static int mm_index = 0;
  288. static int group_index = 0;
  289. static int rec_index = 0;
  290. int open_bnd_app(void){
  291. char ver[64] = {0};
  292. char *p=0;
  293. char str[20]={0};
  294. broad_init();
  295. broad_log(1);
  296. broad_get_version(ver);
  297. broad_register_audio_cb(cb_audio);
  298. splVolumeSet(newPara.spkVol*10);
  299. // //设置一下TTS语音速度
  300. // msgAtSend("AT+LSHTTSPARAM=3000,106,100\r\n");//设置TTS参数
  301. broad_set_rec_audio_mode(0);//关闭录音功能
  302. broad_register_join_group_cb(cb_join_group);
  303. broad_register_listupdate_cb(cb_listupdate);
  304. broad_register_member_change_cb(cb_memberchange);
  305. broad_set_is_destroy_temp_call(1);
  306. //错误状态返回
  307. broad_register_error_cb(cb_error_det);
  308. //broad_register_poc_at_cb(cb_poc_at_cb);//注册接收回调
  309. broad_set_tts_enable(1);//测试是否主动播报TTS
  310. LSAPI_OSI_ThreadSleep(1000);
  311. broad_login(cb_login_state);
  312. MSG_INFO(1, "BND app init--%s",ver);
  313. UserGetBNDVer(ver);
  314. memset(ver, 0, sizeof(ver));
  315. //if(LSAPI_SIM_GetICCID(ver)==0)UserGetBNDICCID(ver);
  316. //broad_get_vol(VOL_TYPE type);
  317. //获取帐号可用天数
  318. sutApp.VailDay= broad_get_account_day();
  319. MSG_INFO(1, "BND day--%d",sutApp.VailDay);
  320. //echat_write_ini
  321. // 旧平台
  322. if(!newPara.newold_plam)broad_write_custom(CHANGE_PLATFORM_CONTEXT,"std");
  323. else broad_write_custom(CHANGE_PLATFORM_CONTEXT,"xin");
  324. broad_read_custom(CHANGE_PLATFORM_CONTEXT,str);
  325. MSG_INFO(1, "BND PingTai--%s",str);
  326. sutApp.bndPocDone=1;
  327. return 0;
  328. }
  329. static void get_memberlist(int begin, int count){
  330. bnd_group_t grp;
  331. bnd_member_t mm[16];
  332. memset(&grp,0, sizeof(bnd_group_t));
  333. broad_group_getbyid(0, &grp);
  334. MSG_INFO(1,"long_ung gid:%d, gname:%s\n",grp.gid, grp.name);
  335. if(grp.gid){
  336. int size;
  337. size = broad_get_membercount(grp.gid);
  338. MSG_INFO(1,"long_ung member num:%d\n",size);
  339. memset(mm, 0, sizeof(bnd_member_t)*16);
  340. size = broad_get_memberlist(grp.gid, mm, 16, begin, count);
  341. if(size){
  342. int i;
  343. for(i=0;i<size;i++){
  344. MSG_INFO(1,"long_ung [%d]uid:%d,name:%s\n",mm[i].index,mm[i].uid, mm[i].name);
  345. }
  346. }
  347. MSG_INFO(1,"long_ung member-size:%d\n", size);
  348. }
  349. }
  350. static void get_grouplist(int begin, int count){
  351. int size;
  352. bnd_group_t groups[16];
  353. memset(groups,0,sizeof(bnd_group_t)*16);
  354. size = broad_get_grouplist(groups, 16, begin, count);
  355. if(size){
  356. int i;
  357. for(i=0;i<size;i++){
  358. MSG_INFO(1,"long_ung [%d]gid:%d,name:%s\n",groups[i].index,groups[i].gid, groups[i].name);
  359. }
  360. }
  361. MSG_INFO(1,"long_ung group-count:%d\n",size);
  362. }