123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865 |
- //==================================================================
- //
- // 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 <string.h>
- #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
- //==============================================================
|