import 'dart:typed_data'; import '../../tools/toast.dart'; import 'udp_talkClass.dart'; class CommandUDPReciverManager { static void appDataReceive(List data) async { ///解析数据 if(data.isEmpty){ return; } int dataSize = data.length; if(dataSize < 4){ return; } // print("appDataReceiveData:$data"); Uint8List data1 = Uint8List.fromList(data); if(data1.length==1){ if(data[0]==0x30 || data[0]==0x31){ print("p2p打洞"); } } if (data[6] == 4) { if(data[7] == 2){ print("心跳包反馈 在线状态"); } else if(data[7]==3) { [Toast.show(msg: "您已在其他设备登录")]; } } else if (data[6] == 150) { // if( [Pub getApp].isBack){ // [_udp receiveWithTimeout:-1 tag:0]; // return YES; // } // 对讲命令 // var beiCallType = data[8] & 0xff; var beiCallType = 1 & 0xff; print("被呼叫2 类型$beiCallType"); switch (beiCallType) { case 1:{ //被叫 UDPTalkClass().beCallW(data: data); } break; case 6:{ //接听 if((data[7] & 0x3) == 2){//被叫 接听反馈 print("接听反馈"); } } break; case 7: case 8:{//音视频数据 //print("音视频数据"); } break; case 9:{ if((data[7] & 0x3) == 1){//对方保持连接 //print("对方保持连接"); data[7] = 2; } else{ //print("保持连接反馈"); } } break; case 10:{ //开门反馈 if((data[7] & 0x3) == 2){ print("开门成功"); } else{ } } break; case 30:{ //开门反馈 if((data[7] & 0x3) == 1){ //对方结束对讲 print("对方结束对讲"); } else{ //结束对讲反馈 print("结束对讲反馈"); } } break; case 140:{ // p2p测试 } break; case 141:{ // p2p测试 } break; case 142:{ // p2p测试 } break; case 143:{ //p2p测试 NSAsk print("p2pNSAskNSAsk"); } break; default: break; } } else if (data[6] == 152) { // 监视命令 switch (data[8] & 0xff) { case 2:{ //被叫 print("对方忙"); } break; case 4:{ //监视成功 print("监视成功"); } break; case 7: case 8:{//音视频数据 //print("音视频数据"); } break; case 9:{ //保持连接 if((data[7] & 0x3) == 1){//对方保持连接 //print("对方保持连接"); data[7] = 2; } else{ //print("保持连接反馈"); } } break; case 10:{ //开门反馈 if((data[7] & 0x3) == 2){ print("开门成功"); } else{ } } break; case 30:{ // 监视结束 if((data[7] & 0x3) == 1){ // 对方结束监视 print("对方结束监视"); } else{ //结束对讲反馈 print("结束监视反馈"); } } break; default: break; } } } }