/** * Copyright (c) 2014 - 2018, Nordic Semiconductor ASA * * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form, except as embedded into a Nordic * Semiconductor ASA integrated circuit in a product or a software update for * such product, must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other * materials provided with the distribution. * * 3. Neither the name of Nordic Semiconductor ASA nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * 4. This software, with or without modification, must only be used with a * Nordic Semiconductor ASA integrated circuit. * * 5. Any software provided in binary form under this license must not be reverse * engineered, decompiled, modified and/or disassembled. * * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ #include #include #include "nrf_gpio.h" #include "our_service.h" #include "ble_srv_common.h" #include "app_error.h" #include "SEGGER_RTT.h" #include "board_gpi.h" #include "nrf_log.h" #include "sysmgr.h" #include "main.h" #include "nrf_power.h" char SvrRxBuffer[100]; int SvrRxBufferPos; char SvrEvent; stSystemTimer SystemTimer; stSystemManager SystemManager; char SvrSendBuff[50]; void delete_all_begin(void); void USART_DataCheck() { if( SystemTimer.UART_LAST_RECV_TIMER > 10 && SystemManager.RxValild ) { SvrRxBuffer[SvrRxBufferPos] = 0; //printf("[%d]%s\r\n", SvrRxBufferPos, SvrRxBuffer); SystemManager.RxValild = 0; if( SvrRxBufferPos == 20 ) { SystemManager.RxEvent = 1; NRF_LOG_RAW_INFO("==========================>\n\n"); } SvrRxBufferPos = 0; } if( SystemTimer.UART_LAST_RECV_TIMER > 10 && SvrRxBufferPos ) { SystemManager.RxValild = 0; SvrRxBufferPos = 0; } } void USART_Handler(void) { char ch; uint8_t cr; // SystemTimer.UART1_LAST_RECV_TIMER = 0; if( app_uart_get(&cr) == NRF_SUCCESS ) { SystemManager.RxValild = 1; SvrRxBuffer[SvrRxBufferPos++] = cr; SvrRxBufferPos %= 100; SystemTimer.UART_LAST_RECV_TIMER = 0; } } /* À̺¥Æ® ¼­¹ö¿¡¼­ 20byte µé¾î¿ÔÀ»¶§ */ void ParseEventServer() { int i; if( SystemManager.RxEvent == 0 ) return; SystemManager.RxEvent = 0; NRF_LOG_RAW_INFO("\n\n"); NRF_LOG_RAW_INFO("SERVER TO DATA : ") for( i=0; i<20; i++) { NRF_LOG_RAW_INFO("0x%02x ", SvrRxBuffer[i]); } NRF_LOG_RAW_INFO("\n\n"); if(SvrRxBuffer[0] != 0x02) return; switch(SvrRxBuffer[1]){ case NUM_TYPE_SVR: switch(SvrRxBuffer[3]){ // ¼ö½Å±â ´ë±â»óÅ ¿äû case COM_TYPE_SVR_NORMAL: NRF_LOG_INFO("Recv : Normal"); PKLedOff(); PKBuzzerOff(); PKMicOff(); SystemManager.SwitchOn = 0; break; // ¼ö½Å±â ÅëÈ­»óÅ ¿äû case COM_TYPE_SVR_TALKING: NRF_LOG_INFO("Recv : Talking"); PKLedOn(); PKBuzzerOff(); SystemManager.SwitchOn = 0; break; // ¼ö½Å±â ¼­¹ö¿Í ÅëÈ­ Á¾·á ¿äû case COM_TYPE_SVR_DISCON: NRF_LOG_INFO("Recv : Disconnect"); SystemManager.SwitchOn = 0; //bsp_board_leds_off(); break; // ¼­¹ö Busy »óÅ ¾Ë¸² case COM_TYPE_SVR_BUSY: NRF_LOG_INFO("Recv : Busy"); break; // ¼Û½Å±â Alive½ÅÈ£ ¼­¹ö·Î Àü¼Û case COM_TYPE_SVR_ALIVE: NRF_LOG_INFO("Recv : Keep Alive"); break; // ¼ö½Å±â ¸¶ÀÌÅ© »óÅ º¯°æ ¿äû case COM_TYPE_SVR_MIC: NRF_LOG_INFO("Recv : mic on/off"); if( SvrRxBuffer[11] == 0 ) { NRF_LOG_INFO("mic on"); NRF_LOG_INFO("speaker off"); PKSpeakerOff(); PKMicOn(); PKBuzzerOff(); PKLedOn(); SystemManager.SwitchOn = 0; }else{ NRF_LOG_INFO("mic off"); NRF_LOG_INFO("speaker on"); PKMicOff(); PKSpeakerOn(); PKLedOn(); } break; // ¼Û½Å±â µî·Ï¿äû case COM_TYPE_SVR_RECV_REG_REQ: NRF_LOG_INFO("Recv : COM_TYPE_SVR_RECV_REG"); SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_REG; SystemManager.RegRequst = 1; SendAck(COM_TYPE_SVR_RECV_REG+1); SystemTimer.DEV_REG_TIMER = 0; break; // ¼Û½Å±â µî·Ï ÃʱâÈ­ ¿äû case COM_TYPE_SVR_RECV_INIT_REQ: NRF_LOG_INFO("Recv : COM_TYPE_SVR_RECV_INIT"); // SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_INIT; // SystemManager.LedBlinkTimer = 2500; // SystemTimer.LED_TOGGLE_TIMER = 0; // SystemManager.SwitchOn = 1; SendAck(COM_TYPE_SVR_RECV_INIT+1); //for( i=0; i "); for( i=0; i ¼Û½Å±â --------> Event Server * *******************************************************************************/ void SendParkingApp() { int i; NRF_LOG_RAW_INFO("===> SendParkingApp()\n"); SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_ONEPASS; SvrSendBuff[2] = 0; SvrSendBuff[3] = 1; SvrSendBuff[4] = 0; SvrSendBuff[5] = 0; SvrSendBuff[6] = 0; SvrSendBuff[7] = new_ble_addr.addr[3]; // ¼ö½Å±â MAC SvrSendBuff[8] = new_ble_addr.addr[4]; // ¼ö½Å±â MAC SvrSendBuff[9] = new_ble_addr.addr[5]; // ¼ö½Å±â MAC SvrSendBuff[10] = 0x12; SvrSendBuff[11] = 0x74; SvrSendBuff[12] = 0; SvrSendBuff[13] = 0; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = SystemManager.Site[0]; //SITE SvrSendBuff[17] = SystemManager.Site[1]; SvrSendBuff[18] = SystemManager.Site[2]; SvrSendBuff[19] = SystemManager.Site[3]; SvrSendBuff[20] = SystemManager.Dong[0]; //DONG SvrSendBuff[21] = SystemManager.Dong[1]; SvrSendBuff[22] = SystemManager.Ho[0]; //HO SvrSendBuff[23] = SystemManager.Ho[1]; SvrSendBuff[24] = 0; //KEY NUM SvrSendBuff[25] = 0; //KEY TYPE SvrSendBuff[26] = 0; //Random SvrSendBuff[27] = 0; for(i=1; i<28; i++){ SvrSendBuff[28] = SvrSendBuff[28] + SvrSendBuff[i]; } SvrSendBuff[29] = COM_ETX; NRF_LOG_INFO("SendParkingApp ==="); SendToEventServer(&SvrSendBuff[0], 1); SendToEventServer(&SvrSendBuff[0], 30); for(i=0; i<2; i++){ PKLedOn(); nrf_delay_ms(300); PKLedOff(); nrf_delay_ms(300); } nrf_delay_ms(2000); // Áߺ¹Çؼ­ µé¾î¿À´Â µ¥ÀÌŸ·Î ÀÎÇÑ ¿¬¼Ó µ¿ÀÛ ¹æÁö } /****************************************************************************** * * Band ---> ¼Û½Å±â --------> Event Server * *******************************************************************************/ void SendEmergencyBand() { int i; char tmpStr[10]; NRF_LOG_RAW_INFO("===> SendEmergencyBand()\n"); SystemManager.LedBlinkRun = 1; SystemManager.LedBlinkTimer = 5000; SystemTimer.LED_TOGGLE_TIMER = 0; SystemManager.DevType = 0; SystemManager.SwitchOn = 1; PKBuzzerOn(); SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_SMART_BAND; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_BELL_EMG; SvrSendBuff[4] = 0; SvrSendBuff[5] = 0; SvrSendBuff[6] = 0; if( RegMacPool.Count != 0 ){ // µî·ÏµÈ ¼Û½Å±â°¡ ÀÖÀ¸¸é ù¹ø° MAC Àü¼Û strcpy( tmpStr, &RegMacPool.Mac[0][6]); tmpStr[6] = 0; SvrSendBuff[6] = strtoul( &tmpStr[4], NULL, 16 ); tmpStr[4] = 0; SvrSendBuff[5] = strtoul( &tmpStr[2], NULL, 16 ); tmpStr[2] = 0; SvrSendBuff[4] = strtoul( &tmpStr[0], NULL, 16 ); }else{ // ¾øÀ¸¸é 000000 Àü¼Û SvrSendBuff[4] = 0; SvrSendBuff[5] = 0; SvrSendBuff[6] = 0; } SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = 0x12; SvrSendBuff[11] = 0x72; SvrSendBuff[12] = 0; //uuid SvrSendBuff[13] = 0; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = SystemManager.Site[0]; //Site SvrSendBuff[17] = SystemManager.Site[1]; SvrSendBuff[18] = SystemManager.Site[2]; SvrSendBuff[19] = SystemManager.Site[3]; SvrSendBuff[20] = SystemManager.Dong[0]; //Dong SvrSendBuff[21] = SystemManager.Dong[1]; SvrSendBuff[22] = SystemManager.Ho[0]; //Ho SvrSendBuff[23] = SystemManager.Ho[1]; SvrSendBuff[24] = 0; //KEY NUM SvrSendBuff[25] = 0; //KEY TYPE SvrSendBuff[26] = 0; //Random SvrSendBuff[27] = 0; for(i=1; i<28; i++){ SvrSendBuff[28] = SvrSendBuff[28] + SvrSendBuff[i]; } SvrSendBuff[29] = COM_ETX; NRF_LOG_INFO("SendEmergencyBand==="); SendToEventServer(&SvrSendBuff[0], 1); nrf_delay_ms(500); SendToEventServer(&SvrSendBuff[0], 30); //NRF_LOG_RAW_INFO("================= EmergencyBand \n"); for( i=0; i<29; i++) { //NRF_LOG_RAW_INFO("%02x ", SvrSendBuff[i]); } NRF_LOG_RAW_INFO("\n"); } void SendParkingBand() { uint8_t i; uint8_t check_sum = 0; NRF_LOG_RAW_INFO("===> SendParkingBand()\n"); SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_SMART_BAND; SvrSendBuff[2] = 0; SvrSendBuff[3] = 2; SvrSendBuff[4] = 0; SvrSendBuff[5] = 0; SvrSendBuff[6] = 0; SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = 0x12; SvrSendBuff[11] = 0x73; SvrSendBuff[12] = 0; //uuid SvrSendBuff[13] = 0; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = SystemManager.Site[0]; //Site SvrSendBuff[17] = SystemManager.Site[1]; SvrSendBuff[18] = SystemManager.Site[2]; SvrSendBuff[19] = SystemManager.Site[3]; SvrSendBuff[20] = SystemManager.Dong[0]; //Dong SvrSendBuff[21] = SystemManager.Dong[1]; SvrSendBuff[22] = SystemManager.Ho[0]; //Ho SvrSendBuff[23] = SystemManager.Ho[1]; SvrSendBuff[24] = 0; //KEY NUM SvrSendBuff[25] = 0; //KEY TYPE SvrSendBuff[26] = 0; //Random SvrSendBuff[27] = 0; for(i=1; i<28; i++){ SvrSendBuff[28] = SvrSendBuff[28] + SvrSendBuff[i]; } SvrSendBuff[29] = COM_ETX; // NRF_LOG_INFO("SendParkingBand ==="); SendToEventServer(&SvrSendBuff[0], 1); SendToEventServer(&SvrSendBuff[0], 30); // SystemManager.SwitchOn = 1; SystemManager.SwitchOn = 0; for(i=0; i<2; i++){ PKLedOn(); nrf_delay_ms(300); PKLedOff(); nrf_delay_ms(300); } } /****************************************************************************** * * ºñ»óº§ ---> ¼Û½Å±â --------> Event Server * *******************************************************************************/ void SendAck(uint8_t cmd) { uint8_t i; NRF_LOG_RAW_INFO("===> SendAck()\n"); memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = cmd; SvrSendBuff[4] = 0; SvrSendBuff[5] = 0; SvrSendBuff[6] = 0; SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = SERVER_COMM_DATA_LEN; SvrSendBuff[11] = 'A'; SvrSendBuff[12] = 'C'; SvrSendBuff[13] = 'K'; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = 0; SvrSendBuff[17] = 0; SvrSendBuff[18] = 0; for(i=1; i<18; i++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[i]; } SvrSendBuff[19] = COM_ETX; SendToEventServer(&SvrSendBuff[0], 20); } void SendEmergency() { uint8_t i; NRF_LOG_RAW_INFO("===> SendEmergency()\n"); if( SystemManager.RegRequst == 1 ) { SystemManager.RegRequst = 0; return; } SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_BELL_EMG; SvrSendBuff[4] = SystemManager.PeerAddr[3]; SvrSendBuff[5] = SystemManager.PeerAddr[4]; SvrSendBuff[6] = SystemManager.PeerAddr[5]; SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = SERVER_COMM_DATA_LEN; SvrSendBuff[11] = IES600RB_VER_HIGH; SvrSendBuff[12] = IES600RB_VER_LOW; SvrSendBuff[13] = SystemManager.BatLevel; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = 0; SvrSendBuff[17] = 0; for(i=1; i<18; i++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[i]; } SvrSendBuff[19] = COM_ETX; NRF_LOG_INFO("SendEmergency ==="); SendToEventServer(&SvrSendBuff[0], 20); SystemManager.SwitchOn = 1; PKBuzzerOn(); } void SendAlive() { uint8_t i; NRF_LOG_RAW_INFO("===> SendAlive()\n"); SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_SVR_ALIVE; SvrSendBuff[4] = SystemManager.PeerAddr[3]; SvrSendBuff[5] = SystemManager.PeerAddr[4]; SvrSendBuff[6] = SystemManager.PeerAddr[5]; SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = SERVER_COMM_DATA_LEN; SvrSendBuff[11] = SystemManager.BatLevel; //IES600RB_VER_HIGH; SvrSendBuff[12] = 0;//IES600RB_VER_LOW; SvrSendBuff[13] = 0;//SystemManager.BatLevel; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = 0; SvrSendBuff[17] = 0; for(i=1; i<18; i++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[i]; } SvrSendBuff[19] = COM_ETX; NRF_LOG_INFO("SendAlive ==="); SendToEventServer(&SvrSendBuff[0], 20); } void SendTest() { uint8_t i; NRF_LOG_RAW_INFO("===> SendTest()\n"); SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_SVR_TEST; SvrSendBuff[4] = SystemManager.PeerAddr[3]; SvrSendBuff[5] = SystemManager.PeerAddr[4]; SvrSendBuff[6] = SystemManager.PeerAddr[5]; SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = SERVER_COMM_DATA_LEN; SvrSendBuff[11] = SystemManager.BatLevel; SvrSendBuff[12] = 0; SvrSendBuff[13] = 0; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = 0; SvrSendBuff[17] = 0; for(i=1; i<18; i++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[i]; } SvrSendBuff[19] = COM_ETX; NRF_LOG_INFO("SendTest ==="); SendToEventServer(&SvrSendBuff[0], 20); } // ¼Û½Å±â µî·Ï½Ã¸¶´Ù ¼Û½Å±â µ¥ÀÌŸ Àü¼Û void SendCurrentRegDev() { NRF_LOG_RAW_INFO("===> SendCurrentRegDev()\n"); uint8_t i; memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_SVR_RECV_LIST_ANSWER; SvrSendBuff[4] = SystemManager.PeerAddr[3]; SvrSendBuff[5] = SystemManager.PeerAddr[4]; SvrSendBuff[6] = SystemManager.PeerAddr[5]; SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = SERVER_COMM_DATA_LEN; SvrSendBuff[11] = 0; SvrSendBuff[12] = 0; SvrSendBuff[13] = 0; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = 0; SvrSendBuff[17] = 0; for(i=1; i<18; i++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[i]; } SvrSendBuff[19] = COM_ETX; SendToEventServer(&SvrSendBuff[0], 20); nrf_delay_ms(50); } // ºñ»óº§ ¸ñ·Ï ÀÀ´ä. void Server_Answer_Reg_List() { char tmpStr[10]; uint8_t i; NRF_LOG_RAW_INFO("===> Server_Answer_Reg_List(%d)\n", RegMacPool.Count); if( RegMacPool.Count == 0 ) { memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_SVR_RECV_LIST_ANSWER; strcpy( tmpStr, &RegMacPool.Mac[i][6]); tmpStr[6] = 0; SvrSendBuff[6] = strtoul( &tmpStr[4], NULL, 16 ); tmpStr[4] = 0; SvrSendBuff[5] = strtoul( &tmpStr[2], NULL, 16 ); tmpStr[2] = 0; SvrSendBuff[4] = strtoul( &tmpStr[0], NULL, 16 ); SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = SERVER_COMM_DATA_LEN; SvrSendBuff[11] = 0; SvrSendBuff[12] = 0; SvrSendBuff[13] = 0; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = 0; SvrSendBuff[17] = 0; for(i=1; i<18; i++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[i]; } SvrSendBuff[19] = COM_ETX; NRF_LOG_INFO("DevList %02x%02x%02x ===== ", SvrSendBuff[4], SvrSendBuff[5], SvrSendBuff[6]); SendToEventServer(&SvrSendBuff[0], 20); nrf_delay_ms(50); } for( i=0; i Server_Version_Answer()\n"); if( SystemManager.ServerCon == 0) { memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); SystemManager.LedBlinkRun = COM_TYPE_SVR_VER_REQ; SystemManager.LedBlinkTimer = 1500; SystemTimer.LED_TOGGLE_TIMER = 0; SystemManager.DevType = 0; SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_SVR_VER_ANSWER; SvrSendBuff[4] = 0; SvrSendBuff[5] = 0; SvrSendBuff[6] = 0; SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = SERVER_COMM_DATA_LEN; SvrSendBuff[11] = IES600RB_VER_HIGH; SvrSendBuff[12] = IES600RB_VER_LOW; SvrSendBuff[13] = 0; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = 0; SvrSendBuff[17] = 0; for(i=1; i<18; i++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[i]; } SvrSendBuff[19] = COM_ETX; SendToEventServer(&SvrSendBuff[0], 20); SystemManager.SwitchOn = 0; } nrf_delay_ms(1000); for(i=0; i<5; i++){ PKLedOn(); nrf_delay_ms(100); PKLedOff(); nrf_delay_ms(100); } nrf_power_gpregret_set(0xB1); NVIC_SystemReset(); } void Server_Answer_Upgread() { uint8_t i; uint8_t check_sum = 0; NRF_LOG_RAW_INFO("===> Server_Answer_Upgread()\n"); if( SystemManager.ServerCon == 0) { memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); SystemManager.LedBlinkRun = COM_TYPE_SVR_VER_REQ; SystemManager.LedBlinkTimer = 1500; SystemTimer.LED_TOGGLE_TIMER = 0; SystemManager.DevType = 0; SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_SVR_UPGREAD_ANSWER; SvrSendBuff[4] = 0; SvrSendBuff[5] = 0; SvrSendBuff[6] = 0; SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = SERVER_COMM_DATA_LEN; SvrSendBuff[11] = IES600RB_VER_HIGH; SvrSendBuff[12] = IES600RB_VER_LOW; SvrSendBuff[13] = 0; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = 0; SvrSendBuff[17] = 0; for(i=1; i<18; i++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[i]; } SvrSendBuff[19] = COM_ETX; SendToEventServer(&SvrSendBuff[0], 20); SystemManager.SwitchOn = 0; } NRF_LOG_RAW_INFO("================================================================================\n"); NRF_LOG_RAW_INFO("======================== Reboot To BootLoad Start ==============================\n"); NRF_LOG_RAW_INFO("================================================================================\n"); nrf_delay_ms(1000); for(i=0; i<5; i++){ PKLedOn(); nrf_delay_ms(100); PKLedOff(); nrf_delay_ms(100); } nrf_delay_ms(3000); nrf_power_gpregret_set(0xB1); NVIC_SystemReset(); } // »ç¿ë¾ÊÇÔ void SendEmergencyLocal() { uint8_t i; uint8_t check_sum = 0; SvrSendBuff[0] = COM_STX; SvrSendBuff[1] = COM_COMM_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_BELL_EMG; SvrSendBuff[4] = 0; SvrSendBuff[5] = 0; SvrSendBuff[6] = 0; SvrSendBuff[7] = new_ble_addr.addr[3]; SvrSendBuff[8] = new_ble_addr.addr[4]; SvrSendBuff[9] = new_ble_addr.addr[5]; SvrSendBuff[10] = SERVER_COMM_DATA_LEN; SvrSendBuff[11] = 0; SvrSendBuff[12] = 0; SvrSendBuff[13] = 0; SvrSendBuff[14] = 0; SvrSendBuff[15] = 0; SvrSendBuff[16] = 0; SvrSendBuff[17] = 0; for(i=1; i<18; i++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[i]; } SvrSendBuff[19] = COM_ETX; SendToEventServer(&SvrSendBuff[0], 20); SystemManager.SwitchOn = 1; PKBuzzerOn(); } // ¼Û½Å±â Å×½ºÆ® ¹öÆ°´­·¶À»½Ã µ¿ÀÛ void AliveTest() { NRF_LOG_RAW_INFO("Void AliveTest\n"); SystemManager.SwitchOn = 1; PKBuzzerOn(); SystemManager.LedBlinkRun = COM_TYPE_SVR_TEST; SystemManager.LedBlinkTimer = 3300; SystemTimer.LED_TOGGLE_TIMER = 0; } #if 0 // »ç¿ë¾ÊÇÔ void SendTest() { if( SystemTimer.SEND_TEST_TIMER < 3000 ) return; SystemTimer.SEND_TEST_TIMER = 0; SendEmergency(); } #endif void LedToggle() { static char toggle = 0; if( SystemManager.RegRequst ) { if( SystemTimer.DEV_REG_TIMER >= 60000 ) { SystemManager.RegRequst = 0; PKLedOff(); SystemManager.LedBlinkRun = 0; } } // ¼Û½Å±â µî·Ï¸ðµå½Ã Ç×»ó ON if( SystemManager.LedBlinkRun == COM_TYPE_SVR_RECV_REG ) { PKLedOn(); return; } if( SystemManager.LedBlinkRun == COM_TYPE_SVR_RECV_REG+1 ) { if( SystemManager.RegRequst == 1 ) { if( SystemManager.LedBlinkTimer < 0 ) { SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_REG; PKLedOn(); return; } } if( SystemTimer.LED_TOGGLE_TIMER < 500 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; if( toggle++ & 0x01) { PKLedOn(); }else{ PKLedOff(); } } #if 0 if( SystemManager.LedBlinkRun == COM_TYPE_SVR_PARKING ) { if( SystemManager.LedBlinkTimer < 0 ) { SystemManager.LedBlinkRun = 0; PKLedOff(); return; } if( SystemTimer.LED_TOGGLE_TIMER < 500 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; if( toggle++&0x01) { PKLedOn(); }else{ PKLedOff(); } } #endif #if 0 if( SystemManager.LedBlinkRun == COM_TYPE_SVR_RECV_INIT ) { if( SystemManager.LedBlinkTimer < 0 ) { SystemManager.LedBlinkRun = 0; PKLedOff(); return; } if( SystemTimer.LED_TOGGLE_TIMER < 500 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; if( toggle++&0x01) { PKLedOn(); }else{ PKLedOff(); } } #endif #if 0 if( SystemManager.LedBlinkRun == COM_TYPE_SVR_RECV_LIST || SystemManager.LedBlinkRun == COM_TYPE_SVR_VER_REQ) { if( SystemManager.LedBlinkTimer < 0 ) { SystemManager.LedBlinkRun = 0; PKLedOff(); return; } if( SystemTimer.LED_TOGGLE_TIMER < 500 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; if( toggle++&0x01) { PKLedOn(); }else{ PKLedOff(); } } #endif if( SystemManager.LedBlinkRun == COM_TYPE_SVR_TEST ) { if( SystemManager.LedBlinkTimer < 0 ) { SystemManager.LedBlinkRun = 0; PKLedOff(); PKBuzzerOff(); return; } if( SystemTimer.LED_TOGGLE_TIMER < 500 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; if( toggle++&0x01) { PKLedOn(); }else{ PKLedOff(); } } if( SystemManager.SwitchOn == 0 ) return; if( SystemManager.LedBlinkRun == 0 ) return; #if 0 if( SystemManager.LedBlinkTimer < 0 ) { SystemManager.LedBlinkRun = 0; PKLedOff(); return; } #endif if( SystemTimer.LED_TOGGLE_TIMER < 500 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; if( toggle++&0x01) { PKLedOn(); }else{ PKLedOff(); } }