hyl595138788 2 лет назад
Родитель
Сommit
07b306bf5f
81 измененных файлов с 833 добавлено и 65 удалено
  1. BIN
      GWSD对讲应用命令手册V1.4.pdf
  2. BIN
      X6_LS_GWSD.zip
  3. 17 0
      app/GUI/QR_Encode.h
  4. 456 0
      app/GpsData.c
  5. 67 0
      app/GpsData.h
  6. 35 16
      app/app.c
  7. 0 1
      app/app.h
  8. 153 0
      app/mymacro.em
  9. 2 2
      app/ohpoc.h
  10. 83 2
      app/poc.c
  11. 2 44
      app/setting.c
  12. 1 0
      app/setting.h
  13. 17 0
      lib/QR_Encode.h
  14. BIN
      lib/gwsd/version_V1.1.38.rar
  15. BIN
      lib/libqrcode.a
  16. BIN
      公网时代对讲应用命令手册V4.0_new.pdf
  17. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210001_1027/SV6B103.W21.07.1.0T02S1025_M61A_MS5701_OPENPOC_GWSD.pac
  18. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210001_1027/X6_OPEN_GWSD_M5701_V210001_1027.pac
  19. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210001_1027/X6_OPEN_GWSD_M5701_V210001_1027.zip
  20. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210001_1027/ZZDtool.exe
  21. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210001_1027/更新记录.xlsx
  22. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210002_1102/SV6B103.W21.07.1.0T02S1101_M61A_MS5701_OPENPOC_GWSD(1).pac
  23. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210002_1102/X6_OPEN_GWSD_M5701_V210002_1102.pac
  24. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210002_1102/X6_OPEN_GWSD_M5701_V210002_1102.zip
  25. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210002_1102/ZZDtool.exe
  26. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210002_1102/更新记录.xlsx
  27. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210003_1111/SV6B104.W21.07.1.0T02S1109_M62A2_MS5701_OPENPOC.pac
  28. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210003_1111/X6_OPEN_GWSD_M5701_V210003_1111.pac
  29. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210003_1111/X6_OPEN_GWSD_M5701_V210003_1111.zip
  30. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210003_1111/ZZDtool.exe
  31. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210003_1111/更新记录.xlsx
  32. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210004_1124/SV6B104.W21.07.1.0T04S1119_M62A2_MS5701_OPENPOC.pac
  33. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210004_1124/X6_OPEN_GWSD_M5701_V210004_1124.pac
  34. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210004_1124/X6_OPEN_GWSD_M5701_V210004_1124.zip
  35. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210004_1124/ZZDtool.exe
  36. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210004_1124/更新记录.xlsx
  37. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210005_1125/SV6B104.W21.07.1.0T04S1119_M62A2_MS5701_OPENPOC.pac
  38. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210005_1125/X6_OPEN_GWSD_M5701_V210005_1125.pac
  39. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210005_1125/X6_OPEN_GWSD_M5701_V210005_1125.zip
  40. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210005_1125/ZZDtool.exe
  41. BIN
      发布版本/X6_OPEN_GWSD_M5701_V210005_1125/更新记录.xlsx
  42. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220001_0105/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac
  43. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220001_0105/X6_OPEN_GWSD_M5701_V220001_0105.pac
  44. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220001_0105/X6_OPEN_GWSD_M5701_V220001_0105.zip
  45. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220001_0105/ZZDtool.exe
  46. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220001_0105/更新记录.xlsx
  47. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220002_0125/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac
  48. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220002_0125/X6_OPEN_GWSD_M5701_V220002_0125.pac
  49. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220002_0125/X6_OPEN_GWSD_M5701_V220002_0125.zip
  50. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220002_0125/ZZDtool.exe
  51. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220002_0125/更新记录.xlsx
  52. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220003_0223/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac
  53. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220003_0223/X6_OPEN_GWSD_M5701_V220003_0223.zip
  54. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220003_0223/X6_OPEN_GWSD_M5701_V220003_0223_GPS.pac
  55. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220003_0223/X6_OPEN_GWSD_M5701_V220003_0223_NOGPS.pac
  56. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220003_0223/ZZDtool.exe
  57. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220003_0223/更新记录.xlsx
  58. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220004_0224/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac
  59. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220004_0224/X6_OPEN_GWSD_M5701_V220004_0224.zip
  60. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220004_0224/X6_OPEN_GWSD_M5701_V220004_0224_GPS.pac
  61. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220004_0224/X6_OPEN_GWSD_M5701_V220004_0224_NOGPS.pac
  62. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220004_0224/ZZDtool.exe
  63. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220004_0224/更新记录.xlsx
  64. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220005_0225/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac
  65. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220005_0225/X6_OPEN_GWSD_M5701_V220005_0225.zip
  66. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220005_0225/X6_OPEN_GWSD_M5701_V220005_0225_GPS.pac
  67. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220005_0225/X6_OPEN_GWSD_M5701_V220005_0225_NOGPS.pac
  68. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220005_0225/ZZDtool.exe
  69. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220005_0225/更新记录.xlsx
  70. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220006_0225/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac
  71. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220006_0225/X6_OPEN_GWSD_M5701_V220006_0225.zip
  72. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220006_0225/X6_OPEN_GWSD_M5701_V220006_0225_GPS.pac
  73. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220006_0225/X6_OPEN_GWSD_M5701_V220006_0225_NOGPS.pac
  74. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220006_0225/ZZDtool.exe
  75. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220006_0225/更新记录.xlsx
  76. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220007_0511/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac
  77. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220007_0511/X6_OPEN_GWSD_M5701_V220007_0511.zip
  78. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220007_0511/X6_OPEN_GWSD_M5701_V220007_0511_GPS.pac
  79. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220007_0511/X6_OPEN_GWSD_M5701_V220007_0511_NOGPS.pac
  80. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220007_0511/ZZDtool.exe
  81. BIN
      发布版本/X6_OPEN_GWSD_M5701_V220007_0511/更新记录.xlsx

BIN
GWSD对讲应用命令手册V1.4.pdf


BIN
X6_LS_GWSD.zip


+ 17 - 0
app/GUI/QR_Encode.h

