/** * 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. * */ #ifndef OUR_SERVICE_H__ #define OUR_SERVICE_H__ #include #include "ble.h" #include "ble_srv_common.h" #include #include #include #include "app_uart.h" #include "app_error.h" #ifdef __cplusplus extern "C" { #endif #define NUM_STX 0 #define NUM_TYPE_SVR 1 #define NUM_CHECKSUM 18 #define NUM_ETX 19 #define COM_COMM_EMG_SWTICH 0x01 #define COM_COMM_SMART_BAND 0x02 #define COM_COMM_ONEPASS 0x03 #define COM_TYPE_BELL_EMG 0x01 #define COM_STX 0x02 // START BYTE #define COM_ETX 0x03 // END BYTE //#define COM_TYPE_BELL_EMG 0x01 //#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_TEST 0x07 #define COM_TYPE_BAND 0x02 #define COM_TYPE_BAND_EMG 0x01 #define DEV_NONE 0 #define DEV_BAND_PARK 1 // ¹êµå ÁÖÂ÷µî·Ï #define DEV_BAND_EMG 2 // ¹êµå ºñ»ó #define DEV_EMG_BUTTON 3 // ºñ»óº§ ¹öÆ° #define DEV_BAND_ADV 4 // ºñ»óº§ #define DEV_WES_ALIVE 5 // ¼ö½Å±â Alive #define DEV_WES_REG 6 // ¼ö½Å±â ¸ñ·Ï #define DEV_WES_ADV 7 // ¼ö½Å±â #define DEV_EMG_BAND 8 #define DEV_IOS_PARK 9 // NEW IOS ¿øÆнº ÁÖÂ÷µî·Ï #define DEV_NUS_EMG 1 #define DEV_NUS_TEST 2 #define DEV_NUS_REG 3 #define DEV_NUS_ALIVE 4 //#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 //#define COM_TYPE_SVR_RECV_REG 0x08 //#define COM_TYPE_SVR_RECV_INIT 0x0a //#define COM_TYPE_SVR_RECV_LIST 0x0c #define COM_TYPE_SVR_PARKING 0x73 #define SERVER_COMM_DATA_LEN 0x08 #define COM_TYPE_SVR_EMG_ACK 0x01 // SERVER EMG ÀÀ´ä #define COM_TYPE_SVR_NORMAL 0x02 // ¼ö½Å±â Normal ½ÅÈ£ ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_TALKING 0x03 // ¼ö½Å±â Talking ½ÅÈ£ ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_DISCON 0x04 // ¼ö½Å±â DisConnect ½ÅÈ£ ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_BUSY 0x05 // ¼ö½Å±â Busy ½ÅÈ£ ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_ALIVE 0x06 // ¼ö½Å±â Alive ½ÅÈ£ ( IES600 --> BleEventServer ) #define COM_TYPE_SVR_MIC 0x07 // ¼ö½Å±â Mic »óÅ ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_RECV_REG_REQ 0x08 // ¼Û½Å±â µî·Ï ¿äû ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_RECV_REG_ANSWER 0x09 // ¼Û½Å±â µî·Ï ÀÀ´ä ( IES600 --> BleEventServer ) #define COM_TYPE_SVR_RECV_INIT_REQ 0x0a // ¼ö½Å±â ÃʱâÈ­ ¿äû ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_RECV_INIT_ANSWER 0x0b // ¼ö½Å±â ÃʱâÈ­ ÀÀ´ä ( IES600 --> BleEventServer ) #define COM_TYPE_SVR_RECV_LIST_REQ 0x0c // ¼Û½Å±â ¸ñ·Ï ¿äû ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_RECV_LIST_ANSWER 0x0d // ¼Û½Å±â ¸ñ·Ï ÀÀ´ä ( IES600 --> BleEventServer ) #define COM_TYPE_SVR_UPGREAD_REQ 0x0e // ¼ö½Å±â ¾÷±×·¹ÀÌµå ¿äû ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_UPGREAD_ANSWER 0x0f // ¼ö½Å±â ¾÷±×·¹À̵å ÀÀ´ä ( IES600 --> BleEventServer ) #define COM_TYPE_SVR_VER_REQ 0x10 // ¼ö½Å±â ¹öÀü ¿äû ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_VER_ANSWER 0x11 // ¼ö½Å±â ¹öÀü ÀÀ´ä ( IES600 --> BleEventServer ) #define COM_TYPE_SVR_CALL_REQ 0x12 // ¼ö½Å±â ÅëÈ­ ¿äû ( BleEventServer --> IES600 ) #define COM_TYPE_SVR_CALL_ANSWER 0x13 // ¼ö½Å±â ÅëÈ­ ÀÀ´ä ( IES600 --> BleEventServer ) #define COM_TYPE_SVR_TEST 0x14 // ¼ö½Å±â TEST ½ÅÈ£ ( ) // ¹êµå / APP Parking #define COM_TYPE_BAND_PARKING 0x21 #define COM_TYPE_APP_PARKING 0x22 #define COM_TYPE_IOS_APP_PARKING 0x23 #define COM_TYPE_NEW_IOS_APP_PARKING 0x24 // ¼ö½Å±â ¸ðµå #define SYSTEM_NONE 0x00 // ´ë±â¸ðµå #define SYSTEM_EMERGENCY_SIREN 0x01 // ¼Û½Å±â/¹êµå ºñ»ó ½ÎÀÌ·» ¸ðµå #define SYSTEM_SERVER_COMM 0x02 // ¼­¹ö¿Í Åë½Å »óÅ #define SYSTEM_REGISTER 0x03 // ¼Û½Å±â µî·Ï¸ðµå #define SYSTEM_SERVER_COMM_REQ 0x04 // ¼­¹ö¿¡¼­ Åë½Å ¿äû struct stSystemTimer__ { volatile int MS_1; volatile int MS_10_TICK; volatile int MS_100_TICK; volatile int MS_1000_TICK; volatile int UART_LAST_RECV_TIMER; volatile int SEND_TEST_TIMER; volatile int LED_TOGGLE_TIMER; volatile int TMR_SYS_OFF; volatile int TMR_CON_START; volatile int PARK_KEEP_TIMER; volatile int DEV_REG_TIMER; volatile int SVR_SEND_TIMER; volatile int SYSTEM_REGISTER_CNT; // µî·Ï¸ðµå »óÅ CNT (SEC) volatile int SYSTEM_SERVER_COMM_CNT; // Åë½Å »óÅ CNT (SEC) volatile int SYSTEM_SERVER_COMM_REQ_CNT; // ¼­¹ö ÅëÈ­ ¿äû »óÅ CNT (SEC) volatile int SYSTEM_EMERGENCY_SIREN_CNT; // ºñ»ó ½ÎÀÌ·» »óÅ CNT (SEC) }; typedef struct stSystemTimer__ stSystemTimer; struct stBandData__ { uint32_t Uid; uint32_t Site; uint16_t Dong; uint16_t Ho; uint8_t KeyNum; uint8_t KeyType; uint32_t ReaderId[3]; uint8_t ReaderRssi[3]; }; typedef struct stBandData__ stBandData; struct stSystemManager__ { char System_State; char Emg_Ack_Flag; // 0: NONE 1: ºñ»óº§ EMG 2: Band EMG char Emg_Resend_Cnt; char RxValild; char RxEvent; char SwitchOn; // ºÎÀú »çÀ̸° µ¿ÀÛ À¯¹« char BuzzerOn; char MicOn; char SpeakerOn; char ServerCon; // À̺¥Æ®¼­¹ö¿Í ¿¬°á À¯¹« char DevType; char *PtrLocalName; int PtrLocalNameLen; char LedBlinkRun; // LED Blink µ¿ÀÛ Á¾·ù int LedBlinkTimer; // LED Blink µ¿ÀÛ ½Ã°£ char RegRequst; char PeerAddr[6]; char *PtrPeerAddrStr; char BatLevel; char TransferVerHigh; char TransferVerLow; char *TmpPtr; volatile char AesEncData[16]; char TmpBuff[40]; char TmpBuff2[40]; char SecondData; char BandMode; char BandType; // 0x72 : EMG // 0x73 : PARKING char Site[4]; char Dong[2]; char Ho[2]; char Key_Num; char Key_Type; char Random_In[2]; char Random_Out[2]; stBandData BandData; }; typedef struct stSystemManager__ stSystemManager; void USART_Handler(void); void ParseEventServer(); void SendToEventServer(char* data, int len); void SendEmergency(); void SendEmergencyLocal(); void SendTest(); void LedToggle(); void USART_DataCheck(); void SendAck(uint8_t cmd); void SendCurrentRegDev(); void SendEmergencyBand(); void SendParkingBand(); void AliveTest(); void SendParkingApp(); void Server_Answer_Call(); void Server_Answer_Reg_List(); void Server_Answer_Version(); void Server_Answer_Upgread(); extern char SvrRxBuffer[]; extern int SvrRxBufferPos; extern char SvrEvent; extern stSystemTimer SystemTimer; extern stSystemManager SystemManager; #endif /* _ OUR_SERVICE_H__ */