/** * 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]; char SvrSendBuff_bak[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 ==> RECEVER 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: case COM_TYPE_BAND: // switch(SvrRxBuffer[3]){ // ¼ö½Å±â ºñ»ó½ÅÈ£¿¡ ´ëÇÑ ACK ½ÅÈ£ case COM_TYPE_SVR_EMG_ACK: SystemManager.Emg_Ack_Flag = 0; break; // ¼ö½Å±â ´ë±â»óÅ ¿äû case COM_TYPE_SVR_NORMAL: SystemManager.System_State = SYSTEM_NONE; NRF_LOG_INFO("Recv : Normal"); PKLedOff(); PKBuzzerOff(); PKMicOff(); PKSpeakerOff(); 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: SystemManager.System_State = SYSTEM_SERVER_COMM; SystemTimer.SYSTEM_SERVER_COMM_CNT = 0; 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_REQ"); if(SystemManager.System_State == SYSTEM_NONE){ SystemManager.System_State = SYSTEM_REGISTER; SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_REG_REQ; SystemManager.RegRequst = 1; SendAck(COM_TYPE_SVR_RECV_REG_ANSWER); SystemTimer.DEV_REG_TIMER = 0; }else{ NRF_LOG_INFO("SYSTEM is BUSY : [%d]\n", SystemManager.System_State); } break; // ¼Û½Å±â µî·Ï ÃʱâÈ­ ¿äû case COM_TYPE_SVR_RECV_INIT_REQ: NRF_LOG_INFO("Recv : COM_TYPE_SVR_RECV_INIT_REQ"); // SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_INIT; // SystemManager.LedBlinkTimer = 2500; // SystemTimer.LED_TOGGLE_TIMER = 0; // SystemManager.SwitchOn = 1; SendAck(COM_TYPE_SVR_RECV_INIT_ANSWER); //for( i=0; i "); for( i=0; i ¼Û½Å±â --------> Event Server * *******************************************************************************/ void SendParkingApp() { int i; NRF_LOG_RAW_INFO("===> SendParkingApp()\n"); SystemManager.SwitchOn = 0; SystemManager.LedBlinkRun = COM_TYPE_APP_PARKING; SystemManager.LedBlinkTimer = 1200; SystemTimer.LED_TOGGLE_TIMER = 0; memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); 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); // nrf_delay_ms(500); SendToEventServer(&SvrSendBuff[0], 30); // 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; SystemManager.System_State = SYSTEM_EMERGENCY_SIREN; SystemManager.Emg_Ack_Flag = 2; PKBuzzerOn(); memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); 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; memcpy(SvrSendBuff_bak, SvrSendBuff, sizeof(SvrSendBuff)); NRF_LOG_INFO("SendEmergencyBand==="); SendToEventServer(&SvrSendBuff[0], 30); #if 0 //NRF_LOG_RAW_INFO("================= EmergencyBand \n"); for( i=0; i<29; i++) { //NRF_LOG_RAW_INFO("%02x ", SvrSendBuff[i]); } NRF_LOG_RAW_INFO("\n"); #endif } void SendParkingBand() { uint8_t i; uint8_t check_sum = 0; NRF_LOG_RAW_INFO("===> SendParkingBand()\n"); SystemManager.DevType = 0; SystemManager.LedBlinkRun = COM_TYPE_BAND_PARKING; SystemManager.LedBlinkTimer = 1200; SystemTimer.LED_TOGGLE_TIMER = 0; SystemManager.SwitchOn = 0; memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); 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], 30); } void ReSendEmergency() { NRF_LOG_RAW_INFO("===> ReSendEmergency()\n"); memcpy(SvrSendBuff, SvrSendBuff_bak, sizeof(SvrSendBuff)); NRF_LOG_INFO("ReSendEmergency ==="); switch(SystemManager.Emg_Ack_Flag){ case 1: // ºñ»óº§ EMG SendToEventServer(&SvrSendBuff[0], 20); break; case 2: // ¹êµå EMG SendToEventServer(&SvrSendBuff[0], 30); break; } } /****************************************************************************** * * ºñ»óº§ ---> ¼Û½Å±â --------> 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"); SystemManager.System_State = SYSTEM_EMERGENCY_SIREN; SystemManager.Emg_Ack_Flag = 1; if( SystemManager.RegRequst == 1 ) // µî·Ï¸ðµåÀÏ°æ¿ì µî·Ï¸ðµå ÇØÁ¦, ºñ»ó¸ðµå Àüȯ { SystemManager.RegRequst = 0; // return; } memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); 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] = SystemManager.TransferVerHigh; SvrSendBuff[12] = SystemManager.TransferVerLow; 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; memcpy(SvrSendBuff_bak, SvrSendBuff, sizeof(SvrSendBuff)); NRF_LOG_INFO("SendEmergency ==="); SendToEventServer(&SvrSendBuff[0], 20); SystemManager.SwitchOn = 1; PKBuzzerOn(); } void SendAlive() { uint8_t i; NRF_LOG_RAW_INFO("===> SendAlive()\n"); memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); 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.TransferVerHigh; SvrSendBuff[12] = SystemManager.TransferVerLow; 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("SendAlive ==="); SendToEventServer(&SvrSendBuff[0], 20); } void SendTest() { uint8_t i; NRF_LOG_RAW_INFO("===> SendTest()\n"); memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); 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.TransferVerHigh; SvrSendBuff[12] = SystemManager.TransferVerLow; 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("SendTest ==="); SendToEventServer(&SvrSendBuff[0], 20); } // ¼Û½Å±â µî·Ï½Ã¸¶´Ù ¼Û½Å±â µ¥ÀÌŸ Àü¼Û void SendCurrentRegDev() { NRF_LOG_RAW_INFO("===> SendCurrentRegDev()\n"); uint8_t i; SystemTimer.SYSTEM_REGISTER_CNT = 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; 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; uint8_t j; NRF_LOG_RAW_INFO("===> Server_Answer_Reg_List (%d EA)\n", RegMacPool.Count); i = 0; if( RegMacPool.Count == 0 ) { #if 1 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[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; #endif for(j=1; j<18; j++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[j]; } 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); return; } for( i=0; i ", SvrSendBuff[4], SvrSendBuff[5], SvrSendBuff[6]); SendToEventServer(&SvrSendBuff[0], 20); nrf_delay_ms(200); } } void Server_Answer_Call() { char tmpStr[10]; uint8_t i; uint8_t j; memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); NRF_LOG_INFO("Server_Answer_Call()"); SystemManager.System_State = SYSTEM_SERVER_COMM_REQ; if( SystemManager.ServerCon == 0 ) { 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_EMG_SWTICH; SvrSendBuff[2] = 0; SvrSendBuff[3] = COM_TYPE_SVR_CALL_ANSWER; 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] = 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(j=1; j<18; j++){ SvrSendBuff[18] = SvrSendBuff[18] + SvrSendBuff[j]; } SvrSendBuff[19] = COM_ETX; SendToEventServer(&SvrSendBuff[0], 20); } } void Server_Answer_Version() { uint8_t i; uint8_t check_sum = 0; NRF_LOG_RAW_INFO("===> Server_Version_Answer(22)\n"); memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); 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); #if 0 for(i=0; i<5; i++){ PKLedOn(); nrf_delay_ms(100); PKLedOff(); nrf_delay_ms(100); } #endif } void Server_Answer_Upgread() { uint8_t i; uint8_t check_sum = 0; NRF_LOG_RAW_INFO("===> Server_Answer_Upgread()\n"); memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); 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; memset(SvrSendBuff, 0x00, sizeof(SvrSendBuff)); 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() { int cnt = 0; int buz_cnt = 0; int led_cnt = 0; char blink_cnt = 0; char blink_flag = 0; uint8_t ex = 1; 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; } void LedToggle() { static char toggle = 0; // ¼Û½Å±â µî·Ï¸ðµå½Ã Ç×»ó ON switch(SystemManager.LedBlinkRun){ case COM_TYPE_SVR_RECV_REG_REQ: PKLedOn(); return; break; case COM_TYPE_SVR_RECV_REG_ANSWER: if( SystemManager.RegRequst == 1 ) { if( SystemManager.LedBlinkTimer < 0 ) { SystemManager.LedBlinkRun = COM_TYPE_SVR_RECV_REG_REQ; PKLedOn(); toggle = 0; return; } } if( SystemTimer.LED_TOGGLE_TIMER < 500 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; if( ++toggle & 0x01) { PKLedOn(); }else{ PKLedOff(); } break; case COM_TYPE_SVR_TEST: if( SystemManager.LedBlinkTimer < 0 ) { SystemManager.LedBlinkRun = 0; PKLedOff(); PKBuzzerOff(); toggle = 0; return; } if( SystemTimer.LED_TOGGLE_TIMER < 500 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; if( ++toggle & 0x01) { PKLedOn(); }else{ PKLedOff(); } break; case COM_TYPE_BAND_PARKING: case COM_TYPE_APP_PARKING: case COM_TYPE_IOS_APP_PARKING: case COM_TYPE_NEW_IOS_APP_PARKING: if( SystemManager.LedBlinkTimer < 0 ) { SystemManager.LedBlinkRun = 0; PKLedOff(); toggle = 0; return; } if( SystemTimer.LED_TOGGLE_TIMER < 300 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; if( ++toggle & 0x01) { PKLedOn(); }else{ PKLedOff(); } break; } if( SystemManager.SwitchOn == 0 ) return; if( SystemManager.LedBlinkRun == 0 ) return; if( SystemTimer.LED_TOGGLE_TIMER < 500 ) return; SystemTimer.LED_TOGGLE_TIMER = 0; #if 1 if( ++toggle & 0x01) { PKLedOn(); }else{ PKLedOff(); } #endif }