@@ -0,0 +1,17 @@
+#ifndef QR_ENCODE_H__
+#define QR_ENCODE_H__
+
+#include <stdbool.h>
+typedef struct{
+	unsigned char **data; //QRCODE二维数据
+	unsigned int size;    //QRCODE二维大小
+}QR_OUT;
+
+/*
+lpsSource:需要生成QRCODE的数据信息
+qrout:生成的QRCODE信息,只有在返回true时有效
+return:true 成功,false失败
+*/
+bool EncodeData(char *lpsSource, QR_OUT *qrout);
+
+#endif

+ 456 - 0
app/GpsData.c

@@ -0,0 +1,456 @@
+
+#include "includes.h"
+SUT_GPS_INF sutGpsInfo;
+GPS_DATA_TYPE GPS_Data_Type;
+
+//static unsigned char gpsInit=0;
+//
+//void GPSRestart(void){
+//	gpsInit=1;
+//}
+//void GPSStop(void){
+//	gpsInit=10;
+//}
+
+void GPSInit(void){
+	memset(&sutGpsInfo,0,sizeof(SUT_GPS_INF));
+}
+
+
+void GpsTimeUpdate(void)
+{
+	if(GPS_TimeTable[newPara.gpsTimeIndex])
+	{
+		sutGpsInfo.g_GpsEnable=1;
+	}
+	else{
+		sutGpsInfo.g_GpsEnable=0;
+		sutGpsInfo.isGpsWork=0;
+	}
+
+	MSG_INFO(1,"newPara.gpsTimeIndex===%d,%d",newPara.gpsTimeIndex,sutGpsInfo.g_GpsEnable);
+	
+}
+
+void GpsInternalChange(unsigned int interval)
+{
+	static signed char step=-1;
+	static  char last_g_GpsStat=-1;
+	static unsigned short cnt=0; 
+	
+	if(++cnt<(1000/interval)) return;//1秒读一次ADC即可
+	cnt=0;
+
+	if(last_g_GpsStat!=sutGpsInfo.g_GpsEnable){
+			last_g_GpsStat=sutGpsInfo.g_GpsEnable;
+			step=0;
+	}
+	
+	switch(step)
+	{
+		case 0:
+			if(sutGpsInfo.g_GpsEnable){
+				msgToModem("AT+GPS=\"ON\"\r\n");
+				MSG_INFO(1,"GPS open--change--r\n");
+				
+			}
+			 else {
+				 msgToModem("AT+GPS=\"OFF\"\r\n");
+				 gpsDataInit();
+				MSG_INFO(1,"GPS OFF--change--r\n");
+			 }
+				//step=1;
+				break;
+		case 1:
+			if(sutGpsInfo.g_GpsEnable)msgToModem("AT+GPSANT=1\r\n");
+				else msgToModem("AT+GPSANT=0\r\n");
+			//step=2;
+			break;
+	   case 7:  //第一次查询需要延时查询
+			//step=0;
+			gpsCheckInfo();
+	  	 break;
+			break;
+	}
+	
+   if(step<8)step++;
+   
+}
+
+
+//12345,1214
+//鑾峰彇绗�竴涓�€楀彿鍓嶆暟瀛楁湁鍑犱綅
+int getDlen(char *msg){
+	int i;
+	for(i=0;i<strlen(msg);i++){
+		if(msg[i]>0x39 || msg[i]<0x30){
+			return i;
+		}
+	}
+	return -1;//娌℃湁閫楀彿
+}
+
+
+static unsigned char translate_digitAscii_to_bcd(char *ascii_number, unsigned char len, char *bcd_number)
+{
+	int i, j;
+	char temp[10] = "";  /* extra + and NULL */
+	unsigned char bcd_index = 0;          /* Index into output bcd_number */
+	
+	int num_len = len;
+	
+	
+	/* Translate or skip over invalid characters */
+	for (i = 0, j = 0; i < num_len; i++)
+	{
+		temp[j++] = ascii_number[i] & 0x0F;
+	}
+	
+	ascii_number[len] = 0;
+	/* Now that temp has the bcd codes in natural order... Squish them together
+	* and reverse the order per bcd coding.
+	*/
+	for (i = 0; i < j; i+=2)
+		bcd_number[bcd_index++] = ((char)(temp[i] << 4)) | temp[i+1];
+	
+	bcd_number[len] = 0;
+	
+	return 0;
+}
+
+/*=====================================
+UTC time:hms   status       latitue         north?    longitue          east?   速度(节)   方位角  UTC time      磁偏角      方向   模式      checksum
+$GPRMC    hhmmss.sss      A/V      ddmm.mmmm   N/S   dddmm.mmmm  E/W      speed             aspect        ddmmyy      000-180            E/W        A/D/E/N     *hh
+For example: $GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
+*/
+
+#define GPRMC_UTC1_TOKEN_INDEX                   0
+#define GPRMC_STATUS_TOKEN_INDEX               1
+#define GPRMC_LATITUE_TOKEN_INDEX              2
+#define GPRMC_NORTH_TOKEN_INDEX                 3
+#define GPRMC_longitue_TOKEN_INDEX               4
+#define GPRMC_EAST_TOKEN_INDEX                    5
+#define GPRMC_SPEED_TOKEN_INDEX                  6
+#define GPRMC_ASPECT_TOKEN_INDEX                7
+#define GPRMC_UTC2_TOKEN_INDEX                    8
+#define GPRMC_HIGHT_TOKEN_INDEX                 8
+#define GPRMC_STARTNUM_TOKEN_INDEX              6
+#define GPS_BDVISUAL_INDEX                          2
+ 
+
+/*************************************************************************************
+*
+**************************************************************************************/
+void process_gps_data(char *buf,uint32_t size)   //这里的buf就是从GPRMC,后开始
+{
+	char tmp_char[16] = {0};
+	char  bcd_tmp[8] = {0};
+	char *token[16] = {NULL};
+	char size_each_token[16] = {0};//长度
+   unsigned char hh,hl;
+	unsigned char token_index = 0;
+	unsigned char j;
+	
+	int i = 0;
+	int index = 0;
+	int dig_bit_num = 0;
+	int ptr_each = 0;
+	unsigned short speed;
+	unsigned short aspect;
+	double speed_jie = 0.0;
+
+	GPS_Data_Type=GNRMC;
+	sutGpsInfo.isGpsWork=1;
+
+	
+	if(GPS_Data_Type==GBGSV|| GPS_Data_Type==GPGSV)return;
+
+	token[token_index] = buf;
+	//RunMake(THIS_FILE_ID);	
+	while(index < size )
+	{
+		if(buf[index] == ',')
+		{
+			size_each_token[token_index] = ptr_each;
+			if(ptr_each == 0)	token[token_index] = NULL;
+			//*(token[token_index] + ptr_each) = 0; //
+			ptr_each = 0;
+			token_index++;
+			
+			if(token_index==16)return;
+			
+			token[token_index] = buf+index+1;  //skip this ',' 
+			if(*(token[token_index]+1) == '*')
+			{
+				size_each_token[token_index] = 1;	     //cut of *hh\r\n
+			}        
+		}
+		else
+		{
+			ptr_each++;    
+		}
+		index++;
+	}
+	/*
+		GPS_NULL,
+	GNRMC=1,
+	GPVTG,
+	GNGGA,
+	GPGSV,
+	GBGSV,
+	*/
+	//RunMake(THIS_FILE_ID);
+	switch(GPS_Data_Type){
+			
+		case GNRMC:	
+						//UTC time:hms    
+						if(token[GPRMC_UTC1_TOKEN_INDEX])   
+						{
+							strncpy((char*)tmp_char,(char*)token[0],size_each_token[0]);
+							translate_digitAscii_to_bcd(tmp_char,6,bcd_tmp);  //去掉.xx
+							//小时需要加8 因为北京是东8区
+							hl=bcd_tmp[0]&0x0f;
+							hh=bcd_tmp[0]&0xf0;
+							hl+=8;
+							if(hl>=10){
+								hl-=10;
+								hh+=0x10;
+								//if(hh>0x20)hh=0;  处理GPS时间问题   V520_P1
+							}
+								sutGpsInfo.hour=(hh | hl);
+
+							sutGpsInfo.minu = bcd_tmp[1];
+							sutGpsInfo.sec = bcd_tmp[2];
+						}  	
+						//RunMake(THIS_FILE_ID);
+						//Fix status
+						if(token[GPRMC_STATUS_TOKEN_INDEX])   
+						{
+							memset(tmp_char , 0 ,sizeof(tmp_char));    
+							strncpy((char*)tmp_char,(char*)token[1],size_each_token[1]);
+							//if(*tmp_char == 'A'){
+							if(*tmp_char == 'A'){
+								sutGpsInfo.isGpsValid = 1;
+							}else{
+								sutGpsInfo.isGpsValid = 0;	
+							}
+						}  	   
+						//RunMake(THIS_FILE_ID);	
+						if(sutGpsInfo.isGpsValid == 0)return;
+							//latitude 纬度
+						/*=====================================
+						UTC time:hms   status       latitue         north?    longitue          east?   速度(节)   方位角  UTC time      磁偏角      方向   模式      checksum
+						$GPRMC    hhmmss.ss      A/V      ddmm.mmmm   N/S   dddmm.mmmm  E/W      speed             aspect        ddmmyy      000-180            E/W        A/D/E/N     *hh
+						For example: $GPRMC,024813.640,A,3158.4608,N,11848.3737,E,010.5,324.7,150706,,,A*50
+						*/
+						
+						if(token[GPRMC_LATITUE_TOKEN_INDEX])   
+						{
+								char *p=token[GPRMC_LATITUE_TOKEN_INDEX];
+								//ddmm.mmmmm
+								int ddmm=atoi(p);
+								int mmmmm=atoi((p+5));
+								int dd=ddmm/100;
+								int mm=ddmm%100;
+								int dlen=getDlen(p+5);
+								if(dlen<0){
+									sutGpsInfo.isGpsValid = 0;
+									return;
+								}
+								dlen = 6-dlen;
+								//double fmm=(double)mm+(double)mmmmm/100000.0;
+								//nmeaInfo.latitude=(double)dd+fmm/60.0;
+								sutGpsInfo.latitue=dd*1000000;//露脠 路脜麓贸1000000卤露拢卢脮没脢媒虏驴路脰
+								mm*=1000000;
+								if(dlen==1) mmmmm*=10;
+								else if(dlen==2) mmmmm*=100;
+								else if(dlen==3) mmmmm*=1000;
+								else if(dlen==4) mmmmm*=10000;
+								else mmmmm*=100000;
+								mm+=mmmmm;//路脰 路脜麓贸1000000卤露
+								dd=mm/60;//露脠 路脜麓贸1000000卤露  脨隆脢媒虏驴路脰
+								sutGpsInfo.latitue+=dd;//露脠 路脜麓贸1000000卤露
+						}
+							if(token[GPRMC_NORTH_TOKEN_INDEX])
+							{
+								strncpy((char*)tmp_char,(char*)token[3],size_each_token[3]);
+								sutGpsInfo.NSFlag=*tmp_char;
+						
+							}
+				
+						
+						
+						//longitude 经度
+						if(token[GPRMC_longitue_TOKEN_INDEX])   
+						{
+								char *p=token[GPRMC_longitue_TOKEN_INDEX];
+								int dddmm=atoi(p);
+								int mmmmm=atoi((p+6));
+								int ddd=dddmm/100;
+								int mm=dddmm%100;
+								int dlen=getDlen(p+6);
+								if(dlen<0){
+									sutGpsInfo.isGpsValid = 0;
+									return;
+								}
+								dlen = 6-dlen;
+									
+								sutGpsInfo.longitue=ddd*1000000;//露脠 路脜麓贸1000000卤露  脮没脢媒虏驴路脰
+								mm*=1000000;
+								if(dlen==1) mmmmm*=10;
+								else if(dlen==2) mmmmm*=100;
+								else if(dlen==3) mmmmm*=1000;
+								else if(dlen==4) mmmmm*=10000;
+								else mmmmm*=100000;
+								mm+=mmmmm;//路脰 路脜麓贸1000000卤露
+								ddd=mm/60;//露脠 路脜麓贸1000000卤露  脨隆脢媒虏驴路脰
+								sutGpsInfo.longitue+=ddd;
+							if(token[GPRMC_EAST_TOKEN_INDEX])
+							{
+								strncpy((char*)tmp_char,(char*)token[5],size_each_token[5]);
+								sutGpsInfo.EWFlag=*tmp_char;
+						
+							}				
+								
+						}
+						
+						//Speed
+						if(token[GPRMC_SPEED_TOKEN_INDEX])   
+						{
+							//RunMake(THIS_FILE_ID);
+							memset(tmp_char , 0 ,sizeof(tmp_char));    
+							strncpy((char*)tmp_char,(char*)token[GPRMC_SPEED_TOKEN_INDEX],size_each_token[GPRMC_SPEED_TOKEN_INDEX]);
+												index = 0;
+									 while(index < size_each_token[GPRMC_SPEED_TOKEN_INDEX])
+									 {
+										 if(tmp_char[index] == '.')
+									break;
+													index++;
+									 }
+							dig_bit_num = size_each_token[GPRMC_SPEED_TOKEN_INDEX]-index-1;
+												//这里,index代表小数点前有多少位,dig_bit_num代表小数点后面有多少位
+							//RunMake(THIS_FILE_ID);
+												//ol_debug("dig_bit_num:%d,all len:%d",dig_bit_num,size_each_token[GPRMC_SPEED_TOKEN_INDEX]);
+					#if 0
+							if(index == 3)
+							{
+								speed_jie = (tmp_char[0]-0x30)*100
+								+ (tmp_char[1]-0x30)*10
+								+ (tmp_char[2]-0x30);		
+							}
+												else if(index == 2)
+							{
+								speed_jie = (tmp_char[0]-0x30)*10
+								+ (tmp_char[1]-0x30);		
+							}
+									 else
+								speed_jie = (tmp_char[0]-0x30);
+
+												if(dig_bit_num > 0)
+								speed_jie += (tmp_char[index+1]-0x30)*0.1;
+					#else
+							speed_jie = atoi(tmp_char);
+							if(dig_bit_num>0)
+								speed_jie += (tmp_char[index+1]-0x30)*0.1;
+					#endif
+							speed = (unsigned short)(speed_jie*1.852);   
+							
+							sutGpsInfo.speed = ( ((speed/100)<<8) | (((speed /10)%10)<<4) | (speed %10)  );   
+							//ol_debug("speed_jie to speed:%d,xinan speed:%d",speed,sutGpsInfo.speed);
+						}   
+						//RunMake(THIS_FILE_ID);
+						//Aspect 方向
+						if(token[GPRMC_ASPECT_TOKEN_INDEX])   
+						{
+							memset(tmp_char , 0 ,sizeof(tmp_char));    
+							strncpy((char*)tmp_char,(char*)token[GPRMC_ASPECT_TOKEN_INDEX],size_each_token[GPRMC_ASPECT_TOKEN_INDEX]);
+							#if 0
+							aspect = (unsigned short)((tmp_char[0]-0x30)*100
+								+ (tmp_char[1]-0x30)*10
+								+ (tmp_char[2]-0x30));
+							
+							//aspect = 150;
+							sutGpsInfo.aspect= ( ((aspect/100) << 8) | (((aspect /10)%10)<<4) | (aspect %10) );
+							
+							#else
+							aspect=atoi(tmp_char);
+							aspect %=360;
+							sutGpsInfo.aspect= ( ((aspect/100) << 8) | (((aspect /10)%10)<<4) | (aspect %10) );
+							#endif
+						}      
+						//RunMake(THIS_FILE_ID);
+						//UTC2
+						if(token[GPRMC_UTC2_TOKEN_INDEX])   
+						{
+							memset(tmp_char , 0 ,sizeof(tmp_char));    
+							memset(bcd_tmp , 0 ,sizeof(bcd_tmp));    	   
+							strncpy((char*)tmp_char,(char*)token[GPRMC_UTC2_TOKEN_INDEX],size_each_token[GPRMC_UTC2_TOKEN_INDEX]);
+							translate_digitAscii_to_bcd(tmp_char,6,bcd_tmp);  
+							
+							sutGpsInfo.day = bcd_tmp[0];
+							sutGpsInfo.month= bcd_tmp[1];
+							sutGpsInfo.year = bcd_tmp[2];
+							}	
+						
+			break;
+		
+		case GPVTG:
+			
+			break;
+		case GNGGA:
+											
+						if(token[GPRMC_STARTNUM_TOKEN_INDEX])   
+						{
+							
+							strncpy((char*)tmp_char,(char*)token[GPRMC_STARTNUM_TOKEN_INDEX],size_each_token[GPRMC_STARTNUM_TOKEN_INDEX]);
+							if(size_each_token[GPRMC_STARTNUM_TOKEN_INDEX]<1)return;
+					//		bcd_tmp[0]=tmp_char[0];
+					//		bcd_tmp[1]=tmp_char[1];
+					//		bcd_tmp[2]=0;
+							sutGpsInfo.startnum=atoi(tmp_char);
+						 }
+
+						 if(token[GPRMC_HIGHT_TOKEN_INDEX])   
+						{
+							memset(tmp_char , 0 ,sizeof(tmp_char));     	   
+							strncpy((char*)tmp_char,(char*)token[GPRMC_HIGHT_TOKEN_INDEX],size_each_token[GPRMC_HIGHT_TOKEN_INDEX]);
+
+							//	bcd_tmp
+							for(i=0,j=0;i<size_each_token[GPRMC_HIGHT_TOKEN_INDEX];i++){
+							
+									if(tmp_char[i]=='.'){
+											
+										i++;
+										continue;
+									}
+										bcd_tmp[j]=tmp_char[i];
+											i++;
+											j++;
+							}			
+						}
+						 sutGpsInfo.hight=atoi(bcd_tmp);
+						// printf("get GPS hight--------------------%d---------\r\n",sutGpsInfo.hight);
+								
+			break;
+		case GPGSV:
+					if(token[GPS_BDVISUAL_INDEX])   
+					{
+				
+						strncpy((char*)tmp_char,(char*)token[GPS_BDVISUAL_INDEX],size_each_token[GPS_BDVISUAL_INDEX]);
+						sutGpsInfo.GPSVisible_num=atoi(tmp_char);
+					}
+		
+			break;
+		case GBGSV:
+					if(token[GPS_BDVISUAL_INDEX])   
+				{
+					
+					strncpy((char*)tmp_char,(char*)token[GPS_BDVISUAL_INDEX],size_each_token[GPS_BDVISUAL_INDEX]);
+					sutGpsInfo.BDVisible_num=atoi(tmp_char);
+				 }
+			break;
+	
+	}
+	
+		
+}

