ProductPara.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469
  1. /********************************************************************************
  2. * File Name: ProductPara.c
  3. * Function Describe:
  4. * Explain:
  5. * Writer: ShiLiangWen
  6. * Date: 2015-7-6
  7. *******************************************************************************/
  8. #define THIS_FILE_ID 6
  9. //-----------------------------------------------------------------------------
  10. #include "includes.h"
  11. SUT_PRODUCT_PARA sutProductPara;
  12. //读取指定地址的半字(16位数据)
  13. //faddr:读地址(此地址必须为2的倍数!!)
  14. //返回值:对应数据.
  15. u16 STMFLASH_ReadHalfWord(u32 faddr)
  16. {
  17. return *(vu16*)faddr;
  18. }
  19. //从指定地址开始读出指定长度的数据
  20. //ReadAddr:起始地址
  21. //pBuffer:数据指针
  22. //NumToWrite:半字(16位)数
  23. void STMFLASH_Read(u32 ReadAddr,u16 *pBuffer,u16 NumToRead)
  24. {
  25. u16 i;
  26. for(i=0;i<NumToRead;i++)
  27. {
  28. pBuffer[i]=STMFLASH_ReadHalfWord(ReadAddr);//读取2个字节.
  29. ReadAddr+=2;//偏移2个字节.
  30. }
  31. }
  32. /**********************************************************************************************************
  33. *写页数据,擦除整页2048字节,并写入Byte数据,数据可少于2048Btye,但必须是偶数。
  34. ************************************************************************************************************/
  35. void WritePageData(unsigned long WriteAddr,unsigned char *pData,unsigned short DataLen)
  36. {
  37. unsigned short i;
  38. unsigned short temp;
  39. FLASH_Status status;
  40. RunMake(THIS_FILE_ID);
  41. if(WriteAddr<STM32_FLASH_BASE || (WriteAddr>=(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))return;//非法地址
  42. if(WriteAddr&0x0000003ff)return;//非页首地址
  43. RunMake(THIS_FILE_ID);
  44. FLASH_Unlock(); //解锁
  45. RunMake(THIS_FILE_ID);
  46. status=FLASH_ErasePage(WriteAddr);//擦除这个扇区
  47. if(status!=FLASH_COMPLETE){
  48. RunMake(THIS_FILE_ID);
  49. return;
  50. }
  51. RunMake(THIS_FILE_ID);
  52. //写入
  53. for(i = 0; i < DataLen; i+=2)
  54. {
  55. //数据8位融合为16位
  56. temp = (((unsigned short)pData[i+1])<<8) + ((unsigned short)pData[i]);
  57. FLASH_ProgramHalfWord((WriteAddr+i),temp);
  58. }
  59. RunMake(THIS_FILE_ID);
  60. FLASH_Lock();//上锁
  61. RunMake(THIS_FILE_ID);
  62. }
  63. /**********************************************************************************************************
  64. ************************************************************************************************************/
  65. void ReadFlashData(unsigned long ReadAddr,unsigned char *pData,unsigned short DataLen)
  66. {
  67. int i,j;
  68. unsigned short temp;
  69. j=0;
  70. for(i=0;i<DataLen;i+=2){
  71. temp=STMFLASH_ReadHalfWord(ReadAddr+i);
  72. pData[j++]=(unsigned char)(temp&0xff);
  73. pData[j++]=(temp>>8)&0xff;
  74. }
  75. }
  76. void printfATHCODE(void)
  77. {
  78. char buf[3], buf2[50];
  79. snprintf(buf2, sizeof(buf2), "index=%d,time=%d",sutProductPara.m_GPS_TimeIndex,sutGpsInfo.GPS_UploadTime);
  80. SlwTrace(INF, buf2,1);
  81. }
  82. /**********************************************************************************************************
  83. SaveProductParaToFlash
  84. ************************************************************************************************************/
  85. void SaveProductParaToFlash(char *recoreInfo)
  86. {
  87. uint32_t tick;
  88. char recBuf[60];
  89. PWR_EN_HIGH;
  90. if(sutProductPara.takeNoteFlag)
  91. {
  92. //记录保存相关信息到SPI FLASH
  93. tick=RTC_GetCounter();
  94. //时间 位置 机型 序列号
  95. snprintf(recBuf, sizeof(recBuf), "[rec]%d,%s,%s,%08x|\r\n",tick,recoreInfo,sutProductPara.ProductName,sutProductPara.PSN);
  96. sFlash_Write(recBuf, RECORD_INFO_ADDRESS, sizeof(recBuf));
  97. SlwTrace(INF, recBuf, 0);
  98. }
  99. ////////////////////////
  100. WritePageData(MAIN_CONFIG_ADDR,(unsigned char *)&sutProductPara,sizeof(SUT_PRODUCT_PARA));
  101. DelayMs(100);
  102. WritePageData(BACKUP_CONFIG_ADDR,(unsigned char *)&sutProductPara,sizeof(SUT_PRODUCT_PARA));
  103. PWR_EN_LOW;
  104. }
  105. void ResetMip(void)
  106. {
  107. sutProductPara.ManagerIP[0] = DEFAULT_LOAD_IP0;
  108. sutProductPara.ManagerIP[1] = DEFAULT_LOAD_IP1;
  109. sutProductPara.ManagerIP[2] = DEFAULT_LOAD_IP2;
  110. sutProductPara.ManagerIP[3] = DEFAULT_LOAD_IP3;
  111. sutProductPara.ManagerPort = DEFAULT_LOAD_PORT;
  112. }
  113. void ResetCip(void)
  114. {
  115. sutProductPara.ConfigSerIP[0] = DEFAULT_CONFIG_IP0;
  116. sutProductPara.ConfigSerIP[1] = DEFAULT_CONFIG_IP1;
  117. sutProductPara.ConfigSerIP[2] = DEFAULT_CONFIG_IP2;
  118. sutProductPara.ConfigSerIP[3] = DEFAULT_CONFIG_IP3;
  119. sutProductPara.ConfigSerPort = DEFAULT_CONFIG_PORT;
  120. }
  121. void ResetFip(void)
  122. {
  123. sutProductPara.MFotaIP[0]=FOTA_IAP_IP0;
  124. sutProductPara.MFotaIP[1]=FOTA_IAP_IP1;
  125. sutProductPara.MFotaIP[2]=FOTA_IAP_IP2;
  126. sutProductPara.MFotaIP[3]=FOTA_IAP_IP3;
  127. sutProductPara.MFotaPort=FOTA_IAP_PORT;
  128. }
  129. void FotaIpCheck(void)
  130. {
  131. char resetflag;
  132. resetflag=0;
  133. if(sutProductPara.ProductVersion != PRODUCT_VERSION)
  134. {
  135. if((sutProductPara.MFotaIP[0] == 0xFF &&
  136. sutProductPara.MFotaIP[1] == 0xFF &&
  137. sutProductPara.MFotaIP[2] == 0xFF &&
  138. sutProductPara.MFotaIP[3] == 0xFF) ||
  139. sutProductPara.MFotaPort == 0xFFFF)
  140. {
  141. resetflag=1;
  142. }
  143. if(sutProductPara.ProductVersion <= 107 && PRODUCT_VERSION >= 108)
  144. {
  145. resetflag=2;
  146. }
  147. if(resetflag) ResetFip();
  148. }
  149. }
  150. /********************************************************************
  151. *SaveParaToFlash
  152. 将sutNetPara重要参数保存到FLASH
  153. *********************************************************************/
  154. #if 1
  155. //主参数区:127K MAIN_CONFIG_ADDR
  156. //备份参数:126K BACKUP_CONFIG_ADDR
  157. //1、使用时主要使用主参数区参数
  158. //2、每次更新主参数区时,一并更新备份参数区
  159. //3、开机后读取主参数区以及备份区
  160. //3.1、如果两者的NAME和PSN都全为FF,则认为是第一次启动,初始化所有主备参数;
  161. //3.2、非3.1的情况下,如果主区的NAME不为PRODUCT_NAME(第一次初始化时设置)时,或者主区的PSN为非法值(1000000<PSN<4200000000)时
  162. // 认为参数区异常,如果此时的备份区的NAME不为PRODUCT_NAME,或者备份区PSN为非法值时,则执行刷新操作,即初始化所有主备参数
  163. // 否则copy备份区到主区,然后使用此时主区参数运行
  164. //3.3、如果主备区都合法,但不一致,以主区为准
  165. #define MIN_PSN_NUM 1000000
  166. #define MAX_PSN_NUM 4200000000
  167. void ReadProductParaFromFlash(void)
  168. {
  169. SUT_PRODUCT_PARA backupPara;
  170. char mainLogic,backupLogic;
  171. char saveType;
  172. char buf[40];
  173. IWDG_ReloadCounter();
  174. saveType=0;//不用保存参数
  175. //1、读取主区参数
  176. ReadFlashData(MAIN_CONFIG_ADDR,(unsigned char *)&sutProductPara,sizeof(SUT_PRODUCT_PARA));
  177. //2、读取备份参数
  178. ReadFlashData(BACKUP_CONFIG_ADDR,(unsigned char *)&backupPara,sizeof(SUT_PRODUCT_PARA));
  179. //3.1、检测主区合法性
  180. mainLogic=0;//设置不合法
  181. if(0==strcmp(sutProductPara.ProductName,PRODUCT_NAME) && //产品名字相同
  182. (sutProductPara.PSN >= MIN_PSN_NUM && sutProductPara.PSN <= MAX_PSN_NUM))//PSN符合范围
  183. {
  184. mainLogic=1;//主区参数合法
  185. }
  186. //3.2、检测备份合法性
  187. backupLogic=0;//设置不合法
  188. if(0==strcmp(backupPara.ProductName,PRODUCT_NAME) && //产品名字相同
  189. (backupPara.PSN >= MIN_PSN_NUM && backupPara.PSN <= MAX_PSN_NUM)) //PSN符合范围
  190. {
  191. backupLogic=1;//备份参数合法
  192. }
  193. //3.3、如果主备都不合法,则进行刷机
  194. if(0==mainLogic && 0==backupLogic)
  195. {
  196. GetUniStringByID(sutProductPara.HARDID);
  197. SlwTrace(INF, "[1]Rst all para!",1);
  198. memset((unsigned char *)&sutProductPara,0,sizeof(SUT_PRODUCT_PARA));
  199. sutProductPara.PasswordInable=0;
  200. sutProductPara.McuFlag =MCU_FLAG; //MCU标识
  201. sutProductPara.IapFlag =0x88; //IAP标志 0x00--无应用程序 0x55--需要空中升级 0x88--正常运行应用程序
  202. sutProductPara.ModemType =MODEM_TYPE;
  203. sutProductPara.GpsType =GPS_TYPE;
  204. sutProductPara.FoTaServerSel=0;//FOTA服务器选择 0--POC Server 1--GPS Server
  205. strcpy(sutProductPara.ProductName,PRODUCT_NAME);
  206. sutProductPara.ProductVersion=PRODUCT_VERSION;
  207. sutProductPara.PocPort =POC_SERVER_PORT;
  208. sutProductPara.GpsPort =TSGPS_SERVER_PORT;
  209. sutProductPara.GpsPort2 =TSGPS_SERVER_PORT2;
  210. sutProductPara.FoTaPort =FOTA_SERVER_PORT;
  211. sutProductPara.PSN =MIN_PSN_NUM;//未写号情况下PSN为150000000
  212. sutProductPara.g_net=0; //网模自动
  213. //strcpy(sutProductPara.Password ,"123456");
  214. strcpy(sutProductPara.domain,DOMAIN_SERVER);
  215. strcpy(sutProductPara.PIP,POC_SERVER_IP);
  216. strcpy(sutProductPara.PIP2,POC_SERVER_IP2);
  217. sutProductPara.Ipselect=0;
  218. sutProductPara.SwitchIpFlag=0;
  219. strcpy(sutProductPara.GIP,GPS_SERVER_IP);
  220. strcpy(sutProductPara.GIP2,GPS_SERVER_IP2);
  221. sutProductPara.SwitchIpCt=0;
  222. sutProductPara.SwitchGipct=0;
  223. strcpy(sutProductPara.MEID,"00000000000000"); //14位 最后一位为0
  224. strcpy(sutProductPara.APNApn, APN_APN);
  225. strcpy(sutProductPara.APNName,APN_NAME);
  226. strcpy(sutProductPara.APNPass,APN_PASSWORD);
  227. sutProductPara.m_GPS_TimeIndex = DEFAULT_GPS_SEND_TIME_INDEX;
  228. ResetMip();
  229. ///////////////////////////////////////////
  230. ResetCip();
  231. strcpy(sutProductPara.APNApn, APN_APN);
  232. sutProductPara.APNIndex=APN_NUM-1;//默认使用资源文件中的第4个APN
  233. //然后保存参数
  234. saveType=1;//两个区都保存为:sutProductPara
  235. }
  236. //3.4、如果主合法,备非法,主copy到备
  237. else if(1==mainLogic && 0==backupLogic)
  238. {
  239. SlwTrace(INF, "[2]main-->backup",1);
  240. saveType=2;//仅保存:backupPara
  241. }
  242. //3.5、如果主非法,备合法,备copy到主
  243. else if(0==mainLogic && 1==backupLogic)
  244. {
  245. SlwTrace(INF, "[3]backup-->main",1);
  246. memcpy((unsigned char *)&sutProductPara, (unsigned char *)&backupPara, sizeof(SUT_PRODUCT_PARA));
  247. saveType=3;//仅保存:sutProductPara
  248. }
  249. //3.6、如果主备都合法,但不一致,主copy到备
  250. else if(1==mainLogic && 1==backupLogic && sutProductPara.PSN != backupPara.PSN)
  251. {
  252. SlwTrace(INF, "[4]main-->backup",1);
  253. saveType=2;//仅保存:backupPara
  254. }
  255. //3.7、如果主备都合法,但一致,不做任何操作
  256. else
  257. //{
  258. SlwTrace(INF, "[5]LogicOk",1);
  259. //检测是否版本发生了变更
  260. if(sutProductPara.ProductVersion != PRODUCT_VERSION)
  261. {//版本号发生了变化
  262. FotaIpCheck();
  263. sutProductPara.Ipselect=0;
  264. sutProductPara.SwitchIpFlag=0;
  265. sutProductPara.GIPSelect=0;
  266. sutProductPara.SwitchGIPFlag=0;
  267. sutProductPara.SwitchIpCt=0;
  268. sutProductPara.SwitchGipct=0;
  269. sutProductPara.APNIndex=APN_NUM-1;
  270. sutProductPara.ProductVersion=PRODUCT_VERSION;
  271. strcpy(sutProductPara.domain,DOMAIN_SERVER);
  272. //1.1 GPS upload time --> 15 seconds
  273. sutProductPara.m_GPS_TimeIndex = DEFAULT_GPS_SEND_TIME_INDEX;//恢复GPS默认上传时间
  274. //2.2 LCD back light no need to set here, it will reset in maintask init if LCD file changed
  275. //如检测集群与配置服参数是否有效,使得以前版本无此功能,然后升级版本后能生效此功能
  276. if((sutProductPara.ManagerIP[0] == 0xFF &&
  277. sutProductPara.ManagerIP[1] == 0xFF &&
  278. sutProductPara.ManagerIP[2] == 0xFF &&
  279. sutProductPara.ManagerIP[3] == 0xFF) ||
  280. sutProductPara.ManagerPort == 0xFFFF)
  281. {
  282. ResetMip();
  283. }
  284. if((sutProductPara.ConfigSerIP[0] == 0xFF &&
  285. sutProductPara.ConfigSerIP[1] == 0xFF &&
  286. sutProductPara.ConfigSerIP[2] == 0xFF &&
  287. sutProductPara.ConfigSerIP[3] == 0xFF) ||
  288. sutProductPara.ConfigSerPort == 0xFFFF)
  289. {
  290. ResetCip();
  291. }
  292. saveType=1;//两个区都保存为:sutProductPara
  293. SlwTrace(INF, "[6]Ver-Changed",1);
  294. }
  295. //}
  296. //检测GPS上传定位参数索引是否合法
  297. if(sutProductPara.m_GPS_TimeIndex >= sizeof(GPS_TimeTable))
  298. {
  299. sutProductPara.m_GPS_TimeIndex = DEFAULT_GPS_SEND_TIME_INDEX;
  300. saveType=1;
  301. }
  302. GpsTimeUpdate();
  303. if(sutProductPara.Ipselect>1){
  304. sutProductPara.Ipselect=0;
  305. saveType=1;
  306. }
  307. if(sutProductPara.GIPSelect>1){
  308. sutProductPara.GIPSelect=0;
  309. saveType=1;
  310. }
  311. if(sutProductPara.SwitchGIPFlag > 1){
  312. sutProductPara.SwitchGIPFlag=0;
  313. saveType=1;
  314. }
  315. if(sutProductPara.SwitchIpFlag > 1){
  316. sutProductPara.SwitchIpFlag=0;
  317. saveType=1;
  318. }
  319. //执行参数保存
  320. switch(saveType)
  321. {
  322. case 1://两个区都保存为:sutProductPara
  323. case 2://仅保存:backupPara
  324. case 3://仅保存:sutProductPara
  325. snprintf(buf, sizeof(buf), "READ_PARA_%d",saveType);
  326. SaveProductParaToFlash(buf);
  327. break;
  328. default:break;
  329. }
  330. SlwTrace(INF, "ParaRead_Done",1);
  331. printf("APN_INDEX:%d\r\n",sutProductPara.APNIndex);
  332. }
  333. #else
  334. void ReadProductParaFromFlash(void)
  335. {
  336. unsigned char Rand;
  337. unsigned char needSaveFlag;
  338. needSaveFlag = 0;
  339. Rand=GetRandBySTM32ID();
  340. ReadFlashData(MAIN_CONFIG_ADDR,(unsigned char *)&sutProductPara,sizeof(SUT_PRODUCT_PARA));
  341. if(MCU_FLAG!=sutProductPara.McuFlag || Rand!=sutProductPara.Rand \
  342. || 0!=strcmp(sutProductPara.ProductName,PRODUCT_NAME)){
  343. SlwTrace(INF,"Reset Config Param!",1);
  344. memset((unsigned char *)&sutProductPara,0,sizeof(SUT_PRODUCT_PARA));
  345. sutProductPara.McuFlag=MCU_FLAG; //MCU标识
  346. sutProductPara.IapFlag=0x88; //IAP标志 0x00--无应用程序 0x55--需要空中升级 0x88--正常运行应用程序
  347. sutProductPara.ModemType=MODEM_TYPE;
  348. sutProductPara.GpsType=GPS_TYPE;
  349. sutProductPara.g_net=0;
  350. sutProductPara.Rand=GetRandBySTM32ID(); //伪随机数,此数值和STM32硬件ID关联,每个不同的IC数值将不同
  351. sutProductPara.FoTaServerSel=0;//FOTA服务器选择 0--POC Server 1--GPS Server
  352. strcpy(sutProductPara.ProductName,PRODUCT_NAME);
  353. sutProductPara.ProductVersion=PRODUCT_VERSION;
  354. sutProductPara.PocPort=POC_SERVER_PORT;
  355. sutProductPara.GpsPort=TSGPS_SERVER_PORT;
  356. sutProductPara.FoTaPort=FOTA_SERVER_PORT;
  357. sutProductPara.PSN=150000000;//未写号情况下PSN为150000000
  358. strcpy(sutProductPara.PIP,POC_SERVER_IP);
  359. strcpy(sutProductPara.GIP,GPS_SERVER_IP);
  360. strcpy(sutProductPara.MEID,"00000000000000"); //14位 最后一位为0
  361. strcpy(sutProductPara.APNApn, APN_APN);
  362. strcpy(sutProductPara.APNName,APN_NAME);
  363. strcpy(sutProductPara.APNPass,APN_PASSWORD);
  364. sutProductPara.m_GPS_TimeIndex = DEFAULT_GPS_SEND_TIME_INDEX;
  365. sutProductPara.ManagerIP[0] = DEFAULT_LOAD_IP0;
  366. sutProductPara.ManagerIP[1] = DEFAULT_LOAD_IP1;
  367. sutProductPara.ManagerIP[2] = DEFAULT_LOAD_IP2;
  368. sutProductPara.ManagerIP[3] = DEFAULT_LOAD_IP3;
  369. sutProductPara.ManagerPort = DEFAULT_LOAD_PORT;
  370. ///////////////////////////////////////////
  371. sutProductPara.ConfigSerIP[0] = DEFAULT_CONFIG_IP0;
  372. sutProductPara.ConfigSerIP[1] = DEFAULT_CONFIG_IP1;
  373. sutProductPara.ConfigSerIP[2] = DEFAULT_CONFIG_IP2;
  374. sutProductPara.ConfigSerIP[3] = DEFAULT_CONFIG_IP3;
  375. sutProductPara.ConfigSerPort = DEFAULT_CONFIG_PORT;
  376. strcpy(sutProductPara.APNApn, APN_APN);
  377. sutProductPara.ApnParaIndex=0;//默认使用资源文件中的第一个APN
  378. needSaveFlag=1;
  379. }
  380. else if(PRODUCT_VERSION!=sutProductPara.ProductVersion){
  381. sutProductPara.ProductVersion=PRODUCT_VERSION;
  382. //Note V519:Version change
  383. //1.1 GPS upload time --> 15 seconds
  384. sutProductPara.m_GPS_TimeIndex = DEFAULT_GPS_SEND_TIME_INDEX;
  385. //2.2 LCD back light no need to set here, it will reset in maintask init if LCD file changed
  386. ///////////////////////////
  387. if((sutProductPara.ManagerIP[0] == 0xFF &&
  388. sutProductPara.ManagerIP[1] == 0xFF &&
  389. sutProductPara.ManagerIP[2] == 0xFF &&
  390. sutProductPara.ManagerIP[3] == 0xFF) ||
  391. sutProductPara.ManagerPort == 0xFFFF)
  392. {
  393. sutProductPara.ManagerIP[0] = DEFAULT_LOAD_IP0;
  394. sutProductPara.ManagerIP[1] = DEFAULT_LOAD_IP1;
  395. sutProductPara.ManagerIP[2] = DEFAULT_LOAD_IP2;
  396. sutProductPara.ManagerIP[3] = DEFAULT_LOAD_IP3;
  397. sutProductPara.ManagerPort = DEFAULT_LOAD_PORT;
  398. }
  399. if((sutProductPara.ConfigSerIP[0] == 0xFF &&
  400. sutProductPara.ConfigSerIP[1] == 0xFF &&
  401. sutProductPara.ConfigSerIP[2] == 0xFF &&
  402. sutProductPara.ConfigSerIP[3] == 0xFF) ||
  403. sutProductPara.ConfigSerPort == 0xFFFF)
  404. {
  405. sutProductPara.ConfigSerIP[0] = DEFAULT_CONFIG_IP0;
  406. sutProductPara.ConfigSerIP[1] = DEFAULT_CONFIG_IP1;
  407. sutProductPara.ConfigSerIP[2] = DEFAULT_CONFIG_IP2;
  408. sutProductPara.ConfigSerIP[3] = DEFAULT_CONFIG_IP3;
  409. sutProductPara.ConfigSerPort = DEFAULT_CONFIG_PORT;
  410. }
  411. needSaveFlag=1;
  412. }
  413. if(sutProductPara.m_GPS_TimeIndex >= sizeof(GPS_TimeTable))
  414. {
  415. sutProductPara.m_GPS_TimeIndex = DEFAULT_GPS_SEND_TIME_INDEX;
  416. needSaveFlag=1;
  417. }
  418. GpsTimeUpdate();
  419. sutPocStatus.LoginStatus = 0;
  420. if(needSaveFlag) SaveProductParaToFlash();
  421. ////////////////////////////////
  422. //sutProductPara.PSN=166000013;
  423. }
  424. #endif
  425. void GpsTimeUpdate(void)
  426. {
  427. sutGpsInfo.GPS_UploadTime = GPS_TimeTable[sutProductPara.m_GPS_TimeIndex];//20160825,这里再加载GPS时间,用户体验:在改了GPS值后,重启没放卡,去菜单看说GPS值没改到
  428. if(sutGpsInfo.GPS_UploadTime)//判断GPS是否已关,根据上传时间来算
  429. {
  430. GPS_PWREN_HIGH;
  431. g_uiGpsStat=1;
  432. }
  433. else{
  434. GPS_PWREN_LOW;
  435. g_uiGpsStat=0;
  436. //sutGpsInfo.isGpsWork=0;
  437. }
  438. }
  439. /************************************file begin*******************************/