/** * 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" char SvrRxBuffer[100]; int SvrRxBufferPos; char SvrEvent; stSystemTimer SystemTimer; stSystemManager SystemManager; 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; } 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; } } #define COM_TYPE_SVR_NORMAL 0x02 #define COM_TYPE_SVR_TALKING 0x03 #define COM_TYPE_SVR_DISCON 0x04 #define COM_TYPE_SVR_BUSY 0x05 #define COM_TYPE_SVR_ALIVE 0x06 #define COM_TYPE_SVR_MIC 0x07 void ParseEventServer() { int i; if( SystemManager.RxEvent == 0 ) return; for( i=0; i<20; i++) { //printf("0x%02x ", SvrRxBuffer[i]); } SystemManager.RxEvent = 0; if(SvrRxBuffer[0] != 0x02) return; if( SvrRxBuffer[1] == COM_TYPE_SVR ) { if( SvrRxBuffer[3] == COM_TYPE_SVR_NORMAL ) { NRF_LOG_INFO("Recv : Normal"); PKLedOff(); PKBuzzerOff(); PKMicOff(); SystemManager.SwitchOn = 0; }else if( SvrRxBuffer[3] == COM_TYPE_SVR_TALKING ) { NRF_LOG_INFO("Recv : Talking"); PKLedOn(); PKBuzzerOff(); SystemManager.SwitchOn = 0; }else if( SvrRxBuffer[3] == COM_TYPE_SVR_DISCON ) { NRF_LOG_INFO("Recv : Disconnect"); SystemManager.SwitchOn = 0; //bsp_board_leds_off(); }else if( SvrRxBuffer[3] == COM_TYPE_SVR_BUSY ) { NRF_LOG_INFO("Recv : Busy"); }else if( SvrRxBuffer[3] == COM_TYPE_SVR_ALIVE ) { NRF_LOG_INFO("Recv : Keep Alive"); }else if( SvrRxBuffer[3] == COM_TYPE_SVR_MIC ) { NRF_LOG_INFO("Recv : mic on/off"); if( SvrRxBuffer[11] == 0 ) { NRF_LOG_INFO("mic off"); NRF_LOG_INFO("speaker off"); PKSpeakerOff(); PKMicOn(); PKBuzzerOff(); PKLedOn(); SystemManager.SwitchOn = 0; }else{ NRF_LOG_INFO("mic on"); NRF_LOG_INFO("speaker on"); PKMicOff(); PKSpeakerOn(); PKLedOn(); } } }else if( SvrRxBuffer[1] == COM_TYPE_BAND ) { } } void SendToEventServer(char* data, int len) { int i; for( i=0; i