+ 67 - 0
app/GpsData.h

@@ -0,0 +1,67 @@
+
+#ifndef __GPS_DATA_H_
+#define __GPS_DATA_H_
+
+typedef enum{
+	GPS_NULL,
+	GNRMC=1,
+	GPVTG,
+	GNGGA,
+	GPGSV,
+	GBGSV,
+}GPS_DATA_TYPE;
+	
+extern GPS_DATA_TYPE GPS_Data_Type;
+typedef struct SUT_GPS_INF
+{
+	unsigned char isGpsWork:1;//GPS模块工作标志
+	unsigned char isGpsValid:1;//GPS定位标志  0 GPS未定位  1 GPS已定位
+
+	
+	unsigned char year;
+	unsigned char month;
+	unsigned char day;
+	unsigned char hour;
+	unsigned char minu;
+	unsigned char sec;
+	
+	unsigned char GPSVisible_num;
+	unsigned char BDVisible_num;
+	unsigned char startnum;
+	unsigned short  hight;
+	
+	uint32_t longitue;//经度
+	uint32_t latitue;//纬度
+	
+	uint32_t speed;//速度
+	uint32_t aspect;//方位
+
+	uint32_t AvgSpeed;//平均速度
+	uint32_t speedbuf[5];
+	uint32_t StatisticsMile ;//历程统计
+	unsigned char Status;
+	unsigned char Location[16];
+	unsigned char Speed[8];
+	unsigned char Time[8];		
+	
+	uint32_t testJD;
+	uint32_t testWD;
+	
+	char NSFlag;//N 北纬 S 南纬
+	char EWFlag;//E 东经 W 西经
+	char g_GpsEnable; // enable;
+//	unsigned char reAthCnt;//resend ath time max 5
+}SUT_GPS_INF;
+
+
+
+extern SUT_GPS_INF sutGpsInfo;
+
+void GPSRestart(void);
+void GPSStop(void);
+void GPSInit(void);
+
+void process_gps_data(char *buf,uint32_t size);
+void GpsInternalChange(unsigned int interval);
+
+#endif

