our_service(6636).c 20 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060
  1. /**
  2. * Copyright (c) 2014 - 2018, Nordic Semiconductor ASA
  3. *
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without modification,
  7. * are permitted provided that the following conditions are met:
  8. *
  9. * 1. Redistributions of source code must retain the above copyright notice, this
  10. * list of conditions and the following disclaimer.
  11. *
  12. * 2. Redistributions in binary form, except as embedded into a Nordic
  13. * Semiconductor ASA integrated circuit in a product or a software update for
  14. * such product, must reproduce the above copyright notice, this list of
  15. * conditions and the following disclaimer in the documentation and/or other
  16. * materials provided with the distribution.
  17. *
  18. * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
  19. * contributors may be used to endorse or promote products derived from this
  20. * software without specific prior written permission.
  21. *
  22. * 4. This software, with or without modification, must only be used with a
  23. * Nordic Semiconductor ASA integrated circuit.
  24. *
  25. * 5. Any software provided in binary form under this license must not be reverse
  26. * engineered, decompiled, modified and/or disassembled.
  27. *
  28. * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
  29. * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  30. * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
  31. * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
  32. * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  33. * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
  34. * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  35. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  36. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  37. * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  38. *
  39. */
  40. #include <stdint.h>
  41. #include <string.h>
  42. #include "nrf_gpio.h"
  43. #include "our_service.h"
  44. #include "ble_srv_common.h"
  45. #include "app_error.h"
  46. #include "SEGGER_RTT.h"
  47. #include "board_gpi.h"
  48. #include "nrf_log.h"
  49. #include "sysmgr.h"
  50. char SvrRxBuffer[100];
  51. int SvrRxBufferPos;
  52. char SvrEvent;
  53. stSystemTimer SystemTimer;
  54. stSystemManager SystemManager;
  55. char SvrSendBuff[50];
  56. void delete_all_begin(void);
  57. void USART_DataCheck()
  58. {
  59. if( SystemTimer.UART_LAST_RECV_TIMER > 10 && SystemManager.RxValild )
  60. {
  61. SvrRxBuffer[SvrRxBufferPos] = 0;
  62. //printf("[%d]%s\r\n", SvrRxBufferPos, SvrRxBuffer);
  63. SystemManager.RxValild = 0;
  64. if( SvrRxBufferPos == 20 )
  65. {
  66. SystemManager.RxEvent = 1;
  67. }
  68. SvrRxBufferPos = 0;
  69. }
  70. if( SystemTimer.UART_LAST_RECV_TIMER > 10 && SvrRxBufferPos )
  71. {
  72. SystemManager.RxValild = 0;
  73. SvrRxBufferPos = 0;
  74. }
  75. }
  76. void USART_Handler(void)
  77. {
  78. char ch;
  79. //SystemTimer.UART1_LAST_RECV_TIMER = 0;
  80. uint8_t cr;
  81. if( app_uart_get(&cr) == NRF_SUCCESS )
  82. {
  83. SystemManager.RxValild = 1;
  84. SvrRxBuffer[SvrRxBufferPos++] = cr;
  85. SvrRxBufferPos %= 100;
  86. SystemTimer.UART_LAST_RECV_TIMER = 0;
  87. }
  88. }
  89. #define COM_TYPE_SVR_NORMAL 0x02
  90. #define COM_TYPE_SVR_TALKING 0x03
  91. #define COM_TYPE_SVR_DISCON 0x04
  92. #define COM_TYPE_SVR_BUSY 0x05
  93. #define COM_TYPE_SVR_ALIVE 0x06
  94. #define COM_TYPE_SVR_MIC 0x07
  95. #define COM_TYPE_SVR_RECV_REG 0x08
  96. #define COM_TYPE_SVR_RECV_INIT 0x0a
  97. #define COM_TYPE_SVR_RECV_LIST 0x0c
  98. #define COM_TYPE_SVR_VER_REQ 0x10
  99. #define COM_TYPE_SVR_CALL_REQ 0x12
  100. void Server_Call_Request()
  101. {
  102. NRF_LOG_INFO("Server_Call_Request");
  103. if( SystemManager.ServerCon == 0)
  104. {
  105. SystemManager.LedBlinkRun = 1;
  106. SystemManager.LedBlinkTimer = 5000;
  107. SystemTimer.LED_TOGGLE_TIMER = 0;
  108. SystemManager.DevType = 0;
  109. SystemManager.SwitchOn = 1;
  110. PKBuzzerOn();
  111. SendAck(COM_TYPE_SVR_CALL_REQ+1);
  112. }
  113. }
  114. void Server_Ver_Request()
  115. {
  116. NRF_LOG_INFO("Server_Ver_Request");
  117. if( SystemManager.ServerCon == 0)
  118. {
  119. SystemManager.LedBlinkRun = COM_TYPE_SVR_VER_REQ;
  120. SystemManager.LedBlinkTimer = 1500;
  121. SystemTimer.LED_TOGGLE_TIMER = 0;
  122. SystemManager.DevType = 0;
  123. SvrSendBuff[0] = COM_STX;
  124. SvrSendBuff[1] = COM_TYPE_SVR;
  125. SvrSendBuff[2] = 0;
  126. SvrSendBuff[3] = COM_TYPE_SVR_VER_REQ+1;
  127. SvrSendBuff[4] = SystemManager.PeerAddr[3];
  128. SvrSendBuff[5] = SystemManager.PeerAddr[4];
  129. SvrSendBuff[6] = SystemManager.PeerAddr[5];
  130. SvrSendBuff[7] = new_ble_addr.addr[3];
  131. SvrSendBuff[8] = new_ble_addr.addr[4];
  132. SvrSendBuff[9] = new_ble_addr.addr[5];
  133. SvrSendBuff[10] = 8;
  134. SvrSendBuff[11] = 0; //ver
  135. SvrSendBuff[12] = 0x80;
  136. SvrSendBuff[13] = 0;
  137. SvrSendBuff[14] = 0;
  138. SvrSendBuff[15] = 0;
  139. SvrSendBuff[16] = 0;
  140. SvrSendBuff[17] = 0;
  141. SvrSendBuff[18] = 0;
  142. SvrSendBuff[19] = COM_ETX;
  143. NRF_LOG_INFO("SendEmergency===");
  144. SendToEventServer(&SvrSendBuff[0], 20);
  145. SystemManager.SwitchOn = 1;
  146. PKBuzzerOn();
  147. }
  148. }
  149. void ParseEventServer()
  150. {
  151. int i;
  152. if( SystemManager.RxEvent == 0 )
  153. return;
  154. for( i=0; i<20; i++)
  155. {
  156. //printf("0x%02x ", SvrRxBuffer[i]);
  157. }
  158. //printf("\r\n");
  159. SystemManager.RxEvent = 0;
  160. if(SvrRxBuffer[0] != 0x02)
  161. return;
  162. if( SvrRxBuffer[1] == COM_TYPE_SVR )
  163. {
  164. if( SvrRxBuffer[3] == COM_TYPE_SVR_NORMAL )
  165. {
  166. NRF_LOG_INFO("Recv : Normal");
  167. PKLedOff();
  168. PKBuzzerOff();
  169. PKMicOff();
  170. SystemManager.SwitchOn = 0;
  171. }else if( SvrRxBuffer[3] == COM_TYPE_SVR_TALKING )
  172. {
  173. NRF_LOG_INFO("Recv : Talking");
  174. PKLedOn();
  175. PKBuzzerOff();
  176. SystemManager.SwitchOn = 0;
  177. }else if( SvrRxBuffer[3] == COM_TYPE_SVR_DISCON )
  178. {
  179. NRF_LOG_INFO("Recv : Disconnect");
  180. SystemManager.SwitchOn = 0;
  181. //bsp_board_leds_off();
  182. }else if( SvrRxBuffer[3] == COM_TYPE_SVR_BUSY )
  183. {
  184. NRF_LOG_INFO("Recv : Busy");
  185. }else if( SvrRxBuffer[3] == COM_TYPE_SVR_ALIVE )
  186. {
  187. NRF_LOG_INFO("Recv : Keep Alive");
  188. }else if( SvrRxBuffer[3] == COM_TYPE_SVR_MIC )
  189. {
  190. NRF_LOG_INFO("Recv : mic on/off");
  191. if( SvrRxBuffer[11] == 0 )
  192. {
  193. NRF_LOG_INFO("mic off");
  194. NRF_LOG_INFO("speaker off");
  195. PKSpeakerOff();
  196. PKMicOn();
  197. PKBuzzerOff();
  198. PKLedOn();
  199. SystemManager.SwitchOn = 0;
  200. }else{
  201. NRF_LOG_INFO("mic on");
  202. NRF_LOG_INFO("speaker on");
  203. PKMicOff();
  204. PKSpeakerOn();
  205. PKLedOn();
  206. }
  207. }
  208. else if( SvrRxBuffer[3] == COM_TYPE_SVR_RECV_REG )
  209. {
  210. NRF_LOG_INFO("Recv : COM_TYPE_SVR_RECV_REG");
  211. SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_REG;
  212. SystemManager.RegRequst = 1;
  213. SendAck(COM_TYPE_SVR_RECV_REG+1);
  214. SystemTimer.DEV_REG_TIMER = 0;
  215. }else if( SvrRxBuffer[3] == COM_TYPE_SVR_RECV_INIT )
  216. {
  217. SystemManager.SwitchOn = 1;
  218. //PKBuzzerOn();
  219. SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_INIT;
  220. SystemManager.LedBlinkTimer = 2500;
  221. SystemTimer.LED_TOGGLE_TIMER = 0;
  222. NRF_LOG_INFO("Recv : COM_TYPE_SVR_RECV_INIT");
  223. SendAck(COM_TYPE_SVR_RECV_INIT+1);
  224. //for( i=0; i<RegMacPool.Count; i++)
  225. //{
  226. //RegMacDelteAll();
  227. // }
  228. memset( &RegMacPool, 0, sizeof(RegMacPool));
  229. delete_all_begin();
  230. }
  231. else if( SvrRxBuffer[3] == COM_TYPE_SVR_RECV_LIST )
  232. {
  233. SystemManager.SwitchOn = 1;
  234. //PKBuzzerOn();
  235. SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_LIST;
  236. SystemManager.LedBlinkTimer = 1500;
  237. SystemTimer.LED_TOGGLE_TIMER = 0;
  238. NRF_LOG_INFO("Recv : COM_TYPE_SVR_RECV_LIST");
  239. SendDevList();
  240. }else if( SvrRxBuffer[3] == COM_TYPE_SVR_CALL_REQ )
  241. {
  242. NRF_LOG_INFO("Recv : COM_TYPE_SVR_CALL_REQ");
  243. Server_Call_Request();
  244. }else if( SvrRxBuffer[3] == COM_TYPE_SVR_VER_REQ )
  245. {
  246. NRF_LOG_INFO("Recv : COM_TYPE_SVR_VER_REQ");
  247. Server_Ver_Request();
  248. }
  249. }
  250. else if( SvrRxBuffer[1] == COM_TYPE_BAND )
  251. {
  252. }
  253. }
  254. void SendToEventServer(char* data, int len)
  255. {
  256. int i;
  257. NRF_LOG_RAW_INFO("SendToEventServer ==> ");
  258. for( i=0; i<len; i++)
  259. {
  260. NRF_LOG_RAW_INFO("%02x ", data[i]);
  261. while (app_uart_put(data[i]) != NRF_SUCCESS);
  262. }
  263. NRF_LOG_RAW_INFO("\n");
  264. }
  265. void SendEmergency()
  266. {
  267. if( SystemManager.RegRequst == 1 )
  268. {
  269. SystemManager.RegRequst = 0;
  270. return;
  271. }
  272. SvrSendBuff[0] = COM_STX;
  273. SvrSendBuff[1] = COM_TYPE_SVR;
  274. SvrSendBuff[2] = 0;
  275. SvrSendBuff[3] = COM_TYPE_BELL_EMG;
  276. SvrSendBuff[4] = SystemManager.PeerAddr[3];
  277. SvrSendBuff[5] = SystemManager.PeerAddr[4];
  278. SvrSendBuff[6] = SystemManager.PeerAddr[5];
  279. SvrSendBuff[7] = new_ble_addr.addr[3];
  280. SvrSendBuff[8] = new_ble_addr.addr[4];
  281. SvrSendBuff[9] = new_ble_addr.addr[5];
  282. SvrSendBuff[10] = 8;
  283. SvrSendBuff[11] = 0;
  284. SvrSendBuff[12] = 0;
  285. SvrSendBuff[13] = 0;
  286. SvrSendBuff[14] = 0;
  287. SvrSendBuff[15] = 0;
  288. SvrSendBuff[16] = 0;
  289. SvrSendBuff[17] = 0;
  290. SvrSendBuff[18] = 0;
  291. SvrSendBuff[19] = COM_ETX;
  292. NRF_LOG_INFO("SendEmergency===");
  293. SendToEventServer(&SvrSendBuff[0], 20);
  294. SystemManager.SwitchOn = 1;
  295. PKBuzzerOn();
  296. }
  297. void SendParkingApp()
  298. {
  299. int i;
  300. SvrSendBuff[0] = COM_STX;
  301. SvrSendBuff[1] = 3;
  302. SvrSendBuff[2] = 0;
  303. SvrSendBuff[3] = 1;
  304. SvrSendBuff[4] = SystemManager.PeerAddr[3];
  305. SvrSendBuff[5] = SystemManager.PeerAddr[4];
  306. SvrSendBuff[6] = SystemManager.PeerAddr[5];
  307. SvrSendBuff[7] = new_ble_addr.addr[3];
  308. SvrSendBuff[8] = new_ble_addr.addr[4];
  309. SvrSendBuff[9] = new_ble_addr.addr[5];
  310. SvrSendBuff[10] = 11;
  311. SvrSendBuff[11] = 0x74;
  312. SvrSendBuff[12] = 0; //uuid
  313. SvrSendBuff[13] = 0;
  314. SvrSendBuff[14] = 0;
  315. SvrSendBuff[15] = 0;
  316. SvrSendBuff[16] = SystemManager.Site[0]; //Site
  317. SvrSendBuff[17] = SystemManager.Site[1];
  318. SvrSendBuff[18] = SystemManager.Site[2];
  319. SvrSendBuff[19] = SystemManager.Site[3];
  320. SvrSendBuff[20] = SystemManager.Dong[0]; //Dong
  321. SvrSendBuff[21] = SystemManager.Dong[1];
  322. SvrSendBuff[22] = SystemManager.Ho[0]; //Ho
  323. SvrSendBuff[23] = SystemManager.Ho[1];
  324. SvrSendBuff[24] = 0; //KEY NUM
  325. SvrSendBuff[25] = 0; //KEY TYPE
  326. SvrSendBuff[26] = 0; //Random
  327. SvrSendBuff[27] = 0;
  328. SvrSendBuff[28] = COM_ETX;
  329. NRF_LOG_INFO("SendParkingBand===");
  330. SendToEventServer(&SvrSendBuff[0], 29);
  331. }
  332. void SendEmergencyBand()
  333. {
  334. int i;
  335. SvrSendBuff[0] = COM_STX;
  336. SvrSendBuff[1] = 2;
  337. SvrSendBuff[2] = 0;
  338. SvrSendBuff[3] = COM_TYPE_BELL_EMG;
  339. SvrSendBuff[4] = SystemManager.PeerAddr[3];
  340. SvrSendBuff[5] = SystemManager.PeerAddr[4];
  341. SvrSendBuff[6] = SystemManager.PeerAddr[5];
  342. SvrSendBuff[7] = new_ble_addr.addr[3];
  343. SvrSendBuff[8] = new_ble_addr.addr[4];
  344. SvrSendBuff[9] = new_ble_addr.addr[5];
  345. SvrSendBuff[10] = 11;
  346. SvrSendBuff[11] = 0x72;
  347. SvrSendBuff[12] = 0; //uuid
  348. SvrSendBuff[13] = 0;
  349. SvrSendBuff[14] = 0;
  350. SvrSendBuff[15] = 0;
  351. SvrSendBuff[16] = SystemManager.Site[0]; //Site
  352. SvrSendBuff[17] = SystemManager.Site[1];
  353. SvrSendBuff[18] = SystemManager.Site[2];
  354. SvrSendBuff[19] = SystemManager.Site[3];
  355. SvrSendBuff[20] = SystemManager.Dong[0]; //Dong
  356. SvrSendBuff[21] = SystemManager.Dong[1];
  357. SvrSendBuff[22] = SystemManager.Ho[0]; //Ho
  358. SvrSendBuff[23] = SystemManager.Ho[1];
  359. SvrSendBuff[24] = 0; //KEY NUM
  360. SvrSendBuff[25] = 0; //KEY TYPE
  361. SvrSendBuff[26] = 0; //Random
  362. SvrSendBuff[27] = 0;
  363. SvrSendBuff[28] = COM_ETX;
  364. NRF_LOG_INFO("SendEmergencyBand===");
  365. SendToEventServer(&SvrSendBuff[0], 29);
  366. SystemManager.SwitchOn = 1;
  367. PKBuzzerOn();
  368. //NRF_LOG_RAW_INFO("================= Emergency\n");
  369. for( i=0; i<29; i++)
  370. {
  371. //NRF_LOG_RAW_INFO("%02x ", SvrSendBuff[i]);
  372. }
  373. NRF_LOG_RAW_INFO("\n");
  374. }
  375. void SendParkingBand()
  376. {
  377. int i;
  378. SvrSendBuff[0] = COM_STX;
  379. SvrSendBuff[1] = 2;
  380. SvrSendBuff[2] = 0;
  381. SvrSendBuff[3] = 2;
  382. SvrSendBuff[4] = SystemManager.PeerAddr[3];
  383. SvrSendBuff[5] = SystemManager.PeerAddr[4];
  384. SvrSendBuff[6] = SystemManager.PeerAddr[5];
  385. SvrSendBuff[7] = new_ble_addr.addr[3];
  386. SvrSendBuff[8] = new_ble_addr.addr[4];
  387. SvrSendBuff[9] = new_ble_addr.addr[5];
  388. SvrSendBuff[10] = 11;
  389. SvrSendBuff[11] = 0x73;
  390. SvrSendBuff[12] = 0; //uuid
  391. SvrSendBuff[13] = 0;
  392. SvrSendBuff[14] = 0;
  393. SvrSendBuff[15] = 0;
  394. SvrSendBuff[16] = SystemManager.Site[0]; //Site
  395. SvrSendBuff[17] = SystemManager.Site[1];
  396. SvrSendBuff[18] = SystemManager.Site[2];
  397. SvrSendBuff[19] = SystemManager.Site[3];
  398. SvrSendBuff[20] = SystemManager.Dong[0]; //Dong
  399. SvrSendBuff[21] = SystemManager.Dong[1];
  400. SvrSendBuff[22] = SystemManager.Ho[0]; //Ho
  401. SvrSendBuff[23] = SystemManager.Ho[1];
  402. SvrSendBuff[24] = 0; //KEY NUM
  403. SvrSendBuff[25] = 0; //KEY TYPE
  404. SvrSendBuff[26] = 0; //Random
  405. SvrSendBuff[27] = 0;
  406. SvrSendBuff[28] = COM_ETX;
  407. NRF_LOG_INFO("SendParkingBand===");
  408. SendToEventServer(&SvrSendBuff[0], 29);
  409. SystemManager.SwitchOn = 1;
  410. PKBuzzerOn();
  411. }
  412. void SendAck(uint8_t cmd)
  413. {
  414. SvrSendBuff[0] = COM_STX;
  415. SvrSendBuff[1] = COM_TYPE_SVR;
  416. SvrSendBuff[2] = 0;
  417. SvrSendBuff[3] = cmd;
  418. SvrSendBuff[4] = 0;
  419. SvrSendBuff[5] = 0;
  420. SvrSendBuff[6] = 0;
  421. SvrSendBuff[7] = new_ble_addr.addr[3];
  422. SvrSendBuff[8] = new_ble_addr.addr[4];
  423. SvrSendBuff[9] = new_ble_addr.addr[5];
  424. SvrSendBuff[10] = 8;
  425. SvrSendBuff[11] = 'A';
  426. SvrSendBuff[12] = 'C';
  427. SvrSendBuff[13] = 'K';
  428. SvrSendBuff[14] = 0;
  429. SvrSendBuff[15] = 0;
  430. SvrSendBuff[16] = 0;
  431. SvrSendBuff[17] = 0;
  432. SvrSendBuff[18] = 0;
  433. SvrSendBuff[19] = COM_ETX;
  434. NRF_LOG_INFO("cmd:0x%02x ack", cmd);
  435. SendToEventServer(&SvrSendBuff[0], 20);
  436. }
  437. void SendDevList()
  438. {
  439. char tmpStr[10];
  440. int i;
  441. if( RegMacPool.Count == 0 )
  442. {
  443. strcpy( tmpStr, &RegMacPool.Mac[i][6]);
  444. tmpStr[6] = 0;
  445. SvrSendBuff[6] = strtoul( &tmpStr[4], NULL, 16 );
  446. tmpStr[4] = 0;
  447. SvrSendBuff[5] = strtoul( &tmpStr[2], NULL, 16 );
  448. tmpStr[2] = 0;
  449. SvrSendBuff[4] = strtoul( &tmpStr[0], NULL, 16 );
  450. SvrSendBuff[0] = COM_STX;
  451. SvrSendBuff[1] = COM_TYPE_SVR;
  452. SvrSendBuff[2] = 0;
  453. SvrSendBuff[3] = 0x0d;
  454. SvrSendBuff[7] = 0;
  455. SvrSendBuff[8] = 0;
  456. SvrSendBuff[9] = 0;
  457. SvrSendBuff[10] = 8;
  458. SvrSendBuff[11] = 0;
  459. SvrSendBuff[12] = 0;
  460. SvrSendBuff[13] = 0;
  461. SvrSendBuff[14] = 0;
  462. SvrSendBuff[15] = 0;
  463. SvrSendBuff[16] = 0;
  464. SvrSendBuff[17] = 0;
  465. SvrSendBuff[18] = 0;
  466. SvrSendBuff[19] = COM_ETX;
  467. NRF_LOG_INFO("DevList %02x%02x%02x", SvrSendBuff[4], SvrSendBuff[5], SvrSendBuff[6]);
  468. SendToEventServer(&SvrSendBuff[0], 20);
  469. nrf_delay_ms(50);
  470. }
  471. for( i=0; i<RegMacPool.Count; i++)
  472. {
  473. strcpy( tmpStr, &RegMacPool.Mac[i][6]);
  474. tmpStr[6] = 0;
  475. SvrSendBuff[6] = strtoul( &tmpStr[4], NULL, 16 );
  476. tmpStr[4] = 0;
  477. SvrSendBuff[5] = strtoul( &tmpStr[2], NULL, 16 );
  478. tmpStr[2] = 0;
  479. SvrSendBuff[4] = strtoul( &tmpStr[0], NULL, 16 );
  480. SvrSendBuff[0] = COM_STX;
  481. SvrSendBuff[1] = COM_TYPE_SVR;
  482. SvrSendBuff[2] = 0;
  483. SvrSendBuff[3] = 0x0d;
  484. //SvrSendBuff[4] = RegMacPool.Mac[i][];
  485. //SvrSendBuff[5] = SystemManager.PeerAddr[4];
  486. //SvrSendBuff[6] = SystemManager.PeerAddr[5];
  487. SvrSendBuff[7] = new_ble_addr.addr[3];
  488. SvrSendBuff[8] = new_ble_addr.addr[4];
  489. SvrSendBuff[9] = new_ble_addr.addr[5];
  490. SvrSendBuff[10] = 8;
  491. SvrSendBuff[11] = 0;
  492. SvrSendBuff[12] = 0;
  493. SvrSendBuff[13] = 0;
  494. SvrSendBuff[14] = 0;
  495. SvrSendBuff[15] = 0;
  496. SvrSendBuff[16] = 0;
  497. SvrSendBuff[17] = 0;
  498. SvrSendBuff[18] = 0;
  499. SvrSendBuff[19] = COM_ETX;
  500. NRF_LOG_INFO("DevList %02x%02x%02x", SvrSendBuff[4], SvrSendBuff[5], SvrSendBuff[6]);
  501. SendToEventServer(&SvrSendBuff[0], 20);
  502. nrf_delay_ms(200);
  503. }
  504. //SystemManager.SwitchOn = 1;
  505. //PKBuzzerOn();
  506. }
  507. void SendCurrentRegDev()
  508. {
  509. SvrSendBuff[0] = COM_STX;
  510. SvrSendBuff[1] = COM_TYPE_SVR;
  511. SvrSendBuff[2] = 0;
  512. SvrSendBuff[3] = 0x0d;
  513. SvrSendBuff[4] = SystemManager.PeerAddr[3];
  514. SvrSendBuff[5] = SystemManager.PeerAddr[4];
  515. SvrSendBuff[6] = SystemManager.PeerAddr[5];
  516. SvrSendBuff[7] = new_ble_addr.addr[3];
  517. SvrSendBuff[8] = new_ble_addr.addr[4];
  518. SvrSendBuff[9] = new_ble_addr.addr[5];
  519. SvrSendBuff[10] = 8;
  520. SvrSendBuff[11] = 0;
  521. SvrSendBuff[12] = 0;
  522. SvrSendBuff[13] = 0;
  523. SvrSendBuff[14] = 0;
  524. SvrSendBuff[15] = 0;
  525. SvrSendBuff[16] = 0;
  526. SvrSendBuff[17] = 0;
  527. SvrSendBuff[18] = 0;
  528. SvrSendBuff[19] = COM_ETX;
  529. NRF_LOG_INFO("DevList %02x%02x%02x", SvrSendBuff[4], SvrSendBuff[5], SvrSendBuff[6]);
  530. SendToEventServer(&SvrSendBuff[0], 20);
  531. nrf_delay_ms(50);
  532. }
  533. void SendEmergencyLocal()
  534. {
  535. SvrSendBuff[0] = COM_STX;
  536. SvrSendBuff[1] = COM_TYPE_SVR;
  537. SvrSendBuff[2] = 0;
  538. SvrSendBuff[3] = COM_TYPE_BELL_EMG;
  539. SvrSendBuff[4] = 0xaa;
  540. SvrSendBuff[5] = 0xaa;
  541. SvrSendBuff[6] = 0xaa;
  542. SvrSendBuff[7] = 0xbb;
  543. SvrSendBuff[8] = 0xbb;
  544. SvrSendBuff[9] = 0xbb;
  545. SvrSendBuff[10] = 8;
  546. SvrSendBuff[11] = 0;
  547. SvrSendBuff[12] = 0;
  548. SvrSendBuff[13] = 0;
  549. SvrSendBuff[14] = 0;
  550. SvrSendBuff[15] = 0;
  551. SvrSendBuff[16] = 0;
  552. SvrSendBuff[17] = 0;
  553. SvrSendBuff[18] = 0;
  554. SvrSendBuff[19] = COM_ETX;
  555. SendToEventServer(&SvrSendBuff[0], 20);
  556. SystemManager.SwitchOn = 1;
  557. PKBuzzerOn();
  558. }
  559. void AliveTest()
  560. {
  561. SystemManager.SwitchOn = 1;
  562. PKBuzzerOn();
  563. SystemManager.LedBlinkRun = COM_TYPE_SVR_ALIVE;
  564. SystemManager.LedBlinkTimer = 3300;
  565. SystemTimer.LED_TOGGLE_TIMER = 0;
  566. }
  567. void SendTest()
  568. {
  569. if( SystemTimer.SEND_TEST_TIMER< 3000 )
  570. return;
  571. SystemTimer.SEND_TEST_TIMER = 0;
  572. SendEmergency();
  573. }
  574. void LedToggle()
  575. {
  576. static char toggle = 0;
  577. if( SystemManager.RegRequst )
  578. {
  579. if( SystemTimer.DEV_REG_TIMER >= 60000 )
  580. {
  581. SystemManager.RegRequst = 0;
  582. PKLedOff();
  583. SystemManager.LedBlinkRun = 0;
  584. }
  585. }
  586. if( SystemManager.LedBlinkRun == COM_TYPE_SVR_RECV_REG )
  587. {
  588. PKLedOn();
  589. return;
  590. }
  591. if( SystemManager.LedBlinkRun == COM_TYPE_SVR_RECV_REG+1 )
  592. {
  593. if( SystemManager.RegRequst == 1 )
  594. {
  595. if( SystemManager.LedBlinkTimer < 0 )
  596. {
  597. SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_REG;
  598. PKLedOn();
  599. return;
  600. }
  601. }
  602. if( SystemTimer.LED_TOGGLE_TIMER < 500 )
  603. return;
  604. SystemTimer.LED_TOGGLE_TIMER = 0;
  605. if( toggle++&0x01)
  606. {
  607. PKLedOn();
  608. }else{
  609. PKLedOff();
  610. }
  611. }
  612. if( SystemManager.LedBlinkRun == COM_TYPE_SVR_PARKING )
  613. {
  614. if( SystemManager.LedBlinkTimer < 0 )
  615. {
  616. SystemManager.LedBlinkRun = 0;
  617. PKLedOff();
  618. return;
  619. }
  620. if( SystemTimer.LED_TOGGLE_TIMER < 500 )
  621. return;
  622. SystemTimer.LED_TOGGLE_TIMER = 0;
  623. if( toggle++&0x01)
  624. {
  625. PKLedOn();
  626. }else{
  627. PKLedOff();
  628. }
  629. }
  630. if( SystemManager.LedBlinkRun == COM_TYPE_SVR_RECV_INIT )
  631. {
  632. if( SystemManager.LedBlinkTimer < 0 )
  633. {
  634. SystemManager.LedBlinkRun = 0;
  635. PKLedOff();
  636. return;
  637. }
  638. if( SystemTimer.LED_TOGGLE_TIMER < 500 )
  639. return;
  640. SystemTimer.LED_TOGGLE_TIMER = 0;
  641. if( toggle++&0x01)
  642. {
  643. PKLedOn();
  644. }else{
  645. PKLedOff();
  646. }
  647. }
  648. if( SystemManager.LedBlinkRun == COM_TYPE_SVR_RECV_LIST
  649. || SystemManager.LedBlinkRun == COM_TYPE_SVR_VER_REQ)
  650. {
  651. if( SystemManager.LedBlinkTimer < 0 )
  652. {
  653. SystemManager.LedBlinkRun = 0;
  654. PKLedOff();
  655. return;
  656. }
  657. if( SystemTimer.LED_TOGGLE_TIMER < 500 )
  658. return;
  659. SystemTimer.LED_TOGGLE_TIMER = 0;
  660. if( toggle++&0x01)
  661. {
  662. PKLedOn();
  663. }else{
  664. PKLedOff();
  665. }
  666. }
  667. if( SystemManager.LedBlinkRun == COM_TYPE_SVR_ALIVE )
  668. {
  669. if( SystemManager.LedBlinkTimer < 0 )
  670. {
  671. SystemManager.LedBlinkRun = 0;
  672. PKLedOff();
  673. PKBuzzerOff();
  674. return;
  675. }
  676. if( SystemTimer.LED_TOGGLE_TIMER < 500 )
  677. return;
  678. SystemTimer.LED_TOGGLE_TIMER = 0;
  679. if( toggle++&0x01)
  680. {
  681. PKLedOn();
  682. }else{
  683. PKLedOff();
  684. }
  685. }
  686. if( SystemManager.SwitchOn == 0 )
  687. return;
  688. if( SystemManager.LedBlinkRun == 0 )
  689. return;
  690. #if 0
  691. if( SystemManager.LedBlinkTimer < 0 )
  692. {
  693. SystemManager.LedBlinkRun = 0;
  694. PKLedOff();
  695. return;
  696. }
  697. #endif
  698. if( SystemTimer.LED_TOGGLE_TIMER < 500 )
  699. return;
  700. SystemTimer.LED_TOGGLE_TIMER = 0;
  701. if( toggle++&0x01)
  702. {
  703. PKLedOn();
  704. }else{
  705. PKLedOff();
  706. }
  707. }