//================================================================== // // Filename: mapp_arm.c // Description: arm driver // //------------------------------------------------------------------ // // version: // date: 23:54pm, 08.Apr.2012, by Sirius // Description: // //------------------------------------------------------------------ //================================================================== /*------------------------------------------------------------------------------ * I N C L U D E *------------------------------------------------------------------------------*/ //#include #include "stm32f0xx.h" #include "general.h" #include "mapp_can.h" #include "mapp_msg.h" #include "mapp_uart1.h" #include "main.h" #include "mapp_ext.h" #include "mapp_arm.h" #include "mapp_ami.h" #include "mapp_pwr.h" #include "mapp_gpio.h" #include "mapp_key.h" #include "sx1276_7_8.h" /*------------------------------------------------------------------------------ * D E F I N E *------------------------------------------------------------------------------*/ #define ARM_TX_BUF_LEN (40) #define ARM_RX_BUF_LEN (30) /*------------------------------------------------------------------------------ * S T R U C T *------------------------------------------------------------------------------*/ const U08 HEARTSTR[]="$HEART"; /*------------------------------------------------------------------------------ * S T A T I C - V A R I A B L E S *------------------------------------------------------------------------------*/ //static U08 s_u8DvdRxBuf[UART3_RX_BUF_SIZE] = {0}; static U08 s_u8ArmRxBuf[ARM_RX_BUF_LEN] = {0}; static U08 s_u8ArmTxBuf[ARM_TX_BUF_LEN] = {0}; static VU16 s_vu16DvdTaskTmr=0; /*------------------------------------------------------------------------------ * G L O B A L *------------------------------------------------------------------------------*/ T_ARM_CFG gtArm ={0}; //源IP: U08 TCP_IP_S[10] ={0xc0,0xa8,0x1,0xd3,0xc0,0xa8,0x01,0x01}; //192.168.1.211 , 192.168.1.1 //U08 TCP_IP_S[10] ={0xc0,0xa8,0x65,0x0a,0xc0,0xa8,0x65,0x01}; //192.168.101.10 , 192.168.101.1 //U08 TCP_IP_S[10] ={0x78,0x4c,0xf6,0x0a,0x78,0x4c,0xf6,0x01}; //120.76.246.10 , 120.76.246.1 //目地IP //U08 TCP_IP_D[10] ={0xc0,0xa8,0x65,0x01}; //192.168.101.01 //U08 TCP_IP_D[10] ={0x78,0x4C,0xF6,0xFD}; //120.76.246.253 U08 TCP_IP_D[10] ={0xc0,0xa8,0x01,0xAA}; //192.168.1.170 //U08 TCP_IP_D[10] ={0xc0,0xa8,0x01,0x01}; //192.168.1.1 /*------------------------------------------------------------------------------ * P R O T O T Y P E *------------------------------------------------------------------------------*/ static BOOL s_ArmRxCheck(void); static void s_frmArmRxSysReset(void); static void s_frmArmRxHandshake(void); static void s_frmArmRxSysUpdateReset(void); static void s_frmArmRxMic(void); static void s_frmArmRxNled(void); static void s_frmArmRxUled(void); static void s_frmArmRxRelay(void); static void s_frmArmRxSip(void); static void s_frmArmRxID(void); static void s_frmArmRxDoorLed(void); static void s_frmArmRxCallLed(void); static void s_frmArmRxAsk(void); static void s_frmArmRxOlCheck(void); static void s_frmArmRxVersion(void); static void s_frmArmTxNull(U16 prm); static void s_frmArmTxID(U16 prm); static void s_frmArmTxKey(U16 prm); static void s_frmArmTxVersion(U16 prm); static void s_frmArmRxNetReset(void); //------------------------------------------------------------------ // array for function receive data from DVD // 13:53pm, 21.Sep.2012, modified by Sirius //------------------------------------------------------------------ #define NbOfArmRxCmd (16) static const T_ARM_RX_FUNC arryArmRxFuncTbl[NbOfArmRxCmd] = { { "HEART", s_frmArmRxHandshake}, /* 1 */ {"SYSRESET", s_frmArmRxSysReset}, /* 2 */ {"SYSUPDATE", s_frmArmRxSysUpdateReset}, /* 3 */ {"MIC", s_frmArmRxMic}, /* 4 */ {"NLED", s_frmArmRxNled}, /* 5 */ {"ULED", s_frmArmRxUled}, /* 6 */ {"RELAY", s_frmArmRxRelay}, /* 7 */ {"SIP", s_frmArmRxSip}, /* 8 */ {"ID", s_frmArmRxID}, /* 9 */ {"DOORLED", s_frmArmRxDoorLed}, /* 10 */ {"CALLLED", s_frmArmRxCallLed}, /* 11 */ {"ASK", s_frmArmRxAsk}, /* 12 */ {"NETRESET", s_frmArmRxNetReset}, /* 13 */ {"CALL", s_frmArmRxHandshake}, /* 14 无效 */ {"OLCHECK", s_frmArmRxOlCheck}, /* 15 开启在线检测功能 */ {"VERSION", s_frmArmRxVersion}, /* 16 新增版本查询命令 */ }; /*---------------------------------------------------------------------- // Function uses : s_frmArmRxVersion // Input parameter : // Output parameter : // Use Function : Handle VERSION command to output version info // Reserve date : 2024 ----------------------------------------------------------------------*/ static void s_frmArmRxVersion(void) { OSQPost(ArmMsgQueue, ARM_MSG_VERSION, 0); } /*---------------------------------------------------------------------- // Function uses : s_frmArmTxVersionInfo // Input parameter : // Output parameter : // Use Function : Send version information // Reserve date : 2024 ----------------------------------------------------------------------*/ static void s_frmArmTxVersionInfo(U16 prm) { U08 *buf = (U08*)NULL; U08 i=0; buf = &s_u8ArmTxBuf[0]; // Format: $V,SZD101012405261F# *buf++ = '$'; *buf++ = 'V'; *buf++ = ','; // Copy version info for ( i = 0; i < 15; i++) { *buf++ = DeviceVisionInfo[i]; } *buf++ = 'F'; *buf++ = '#'; *buf = 0; // Send the version info Uart1PutChar(s_u8ArmTxBuf, 20); // Total length: $ + V + , + 15 chars + F + # = 20 } //------------------------------------------------------------------ // array for function transmit data to DVD // 17:42pm, 20.Sep.2012, modified by Sirius //------------------------------------------------------------------ static const fp_prm arryArmTxFuncTbl[NumOfArmMsg] = { s_frmArmTxNull, /* ARM_MSG_NULL */ s_frmArmTxKey, /* ARM_MSG_KEY */ s_frmArmTxID, /* ARM_MSG_ID */ s_frmArmTxVersion, /* ARM_MSG_VER */ s_frmArmTxVersionInfo, /* ARM_MSG_VERSION */ }; U16 HexToInt(U32 u32prm) { U16 i=0; U16 u16cnt = 0; if((DeviceMacInfo[0]>=0x30)&&(DeviceMacInfo[0]<=0x39)) i= DeviceMacInfo[0]-0x30; else i= DeviceMacInfo[0]-0x37; u16cnt = i<<12; if((DeviceMacInfo[1]>=0x30)&&(DeviceMacInfo[1]<=0x39)) i= DeviceMacInfo[1]-0x30; else i= DeviceMacInfo[1]-0x37; i =i<<8; u16cnt |= i; if((DeviceMacInfo[2]>=0x30)&&(DeviceMacInfo[2]<=0x39)) i= DeviceMacInfo[2]-0x30; else i= DeviceMacInfo[2]-0x37; i =i<<4; u16cnt |= i; if((DeviceMacInfo[3]>=0x30)&&(DeviceMacInfo[3]<=0x39)) i= DeviceMacInfo[3]-0x30; else i= DeviceMacInfo[3]-0x37; u16cnt |= i; return u16cnt; } //------------------------------------------------------------------------ void ArmValInit(void) { U32 u32prm =0; MEMSET(>Arm, 0, sizeof(T_ARM_CFG)); u32prm = ( (DeviceMacInfo[0] <<24) | (DeviceMacInfo[1] <<16) | (DeviceMacInfo[2] <<8) | DeviceMacInfo[4] ) ; gtArm.FJKeymac = HexToInt(u32prm); } /*---------------------------------------------------------------------- // Function uses : ArmTaskTmr // Input parameter : // Output parameter : // Use Function : // Reserve date : 09:11am, 30.Aug.2012, written by Sirius ----------------------------------------------------------------------*/ void ArmTaskTmr(void) { if( s_vu16DvdTaskTmr != 0xFFFF ) {s_vu16DvdTaskTmr++;} } /*---------------------------------------------------------------------- // Function uses : s_ArmRxCheck // Input parameter : // Output parameter : // Use Function : check frame format received from ARM. // Reserve date : 14:28pm, 21.Sep.2012, written by Sirius ----------------------------------------------------------------------*/ static BOOL s_ArmRxCheck(void) { U08 len = 0; //U08 chksum = 0; len = s_u8ArmRxBuf[0]; if (s_u8ArmRxBuf[len] == '#') { return (TRUE); } else { return (FALSE); } } /*---------------------------------------------------------------------- // Function uses : s_ArmRxIDCheck // Input parameter : // Output parameter : // Use Function : check frame format received from ARM. // Reserve date : 11:51am, 30.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static BOOL s_ArmRxIDCheck(U08 u8cnt) { U08 i = 0; U08 len = 0; /* LEN ==4,只比较前4个字节*/ len = strlen(arryArmRxFuncTbl[u8cnt].datatype); for (i = 0; i < len; i++) { if (arryArmRxFuncTbl[u8cnt].datatype[i] != s_u8ArmRxBuf[1+i]) { return (FALSE); } } return (TRUE); } /*---------------------------------------------------------------------- // Function uses : s_frmArmRxOlCheck 接收$OLCHECK,0F# 指令,处理是否开启在线检测功能 // Input parameter : // Output parameter : // Use Function : Handle OLCHECK command // Reserve date : 2024 ----------------------------------------------------------------------*/ static void s_frmArmRxOlCheck(void) { if (s_u8ArmRxBuf[8] == ',' && // 检查逗号位置 s_u8ArmRxBuf[10] == 'F' && // 检查F后缀 s_u8ArmRxBuf[11] == '#') { if (s_u8ArmRxBuf[9] == '1') { // $OLCHECK,1F# gtArm.olcheck_enable = 1; } else if (s_u8ArmRxBuf[9] == '0') { // $OLCHECK,0F# gtArm.olcheck_enable = 0;} } } /*---------------------------------------------------------------------- // Function uses : DvdRxTask // Input parameter : // Output parameter : // Use Function : Receive command data from DVD. // Reserve date : 15:18pm, 22.Feb.2013, written by Sirius ----------------------------------------------------------------------*/ void ArmRxTask(void) { U08 err = 0; U08 i = 0; Uart1GetChar(s_u8ArmRxBuf, 0, &err); /* Copy data if received */ if (err == COM_NO_ERR) { /* Valid data received */ if (s_ArmRxCheck()) { /* Caculate checksum and feed back Ack data */ for (i = 0; i < NbOfArmRxCmd; i++) { if (s_ArmRxIDCheck(i)) { arryArmRxFuncTbl[i].pfunc(); break; } } } } } /*---------------------------------------------------------------------- // Function uses : DvdTxTask // Input parameter : // Output parameter : // Use Function : Transmit data to DVD. // Reserve date : 14:29pm, 19.Feb.2013, written by Sirius ----------------------------------------------------------------------*/ void ArmTxTask(void) { static U08 u8cnt =0; T_MESSAGE *pmsg; pmsg = OSQGet(ArmMsgQueue); if (pmsg->id < NumOfArmMsg) { arryArmTxFuncTbl[pmsg->id](pmsg->prm); } u8cnt ++; if (u8cnt >50) { u8cnt = 100; } else if (u8cnt >10) { u8cnt = 100; //OSQPost(ArmMsgQueue, ARM_MSG_VER, 0); } if( s_vu16DvdTaskTmr >= OS_TIMER_2S ) { s_vu16DvdTaskTmr = 0; // OSQPost(ArmMsgQueue, ARM_MSG_VER, 0); } } /*---------------------------------------------------------------------- // Function uses : s_frmArmRxHandshake // Input parameter : // Output parameter : // Use Function : // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxHandshake(void) { } static void s_frmArmTxNull(U16 prm) { prm = prm; } /*---------------------------------------------------------------------- // Function uses : s_frmArmRxSysReset // Input parameter : // Output parameter : // Use Function : // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxSysReset(void) { gtPwrCfg.state = POWER_ON_RESET; gtArm.workmode = 0; //进入测试模式 } /*---------------------------------------------------------------------- // Function uses : s_frmArmRxSysReset // Input parameter : // Output parameter : // Use Function : // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxSysUpdateReset(void) { // SYS_SetUpdate(); gtPwrCfg.state = POWER_ON_RESET; gtArm.workmode = 0; //进入测试模式 } /*---------------------------------------------------------------------- // Function uses : s_frmArmRxMic // Input parameter : // Output parameter : // Use Function :0:手柄麦克风,1:面板麦克风 // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxMic(void) { if(s_u8ArmRxBuf[5]=='0') { //GpioMicSwOutputCfg (RESET); } else { // GpioMicSwOutputCfg (SET); } } /*---------------------------------------------------------------------- // Function uses : s_frmArmRxNled // Input parameter : // Output parameter : // Use Function : // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxNled(void) { #if WDKL_NLED_TYPE ==NLEDPCA9635 switch (s_u8ArmRxBuf[5]) { case '0': gtArm.PCA9635Led[11]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[12]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[10]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.PCA9635LedEn |=0x01; break; case '1': gtArm.PCA9635Led[14]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[15]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[13]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.PCA9635LedEn |=0x02; break; case '2': gtArm.PCA9635Led[2]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[3]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[1]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.PCA9635LedEn |=0x04; break; case '3': gtArm.PCA9635Led[5]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[6]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[4]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.PCA9635LedEn |=0x08; break; case '4': gtArm.PCA9635Led[8]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[9]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[7]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.PCA9635LedEn |=0x10; break; } #else switch (s_u8ArmRxBuf[5]) { case '0': gtArm.PCA9635Led[0]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[1]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[2]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.Ledhm1620AllDate &=0xfefefe; if ( gtArm.PCA9635Led [0]>0) { //R gtArm.Ledhm1620AllDate |=0x100; } if ( gtArm.PCA9635Led [1]>0 ) { //G gtArm.Ledhm1620AllDate |=0x01; } if ( gtArm.PCA9635Led [2]>0) { //B gtArm.Ledhm1620AllDate |=0x10000; } gtArm.ledhm1620pwmLevel[0] = gtArm.PCA9635Led [0]/10; gtArm.ledhm1620pwmLevel[1] = gtArm.PCA9635Led [1]/10; gtArm.ledhm1620pwmLevel[2] = gtArm.PCA9635Led [2]/10; gtArm.PCA9635LedEn |=0x01; break; case '1': gtArm.PCA9635Led[3]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[4]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[5]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.PCA9635LedEn |=0x02; gtArm.Ledhm1620AllDate &=0xfdfdfd; if ( gtArm.PCA9635Led [3]>0 ) { //R gtArm.Ledhm1620AllDate |=0x200; } if ( gtArm.PCA9635Led [4]>0) { //G gtArm.Ledhm1620AllDate |=0x02; } if ( gtArm.PCA9635Led [5]>0 ) { //B gtArm.Ledhm1620AllDate |=0x20000; } gtArm.ledhm1620pwmLevel[3] = gtArm.PCA9635Led [3]/10; gtArm.ledhm1620pwmLevel[4] = gtArm.PCA9635Led [4]/10; gtArm.ledhm1620pwmLevel[5] = gtArm.PCA9635Led [5]/10; break; case '2': gtArm.PCA9635Led[6]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[7]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[8]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.PCA9635LedEn |=0x04; gtArm.Ledhm1620AllDate &=0xfbfbfb; if ( gtArm.PCA9635Led [6]>0 ) { //R gtArm.Ledhm1620AllDate |=0x400; } if ( gtArm.PCA9635Led [7]>0 ) { //G gtArm.Ledhm1620AllDate |=0x04; } if ( gtArm.PCA9635Led [8]>0 ) { //B gtArm.Ledhm1620AllDate |=0x40000; } gtArm.ledhm1620pwmLevel[6] = gtArm.PCA9635Led [6]/10; gtArm.ledhm1620pwmLevel[7] = gtArm.PCA9635Led [7]/10; gtArm.ledhm1620pwmLevel[8] = gtArm.PCA9635Led [8]/10; break; case '3': gtArm.PCA9635Led[9]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[10]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[11]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.PCA9635LedEn |=0x08; gtArm.Ledhm1620AllDate &=0xf7f7f7; if ( gtArm.PCA9635Led [9]>0 ) { //R gtArm.Ledhm1620AllDate |=0x800; } if ( gtArm.PCA9635Led [10]>0 ) { //G gtArm.Ledhm1620AllDate |=0x08; } if ( gtArm.PCA9635Led [11]>0 ) { //B gtArm.Ledhm1620AllDate |=0x80000; } gtArm.ledhm1620pwmLevel[9] = gtArm.PCA9635Led [9]/10; gtArm.ledhm1620pwmLevel[10] = gtArm.PCA9635Led [10]/10; gtArm.ledhm1620pwmLevel[11] = gtArm.PCA9635Led [11]/10; break; case '4': gtArm.PCA9635Led[12]=(int)((s_u8ArmRxBuf[7]-0x30)*10+(s_u8ArmRxBuf[8]-0x30))*256/100; //R gtArm.PCA9635Led[13]=(int)((s_u8ArmRxBuf[9]-0x30)*10+(s_u8ArmRxBuf[10]-0x30))*256/100; //G gtArm.PCA9635Led[14]=(int)((s_u8ArmRxBuf[11]-0x30)*10+(s_u8ArmRxBuf[12]-0x30))*256/100; //B gtArm.PCA9635LedEn |=0x10; gtArm.Ledhm1620AllDate &=0xefefef; if ( gtArm.PCA9635Led [12]>0) { //R gtArm.Ledhm1620AllDate |=0x1000; } if ( gtArm.PCA9635Led [13]>0 ) { //G gtArm.Ledhm1620AllDate |=0x10; } if ( gtArm.PCA9635Led [14]>0 ) { //B gtArm.Ledhm1620AllDate |=0x100000; } gtArm.ledhm1620pwmLevel[12] = gtArm.PCA9635Led [12]/10; gtArm.ledhm1620pwmLevel[13] = gtArm.PCA9635Led [13]/10; gtArm.ledhm1620pwmLevel[14] = gtArm.PCA9635Led [14]/10; break; default: break; } #endif } /*---------------------------------------------------------------------- // Function name : s_frmArmRxUled // Input parameter : // Output parameter : // Use Function : // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxUled(void) { U08 u8cnt =0; u8cnt = s_u8ArmRxBuf[6] - 0x30; if (u8cnt >2) { u8cnt =2; } gtArm.Uled = u8cnt; } /*---------------------------------------------------------------------- // Function name : s_frmArmRxUled // Input parameter : // Output parameter : // Use Function : // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxRelay(void) { U08 u8cnt =0; u8cnt = s_u8ArmRxBuf[6] - 0x30; if (u8cnt == 0) { gtArm.Relay[0 ]= s_u8ArmRxBuf[8]; if ( gtArm.Relay[0 ] == '0') { RELAY_OFF; } else if ( gtArm.Relay[0 ] == '1') { RELAY_ON; } } else if (u8cnt == 1) { gtArm.Relay[1 ]= s_u8ArmRxBuf[8]; } else { gtArm.Relay[2 ]= s_u8ArmRxBuf[8]; } } /*---------------------------------------------------------------------- // Function name : s_frmArmRxUled // Input parameter : // Output parameter : // Use Function : // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxDoorLed(void) { gtArm.DoorLed[0] = s_u8ArmRxBuf[9]-0x30; gtArm.DoorLed[1] = s_u8ArmRxBuf[10]-0x30; gtArm.DoorLed[2] = s_u8ArmRxBuf[11]-0x30; } /*---------------------------------------------------------------------- // Function name : s_frmArmRxUled // Input parameter : // Output parameter : // Use Function : // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxSip(void) { if(s_u8ArmRxBuf[5]=='0') { gtArm.RTL8152_flag=0; } else if(s_u8ArmRxBuf[5]=='1') { gtArm.RTL8152_flag=1; } else if(s_u8ArmRxBuf[5]=='2') { gtArm.RTL8152_flag=2; } } /*---------------------------------------------------------------------- // Function name : s_frmArmRxID // Input parameter : // Output parameter : // Use Function : // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxID(void) { OSQPost(ArmMsgQueue, ARM_MSG_ID, 0); } /*---------------------------------------------------------------------- // Function name : s_frmArmRxID // Input parameter : // Output parameter : // Use Function : // Reserve date : 18:35pm, 17.JAN.2020, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxCallLed(void) { gtArm.callled_red = s_u8ArmRxBuf[9] -0x30; gtArm.callled_yel = s_u8ArmRxBuf[10] -0x30; } /*---------------------------------------------------------------------- // Function name : s_frmArmRxID // Input parameter : // Output parameter : // Use Function : // Reserve date : 18:35pm, 17.JAN.2020, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmRxAsk(void) { if (s_u8ArmRxBuf[5] ==0x49) { OSQPost(ArmMsgQueue, ARM_MSG_ID, 0); } else if (s_u8ArmRxBuf[5] ==0x56) { OSQPost(ArmMsgQueue, ARM_MSG_VER, 0); } } static void s_frmArmRxNetReset(void) { if (s_u8ArmRxBuf[10] == '0') { POWER_RESET_OFF; } else if(s_u8ArmRxBuf[10] == '1') { POWER_RESET_ON; } } void LED_ACK_TASK(U16 prm) { U08 u8keyp =0; u8keyp = HI_BYTE(prm); gtArm.LedKeyState = u8keyp; if (u8keyp == 14) { //取消所有事件 LED_R_OFF; } else if (u8keyp == 13) { //换药 LED_BLUE_ON; } else if (u8keyp == 12) { LED_RED_ON; } else if (u8keyp == 11) { LED_GREEN_ON; } } /*---------------------------------------------------------------------- // Function uses : s_frmArmTxKey // Input parameter : // Output parameter : // Use Function : SWC key code. // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmTxKey(U16 prm) { U08 *buf = (U08*)NULL; buf = &s_u8ArmTxBuf[0]; /* Obtain pointer to Tx buffer */ *buf++ = '$'; #ifdef WDFJKEY_MAC_ADD *buf++ = HI_BYTE( gtArm.FJKeymac); //dwdtest *buf++ = LO_BYTE( gtArm.FJKeymac); //dwdtest #endif *buf++ = 'K'; *buf++ = 'E'; *buf++ = 'Y'; if (HI_BYTE(prm)==8) { *buf++ = 0x30+0x0b; } else if (HI_BYTE(prm)==9) { //发送 < 改成 发送] //*buf++ = 0x30+0x0c; *buf++ = 0x30+0x2d; }else if (HI_BYTE(prm)==0xa) {//发送 = *buf++ = 0x30+0x0d; }else if (HI_BYTE(prm)==0xb) { //发送 > 改成 发送[ //*buf++ = 0x30+0x0e; *buf++ = 0x30+0x2b; } else if (HI_BYTE(prm)==0xd) {// 发送 ? *buf++ = 0x30+0x0f; //拔针 dwd231225 } else if (HI_BYTE(prm)==0xc) {//发送 @ *buf++ = 0x30+0x10; //取消防水按钮 dwd240506 } else if (HI_BYTE(prm)==0xe){ //发送8 *buf++ = 0x30+0x08; } else { *buf++ = 0x30+HI_BYTE(prm); } *buf++ = ','; gtArm.startworkflag =1; if ((HI_BYTE(prm)<5) && (LO_BYTE(prm) == 0X02)){ //dwd200422 prm &= 0xff00; prm |= 0x01; } *buf++ = 0X30+LO_BYTE(prm); // LED_ACK_TASK(prm); *buf++ = '#'; *buf++ = 0x00; #ifdef WDFJKEY_MAC_ADD Uart1PutChar(s_u8ArmTxBuf, 11); #else Uart1PutChar(s_u8ArmTxBuf, 9); #endif gtArm.uarttxcnt = 0; } /*---------------------------------------------------------------------- // Function uses : s_frmArmTxID // Input parameter : // Output parameter : // Use Function : DEVICE ID // Reserve date : 14:55pm, 6.Sep.2019, written by dwd ----------------------------------------------------------------------*/ static void s_frmArmTxID(U16 prm) { U08 *buf = (U08*)NULL; U08 u8cnt =0; buf = &s_u8ArmTxBuf[0]; /* Obtain pointer to Tx buffer */ #ifdef WDFJKEY_MAC_ADD *buf++ = HI_BYTE( gtArm.FJKeymac); //dwdtest *buf++ = LO_BYTE( gtArm.FJKeymac); //dwdtest #endif *buf++ = '$'; *buf++ = 'I'; *buf++ = 'D'; *buf++ = ','; for (u8cnt = 0;u8cnt <15;u8cnt ++) { // *buf ++ = DeviceID[u8cnt]; } // *buf++ = 0X30+LO_BYTE(prm); *buf++ = '1'; *buf++ = '#'; #ifdef WDFJKEY_MAC_ADD Uart1PutChar(s_u8ArmTxBuf, 23); #else Uart1PutChar(s_u8ArmTxBuf, 21); #endif } static void s_frmArmTxVersion(U16 prm) { U08 *buf = (U08*)NULL; U08 u8cnt =0; buf = &s_u8ArmTxBuf[0]; /* Obtain pointer to Tx buffer */ #ifdef WDFJKEY_MAC_ADD *buf++ = HI_BYTE( gtArm.FJKeymac); //dwdtest *buf++ = LO_BYTE( gtArm.FJKeymac); //dwdtest #endif *buf++ = '$'; *buf++ = 'V'; *buf++ = ','; for (u8cnt = 0;u8cnt <15;u8cnt ++) { *buf ++ = DeviceVisionInfo[u8cnt]; } // *buf++ = 0X30+LO_BYTE(prm); *buf++ = 'F'; *buf++ = '#'; #ifdef WDFJKEY_MAC_ADD Uart1PutChar(s_u8ArmTxBuf, 22); #else Uart1PutChar(s_u8ArmTxBuf, 20); #endif } //============================================================== // End Of File //==============================================================