+ 35 - 16
app/app.c

@@ -281,6 +281,7 @@ void micPttHandler(char status){
 void keyHandler(unsigned short key,unsigned char status){//普通按键值处琿
 static unsigned char gtModeCnt=0;
 	static unsigned char lockCnt=0;
+	
 	if(sutApp.keyLock!=0 && MKEY_VALUE_ESC!=key){
 		sutApp.lockShow=1;
 		return;
@@ -292,6 +293,7 @@ static unsigned char gtModeCnt=0;
 				pttHandler(0,0);
 				break;
 			case MKEY_VALUE_PTT:
+				
 				pttHandler(1,0);
 				break;
 			case MKEY_VALUE_PWR:
@@ -346,7 +348,7 @@ static unsigned char gtModeCnt=0;
 			case MKEY_VALUE_MIC_PTT:
 				pttHandler(0,1);
 				break;
-			case MKEY_VALUE_PTT:
+			case MKEY_VALUE_PTT:		
 				pttHandler(1,1);
 				break;
 			case MKEY_VALUE_PWR:
@@ -365,7 +367,14 @@ static unsigned char gtModeCnt=0;
 			case MKEY_VALUE_F1:
 				//sutApp.key_f1_cnt++;
 				keyInArow=1;
-				if(++sutApp.key_f1_cnt==3) quickUiSwitch(UIS_MENU_INFO_SEL);
+				if(++sutApp.key_f1_cnt==3) {
+					
+					if(sutApp.gtMode==0){
+						enterGTMode();
+					}
+					quickUiSwitch(UIS_MENU_INFO_SEL);
+
+				}
 				break;
 			case MKEY_VALUE_F2:
 				keyInArow=1;
@@ -407,13 +416,10 @@ static void adcRead(unsigned int interval){
 	static unsigned char LastMIC_ptt=0;
 	static unsigned short cnt=0,lcnt=0;
 	unsigned int adcValueTmp;
-
+	
 	if(++cnt<(1000/interval)) return;//1秒读一次ADC即可
-
 	cnt=0;
 	LSAPI_SYS_BattGetVol(&adcValueTmp);
-
-
 	//MSG_WARN(1,"Low power:%d mv",adcValueTmp/10 );
 	if(sutApp.g_iBAT<=MIN_PWR_LEVEL){
 		MSG_WARN(1,"Low power:%d", lcnt++);
@@ -428,8 +434,6 @@ static void adcRead(unsigned int interval){
 		if(sutApp.g_iBAT != laSiVbat){
 			laSiVbat=sutApp.g_iBAT;
 	 }
-
-	
 /* ***************EAR PTTdet ADC**************************/
 	//通道3   范围3V
 	if(LSAPI_Device_AdcGetChannelVolt(3,3)<1000)MIC_ptt=1;
@@ -545,9 +549,24 @@ void ShouHuProcess(int interva)
 	//static int LastAtt_state=0;
 	int  tmepAtt_state=0;
 	static int cnt=0;
+	static unsigned short fanghuCnt=0;
 	if(sutApp.gtMode!=0)return;
 	if(++cnt<(1000/interva)) return;
 	cnt=0;	
+
+	if(sutPocStatus.firstLogin==1&&sutPocStatus.logined==0){
+		if(++fanghuCnt>120){
+			LSAPI_OSI_ThreadSleep(1000);
+			msgToModem("AT+TRB\r\n");
+			MSG_INFO(1,"fanghu->net bad\r\n");
+			fanghuCnt=0;
+			LSAPI_OSI_ThreadSleep(1000);
+			while(1);			
+		}
+		
+	}else{
+		fanghuCnt=0;
+	}
 	nRet=LSAPI_NET_GetGprsAttState(&tmepAtt_state);
 
 	if(nRet!=0){
@@ -557,12 +576,11 @@ void ShouHuProcess(int interva)
 	if(tmepAtt_state!=1){
   		//if(LastAtt_state!=tmepAtt_state)MSG_WARN(1,"REG off");
 		if(regcnt==60){	
-			
 			MSG_WARN(1,"!!!!CFUN=0");
 			msgAtSend("AT+CFUN=0\r\n");
 			backLightReset();
-			sutPocStatus.firstLogin=0;
-		}else if(regcnt>=61){
+			//sutPocStatus.firstLogin=0;
+		}else if(regcnt>=65){
 
 			MSG_WARN(1,"!!!!CFUN=1");
 			msgAtSend("AT+CFUN=1\r\n");
@@ -677,26 +695,27 @@ void appRun(void){
 	}
 	newPara.ChangeCard=0;
 	sysIniSave();
-	
 	//msgAtSend("AT+POC=7B00000064\r\n");
 	msgToModem("ATE0\r\n");
 	msgToModem("AT+AUDCH=0,0\r\n");//TEST  因为模块默认 通道为2,0
 	pocSetDomain();
 	//msgAtSend("AT+POC=0000000101\r\n");
-	//osiPmWakeUnlock(App_osiPmSource_t); 
-
+	//osiPmWakeUnlock(App_osiPmSource_t);
+	
 for(;;){
-//		MS5700_Networking(APP_SUB_DIV_TIME); //网络监测
+	MS5700_Networking(APP_SUB_DIV_TIME); //网络监测
 //		Domain_Process(APP_SUB_DIV_TIME);   //
 //		FOTA_Process(APP_SUB_DIV_TIME);
 		volUpdateNeed();
 		ledsProCtl();
 		adcRead(APP_SUB_DIV_TIME);
-		uiProcess(APP_SUB_DIV_TIME);
+		uiProcess(APP_SUB_DIV_TIME);	
+		
 		if(GPS_HADRENABLE==1){
 			gpsProCtl(APP_SUB_DIV_TIME);
 			GpsInternalChange(APP_SUB_DIV_TIME);
 		}
+		
 	#ifndef ANT_TEST
 		pocProCtl(APP_SUB_DIV_TIME);
 	#endif

+ 0 - 1
app/app.h

@@ -39,7 +39,6 @@ typedef struct{
 	unsigned char pocInitStatus:1;//poc鏄�惁鍚�姩瀹屾垚
 	unsigned char appStatus:1;//app鏄�惁浼戠湢
 	unsigned char pocParaDone:1;//poc鍙傛暟鏄�惁妫€娴嬪畬鎴?
-	unsigned char bndPocDone:1;//博纳德初始化完成
 	unsigned char cardStatus:1;//
 	unsigned char Get_MicLv:1;
 	

+ 153 - 0
app/mymacro.em

@@ -0,0 +1,153 @@
+macro MultiLineComment()
+
+
+{
+
+
+    hwnd = GetCurrentWnd()
+
+
+    selection = GetWndSel(hwnd)
+
+
+    LnFirst =GetWndSelLnFirst(hwnd)      //取首行行号
+
+
+    LnLast =GetWndSelLnLast(hwnd)      //取末行行号
+
+
+    hbuf = GetCurrentBuf()
+
+
+ 
+
+
+    if(GetBufLine(hbuf, 0) =="//magic-number:tph85666031"){
+
+
+        stop
+
+
+    }
+
+
+ 
+
+
+    Ln = Lnfirst
+
+
+    buf = GetBufLine(hbuf, Ln)
+
+
+    len = strlen(buf)
+
+
+ 
+
+
+    while(Ln <= Lnlast) {
+
+
+        buf = GetBufLine(hbuf, Ln)  //取Ln对应的行
+
+
+        if(buf ==""){                   //跳过空行
+
+
+            Ln = Ln + 1
+
+
+            continue
+
+
+        }
+
+
+ 
+
+
+        if(StrMid(buf, 0, 1) == "/"){       //需要取消注释,防止只有单字符的行
+
+
+            if(StrMid(buf, 1, 2) == "/"){
+
+
+                PutBufLine(hbuf, Ln, StrMid(buf, 2, Strlen(buf)))
+
+
+            }
+
+
+        }
+
+
+ 
+
+
+        if(StrMid(buf,0,1) !="/"){          //需要添加注释
+
+
+            PutBufLine(hbuf, Ln, Cat("//", buf))
+
+
+        }
+
+
+        Ln = Ln + 1
+
+
+    }
+
+
+ 
+
+
+    SetWndSel(hwnd, selection)
+
+
+}
+
+
+
+
+
+
+
+
+macro UnMultiLineComment()  
+{   //取消杠杠注释,不选中多行的话,默认只处理当前行  
+    hwnd = GetCurrentWnd()  
+    selection = GetWndSel( hwnd )  
+    lnFirst = GetWndSelLnFirst( hwnd )  
+    lnLast = GetWndSelLnLast( hwnd )  
+  
+    hbuf = GetCurrentBuf()  
+    ln = lnFirst  
+    while( ln <= lnLast )  
+    {  
+        buf = GetBufLine( hbuf, ln )  
+        len = strlen( buf )  
+        if( len >= 2 )  
+        {  
+            start = 0  
+  
+            while( strmid( buf, start, start + 1 ) == CharFromAscii(32) || strmid( buf, start, start + 1 ) == CharFromAscii(9) )  
+            {  
+                start = start + 1  
+                if( start >= len )  
+                    break  
+            }  
+            if( start < len - 2 )  
+            {  
+                if( strmid( buf, start, start + 2 ) == "//" )  
+                {  
+                    buf2 = cat( strmid( buf, 0, start ), strmid( buf, start + 2, len ) )  
+                    PutBufLine( hbuf, ln, buf2 )  
+                }  
+            }  
+        }  
+        ln = ln + 1  
+    }  
+    SetWndSel( hwnd, selection )  
+}  

+ 2 - 2
app/ohpoc.h

@@ -7,7 +7,7 @@
 #define OHPOC_APP_NAME "X6"
 
 
-#define OHPOC_VERSION "220004"  //外部OCPU 应用维护
+#define OHPOC_VERSION "220007"  //外部OCPU 应用维护
 #define OHPOC_MODLE	"M5701" //作为OPEN时,此值用于FOTA升级标识使用
 #define OHPOC_CUST OHPOC_APP_NAME //作为OPEN时,此值用于FOTA升级标识使用
 #define OHPOC_POC_PLATFORM "GWSD"
@@ -17,7 +17,7 @@
 
 #define  BND_PSN         1509000001
 
-#define GPS_HADRENABLE  1
+#define GPS_HADRENABLE  0
 
 
 

+ 83 - 2
app/poc.c

@@ -67,7 +67,7 @@ static void pro0dMsg(char *msg);
 static void proMic(int mic);
 static void proSpk(int spk);
 static void pro28Msg(char *msg);
-
+static void ProFEMsg(char *msg);
 
 
 
@@ -117,7 +117,7 @@ void cmdsProcess(char *msg, int len){//撌脣縧�匧�頧行揢
 		else if(msgCmp(msg, "+POC:7F000000")) proVoiceMode(msg+13);
 		else if(msgCmp(msg, "+CCID: ")) proCCIDMsg(msg+7);
 		else if(msgCmp(msg, "$GNRMC"))process_gps_data(msg+7,len-7);
-
+		
 
 		else if(msgCmp(msg, "+CTEC:")) proNetMode(msg+7);
 		else if(msgCmp(msg, "+CSQ: ")) proCsqMsg(msg+6);
@@ -126,6 +126,7 @@ void cmdsProcess(char *msg, int len){//撌脣縧�匧�頧行揢
 		else if(msgCmp(msg, "+SIMCROSS"))proSimMode(msg+10);
 		else if(msgCmp(msg, "SV"))	strcpy(sutApp.modemVer, msg);
 		else if(msgCmp(msg,"+CACCP:"))ProGetMicLV(msg);
+		else if(msgCmp(msg,"AT+POC=FE"))ProFEMsg(msg);
 			
 		else MSG_INFO(1, "skip:%d,%s", len,msg);
 
@@ -189,6 +190,77 @@ void cmdsProcess(char *msg, int len){//撌脣縧�匧�頧行揢
 		msg[6]=0;
 		sutApp.copstype=atoi(msg+4);
 	}
+
+
+
+
+void FindIndexBysrt(char *src,char *substr,char*dest){
+ char i=0,j=0;
+	while(*src){
+		if(*src==*substr){
+			if(memcmp(src,substr,strlen(substr))==0){
+				i=i+strlen(substr);
+				while(src[i]!=';'){
+					dest[j]=src[i];
+					i++;
+					j++;
+				}
+				dest[j]=0;
+				return;		
+			}				
+		}
+		i++;
+		src++;
+	}
+	return ;
+ }
+
+
+const char *poc_Usr="usr=";
+const char *poc_pwd="pwd=";
+const char *poc_oapwd="oapwd=";
+
+//75->0x75
+/*
+
+	key = (account[0] | 0x80);
+	for(int i = 0; i < strlen(pwd); i++)
+	{
+	dec_pwd[i] = pwd[i]^key;
+	}
+
+*/
+void ProFEMsg(char *msg){
+	char temp[100]={0};
+	char data[40]={0};
+	char key=0,i=0;
+	
+	StrAsciiToHex(msg+14,temp);
+	FindIndexBysrt(temp,poc_Usr,data);
+	strncpy(sutApp.UserInfo.OtherId,data,strlen(data));
+	FindIndexBysrt(temp,poc_pwd,data);
+
+	memset(temp,0,sizeof(temp));
+
+	key=(sutApp.UserInfo.OtherId[0]|0x80);\
+	for(i=0;i<strlen(data);i++){
+	
+		temp[i]=data[i]^key;
+	}
+	strncpy(sutApp.UserInfo.OtherId,temp,strlen(temp));
+	saveInfoNow(&sutApp.UserInfo);
+
+	memset(temp,0,sizeof(temp));
+	memset(data,0,sizeof(data));
+	snprintf(temp, sizeof(temp), "AT+POC=010000");
+	snprintf(data, sizeof(data), "id=%s;pwd=%s",sutApp.UserInfo.OtherId,sutApp.UserInfo.OtherPassWord);
+	AscStrTurnHexStr(data, temp+strlen(temp));
+	strcat(temp, "00\r\n");
+	msgAtSend(temp);
+	MSG_INFO(1, "POC reset");
+}
+
+
 	
 
 //憭��POC璅∪�靽⊥�
@@ -369,6 +441,15 @@ static void pro82Msg(char *msg){
 				MSG_INFO(1, "Login ok");
 				sutPocStatus.loginResult=3;
 				break;
+				
+			case 8:  //堈最溫瘍
+				msgAtSend("AT+POC=FE00000001\r\n");
+
+				break;
+
+
+
+				
 		}
 
 }

+ 2 - 44
app/setting.c

@@ -1,7 +1,7 @@
 
 #include "includes.h"
 
-static void saveInfoNow(USER_STOR_INFO *info);
+
 void cmdSetting(char *msg){
 	char info[100],buf[50],ipAddr[40];
 	char needSendAt=0;
@@ -16,49 +16,7 @@ void cmdSetting(char *msg){
 		}else msgAtSends(msg, strlen(msg));
 		return;
 	}
-//	//GT模�下指令处�
-//	if(msgCmp(msg, "GT+SMP")){
-//		len=GetParaFromStr(msg, "IP",buf);
-//		if(len<1 || len>=40){
-//			snprintf(info, sizeof(info),"GT+SMP:FAIL[IP Invalid]\r\n");
-//			needFeedSms=1;
-//			goto SETTING_END;
-//		}
-//		strcpy(ipAddr, buf);
-//		len=GetParaFromStr(msg, "Port", buf);
-//		if(len==0) port=0;
-//		else if(len>5){
-//			snprintf(info,sizeof(info),"GT+SMP:FAIL[Port Invalid]");
-//			needFeedSms=1;
-//			goto SETTING_END;
-//		}
-//		port=atoi(buf);
-//		len=GetParaFromStr(msg, "PSN",buf);
-//		if(len<1 || len>10){
-//			snprintf(info, sizeof(info),"GT+SMP:FAIL[PSN Invalid]\r\n");
-//			needFeedSms=1;
-//			goto SETTING_END;
-//		}
-//		psn=atol(buf);
-//		snprintf(info, sizeof(info),"GT+SMP:IP=%s;Port=%u;PSN=%lu;\r\n",ipAddr,port,psn);
-//		needFeedSms=1;
-//		//�存PSN
-//		if(sutApp.UserInfo.psn != psn){
-//			sutApp.UserInfo.psn=psn;
-//			saveInfoNow(&sutApp.UserInfo);
-//		}
-//		//�存IP到sys.ini中的用户定义�
-//		if(strcmp(newPara.serList.ur.pip,ipAddr) || newPara.serList.defaultuse!=SERVER_UR){
-//			//�相�
-//			newPara.serList.defaultuse=SERVER_UR;
-//			strcpy(newPara.serList.ur.pip, ipAddr);
-//			sysIniSave();
-//		}
-//	}else if(msgCmp(msg, "GT+RMP")){
-//		snprintf(info, sizeof(info),"GT+RMP:PSN=%lu;MEID=%s;CNUM=0000000000;UIMID=0000000000;IP=%s;\r\n",sutApp.UserInfo.psn,ohpocGetIMEI(),getPIPAddr());
-//		needFeedSms=1;
-//	}
-//	
+
 	else if(msgCmp(msg, "GT+TM")){
 		snprintf(info, sizeof(info), "TM Mode:OK\r\n");
 		needFeedSms=1;

+ 1 - 0
app/setting.h

@@ -99,4 +99,5 @@ char *getGIPAddr(void);
 char *getDOMAINAddr(void);
 char *getMenuKey(void);
 void cmdSetting(char *msg);
+void saveInfoNow(USER_STOR_INFO *info);
 #endif

+ 17 - 0
lib/QR_Encode.h

@@ -0,0 +1,17 @@
+#ifndef QR_ENCODE_H__
+#define QR_ENCODE_H__
+
+#include <stdbool.h>
+typedef struct{
+	unsigned char **data; //QRCODE二维数据
+	unsigned int size;    //QRCODE二维大小
+}QR_OUT;
+
+/*
+lpsSource:需要生成QRCODE的数据信息
+qrout:生成的QRCODE信息,只有在返回true时有效
+return:true 成功,false失败
+*/
+bool EncodeData(char *lpsSource, QR_OUT *qrout);
+
+#endif

BIN
lib/gwsd/version_V1.1.38.rar


BIN
lib/libqrcode.a


BIN
公网时代对讲应用命令手册V4.0_new.pdf


BIN
发布版本/X6_OPEN_GWSD_M5701_V210001_1027/SV6B103.W21.07.1.0T02S1025_M61A_MS5701_OPENPOC_GWSD.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210001_1027/X6_OPEN_GWSD_M5701_V210001_1027.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210001_1027/X6_OPEN_GWSD_M5701_V210001_1027.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V210001_1027/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V210001_1027/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V210002_1102/SV6B103.W21.07.1.0T02S1101_M61A_MS5701_OPENPOC_GWSD(1).pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210002_1102/X6_OPEN_GWSD_M5701_V210002_1102.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210002_1102/X6_OPEN_GWSD_M5701_V210002_1102.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V210002_1102/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V210002_1102/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V210003_1111/SV6B104.W21.07.1.0T02S1109_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210003_1111/X6_OPEN_GWSD_M5701_V210003_1111.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210003_1111/X6_OPEN_GWSD_M5701_V210003_1111.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V210003_1111/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V210003_1111/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V210004_1124/SV6B104.W21.07.1.0T04S1119_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210004_1124/X6_OPEN_GWSD_M5701_V210004_1124.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210004_1124/X6_OPEN_GWSD_M5701_V210004_1124.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V210004_1124/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V210004_1124/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V210005_1125/SV6B104.W21.07.1.0T04S1119_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210005_1125/X6_OPEN_GWSD_M5701_V210005_1125.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V210005_1125/X6_OPEN_GWSD_M5701_V210005_1125.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V210005_1125/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V210005_1125/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V220001_0105/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220001_0105/X6_OPEN_GWSD_M5701_V220001_0105.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220001_0105/X6_OPEN_GWSD_M5701_V220001_0105.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V220001_0105/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V220001_0105/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V220002_0125/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220002_0125/X6_OPEN_GWSD_M5701_V220002_0125.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220002_0125/X6_OPEN_GWSD_M5701_V220002_0125.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V220002_0125/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V220002_0125/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V220003_0223/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220003_0223/X6_OPEN_GWSD_M5701_V220003_0223.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V220003_0223/X6_OPEN_GWSD_M5701_V220003_0223_GPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220003_0223/X6_OPEN_GWSD_M5701_V220003_0223_NOGPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220003_0223/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V220003_0223/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V220004_0224/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220004_0224/X6_OPEN_GWSD_M5701_V220004_0224.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V220004_0224/X6_OPEN_GWSD_M5701_V220004_0224_GPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220004_0224/X6_OPEN_GWSD_M5701_V220004_0224_NOGPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220004_0224/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V220004_0224/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V220005_0225/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220005_0225/X6_OPEN_GWSD_M5701_V220005_0225.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V220005_0225/X6_OPEN_GWSD_M5701_V220005_0225_GPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220005_0225/X6_OPEN_GWSD_M5701_V220005_0225_NOGPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220005_0225/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V220005_0225/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V220006_0225/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220006_0225/X6_OPEN_GWSD_M5701_V220006_0225.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V220006_0225/X6_OPEN_GWSD_M5701_V220006_0225_GPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220006_0225/X6_OPEN_GWSD_M5701_V220006_0225_NOGPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220006_0225/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V220006_0225/更新记录.xlsx


BIN
发布版本/X6_OPEN_GWSD_M5701_V220007_0511/SV6B104.W21.07.1.0T08S0105_M62A2_MS5701_OPENPOC.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220007_0511/X6_OPEN_GWSD_M5701_V220007_0511.zip


BIN
发布版本/X6_OPEN_GWSD_M5701_V220007_0511/X6_OPEN_GWSD_M5701_V220007_0511_GPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220007_0511/X6_OPEN_GWSD_M5701_V220007_0511_NOGPS.pac


BIN
发布版本/X6_OPEN_GWSD_M5701_V220007_0511/ZZDtool.exe


BIN
发布版本/X6_OPEN_GWSD_M5701_V220007_0511/更新记录.xlsx