582 lines
14 KiB
C
582 lines
14 KiB
C
|
|
|||
|
#include "hostMcuComm.h"
|
|||
|
#include "hostQueueUart.h"
|
|||
|
#include "hostParameter.h"
|
|||
|
|
|||
|
#include "uart_dev.h"
|
|||
|
#include "FM_GPIO.h"
|
|||
|
|
|||
|
#include "FreeRTOS.h"
|
|||
|
#include "task.h"
|
|||
|
|
|||
|
#include "mcu_common.h"
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD> */
|
|||
|
enum {
|
|||
|
workCurrent = 0x0000,
|
|||
|
workVoltage = 0x0001,
|
|||
|
workTemperature = 0x0002,
|
|||
|
J1_Power = 0x0003,
|
|||
|
J2_Power = 0x0004,
|
|||
|
J3_Power = 0x0005,
|
|||
|
J4_Power = 0x0006,
|
|||
|
J5_Power = 0x0007,
|
|||
|
J6_Power = 0x0008,
|
|||
|
J7_Power = 0x0009,
|
|||
|
J8_Power = 0x000A,
|
|||
|
J9_Power = 0x000B,
|
|||
|
/* (1<>ֽ<EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>ͨ<EFBFBD>Ų<EFBFBD><C5B2><EFBFBD><EFBFBD><EFBFBD>(00H<30><48><EFBFBD><EFBFBD>ʹ<EFBFBD>øô<C3B8><C3B4><EFBFBD>, 01H<31><48>4800;02H<32><48>9600;03H<33><48>19200;04H<34><48>38400;05H<35><48>57600;06H<36><48>115200) */
|
|||
|
J0_485_Communication_Baud_Rate = 0x000C,
|
|||
|
J2_485_Communication_Baud_Rate = 0x000D,
|
|||
|
J4_485_Communication_Baud_Rate = 0x000E,
|
|||
|
J6_485_Communication_Baud_Rate = 0x000F,
|
|||
|
Lora_uart_Communication_Baud_Rate = 0x0010,
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
/* <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
static uint16_t ReadRegisterWorkCurrent(void *pMsg);
|
|||
|
static uint16_t ReadRegisterWorkVoltage(void *pMsg);
|
|||
|
static uint16_t ReadRegisterWorkTemperature(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ1_Power(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ2_Power(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ3_Power(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ4_Power(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ5_Power(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ6_Power(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ7_Power(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ8_Power(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ9_Power(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ0Baud(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ2Baud(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ4Baud(void *pMsg);
|
|||
|
static uint16_t ReadRegisterJ6Baud(void *pMsg);
|
|||
|
static uint16_t ReadRegisterLoraBaud(void *pMsg);
|
|||
|
|
|||
|
static uint16_t WriteRegisterJ1_Power(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ2_Power(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ3_Power(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ4_Power(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ5_Power(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ6_Power(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ7_Power(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ8_Power(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ9_Power(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ0Baud(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ2Baud(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ4Baud(void *pMsg);
|
|||
|
static uint16_t WriteRegisterJ6Baud(void *pMsg);
|
|||
|
static uint16_t WriteRegisterLoraBaud(void *pMsg);
|
|||
|
|
|||
|
/* <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
typedef uint16_t (*RegProcFunc)(void*);
|
|||
|
typedef struct _SL_RegProcTable{
|
|||
|
uint32_t regId;
|
|||
|
RegProcFunc pRegProc;
|
|||
|
}SL_RegProcTable;
|
|||
|
|
|||
|
/* <20><>ȡ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
SL_RegProcTable m_host_RegTblR[] =
|
|||
|
{
|
|||
|
{workCurrent, ReadRegisterWorkCurrent},
|
|||
|
{workVoltage, ReadRegisterWorkVoltage},
|
|||
|
{workTemperature, ReadRegisterWorkTemperature},
|
|||
|
{J1_Power, ReadRegisterJ1_Power},
|
|||
|
{J2_Power, ReadRegisterJ2_Power},
|
|||
|
{J3_Power, ReadRegisterJ3_Power},
|
|||
|
{J4_Power, ReadRegisterJ4_Power},
|
|||
|
{J5_Power, ReadRegisterJ5_Power},
|
|||
|
{J6_Power, ReadRegisterJ6_Power},
|
|||
|
{J7_Power, ReadRegisterJ7_Power},
|
|||
|
{J8_Power, ReadRegisterJ8_Power},
|
|||
|
{J9_Power, ReadRegisterJ9_Power},
|
|||
|
{J0_485_Communication_Baud_Rate, ReadRegisterJ0Baud},
|
|||
|
{J2_485_Communication_Baud_Rate, ReadRegisterJ2Baud},
|
|||
|
{J4_485_Communication_Baud_Rate, ReadRegisterJ4Baud},
|
|||
|
{J6_485_Communication_Baud_Rate, ReadRegisterJ6Baud},
|
|||
|
{Lora_uart_Communication_Baud_Rate, ReadRegisterLoraBaud},
|
|||
|
};
|
|||
|
|
|||
|
/* д<><D0B4><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
SL_RegProcTable m_host_RegTblW[] =
|
|||
|
{
|
|||
|
{J1_Power, WriteRegisterJ1_Power},
|
|||
|
{J2_Power, WriteRegisterJ2_Power},
|
|||
|
{J3_Power, WriteRegisterJ3_Power},
|
|||
|
{J4_Power, WriteRegisterJ4_Power},
|
|||
|
{J5_Power, WriteRegisterJ5_Power},
|
|||
|
{J6_Power, WriteRegisterJ6_Power},
|
|||
|
{J7_Power, WriteRegisterJ7_Power},
|
|||
|
{J8_Power, WriteRegisterJ8_Power},
|
|||
|
{J9_Power, WriteRegisterJ9_Power},
|
|||
|
{J0_485_Communication_Baud_Rate, WriteRegisterJ0Baud},
|
|||
|
{J2_485_Communication_Baud_Rate, WriteRegisterJ2Baud},
|
|||
|
{J4_485_Communication_Baud_Rate, WriteRegisterJ4Baud},
|
|||
|
{J6_485_Communication_Baud_Rate, WriteRegisterJ6Baud},
|
|||
|
{Lora_uart_Communication_Baud_Rate, WriteRegisterLoraBaud},
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterWorkCurrent(void *pMsg)
|
|||
|
{
|
|||
|
return (uint16_t)(getWorkCurrent() * 10);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterWorkVoltage(void *pMsg)
|
|||
|
{
|
|||
|
return (uint16_t)(getWorkVoltage() * 10);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterWorkTemperature(void *pMsg)
|
|||
|
{
|
|||
|
return (uint16_t)(getBoardTemperature() * 10);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ1<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ1_Power(void *pMsg)
|
|||
|
{
|
|||
|
return readPwrCtrlState(J1_PwrCtrl);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ2<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ2_Power(void *pMsg)
|
|||
|
{
|
|||
|
return readPwrCtrlState(J2_PwrCtrl);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ3<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ3_Power(void *pMsg)
|
|||
|
{
|
|||
|
return readPwrCtrlState(J3_PwrCtrl);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ4<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ4_Power(void *pMsg)
|
|||
|
{
|
|||
|
return readPwrCtrlState(J4_PwrCtrl);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ5<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ5_Power(void *pMsg)
|
|||
|
{
|
|||
|
return readPwrCtrlState(J5_PwrCtrl);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ6<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ6_Power(void *pMsg)
|
|||
|
{
|
|||
|
return readPwrCtrlState(J6_PwrCtrl);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ7<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ7_Power(void *pMsg)
|
|||
|
{
|
|||
|
return readPwrCtrlState(J7_PwrCtrl);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ8<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ8_Power(void *pMsg)
|
|||
|
{
|
|||
|
return readPwrCtrlState(J8_PwrCtrl);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ9<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ9_Power(void *pMsg)
|
|||
|
{
|
|||
|
return readPwrCtrlState(J9_PwrCtrl);
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ0ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ0Baud(void *pMsg)
|
|||
|
{
|
|||
|
return baudConversionConfig(getJ0_485_Baud());
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ2ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ2Baud(void *pMsg)
|
|||
|
{
|
|||
|
return baudConversionConfig(getJ2_485_Baud());
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ4ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ4Baud(void *pMsg)
|
|||
|
{
|
|||
|
return baudConversionConfig(getJ4_485_Baud());
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ6ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterJ6Baud(void *pMsg)
|
|||
|
{
|
|||
|
return baudConversionConfig(getJ6_485_Baud());
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡJ6ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t ReadRegisterLoraBaud(void *pMsg)
|
|||
|
{
|
|||
|
return baudConversionConfig(getLora_Uart_Baud());
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J1<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ1_Power(void *pMsg)
|
|||
|
{
|
|||
|
writePwrCtrlState(J1_PwrCtrl, (uint8_t)(*(uint16_t *)pMsg));
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J2<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ2_Power(void *pMsg)
|
|||
|
{
|
|||
|
writePwrCtrlState(J2_PwrCtrl, (uint8_t)(*(uint16_t *)pMsg));
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J3<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ3_Power(void *pMsg)
|
|||
|
{
|
|||
|
writePwrCtrlState(J3_PwrCtrl, (uint8_t)(*(uint16_t *)pMsg));
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J4<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ4_Power(void *pMsg)
|
|||
|
{
|
|||
|
writePwrCtrlState(J4_PwrCtrl, (uint8_t)(*(uint16_t *)pMsg));
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J5<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ5_Power(void *pMsg)
|
|||
|
{
|
|||
|
writePwrCtrlState(J5_PwrCtrl, (uint8_t)(*(uint16_t *)pMsg));
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J6<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ6_Power(void *pMsg)
|
|||
|
{
|
|||
|
writePwrCtrlState(J6_PwrCtrl, (uint8_t)(*(uint16_t *)pMsg));
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J7<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ7_Power(void *pMsg)
|
|||
|
{
|
|||
|
writePwrCtrlState(J7_PwrCtrl, (uint8_t)(*(uint16_t *)pMsg));
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J8<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ8_Power(void *pMsg)
|
|||
|
{
|
|||
|
writePwrCtrlState(J8_PwrCtrl, (uint8_t)(*(uint16_t *)pMsg));
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J9<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ9_Power(void *pMsg)
|
|||
|
{
|
|||
|
writePwrCtrlState(J9_PwrCtrl, (uint8_t)(*(uint16_t *)pMsg));
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J0ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ0Baud(void *pMsg)
|
|||
|
{
|
|||
|
setJ0_485_Baud(configConversionBaud(*(uint16_t *)pMsg));
|
|||
|
Init_J0_485(getJ0_485_Baud());
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J2ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ2Baud(void *pMsg)
|
|||
|
{
|
|||
|
setJ2_485_Baud(configConversionBaud(*(uint16_t *)pMsg));
|
|||
|
Init_J2_485(getJ2_485_Baud());
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J4ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ4Baud(void *pMsg)
|
|||
|
{
|
|||
|
setJ4_485_Baud(configConversionBaud(*(uint16_t *)pMsg));
|
|||
|
Init_J4_485(getJ4_485_Baud());
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J6ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterJ6Baud(void *pMsg)
|
|||
|
{
|
|||
|
setJ6_485_Baud(configConversionBaud(*(uint16_t *)pMsg));
|
|||
|
Init_J6_485(getJ6_485_Baud());
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J6ͨ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
uint16_t WriteRegisterLoraBaud(void *pMsg)
|
|||
|
{
|
|||
|
setLora_Uart_Baud(configConversionBaud(*(uint16_t *)pMsg));
|
|||
|
Init_J6_485(getLora_Uart_Baud());
|
|||
|
return 0;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief <EFBFBD><EFBFBD>ȡһ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
static void hostMcuReadRegister(uint8_t *buff, uint8_t dataLen)
|
|||
|
{
|
|||
|
uint16_t Register_Start_Address = (buff[6] << 8) | buff[7];
|
|||
|
uint16_t Register_Number = (buff[8] << 8) | buff[9];
|
|||
|
|
|||
|
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD> */
|
|||
|
//ϵͳ<CFB5>ڴ治<DAB4>㣬<EFBFBD><E3A3AC>ȥ<EFBFBD><C8A5>ǰ<EFBFBD><C7B0>
|
|||
|
uint32_t tempLen = 13 + 2 * Register_Number + hostQueueUartSendInfoSize;
|
|||
|
if (xPortGetFreeHeapSize() < tempLen + 1024) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
|
|||
|
hostQueueUartSendInfo *sendBuff = (hostQueueUartSendInfo *)Buff;
|
|||
|
sendBuff->length = 13 + 2 * Register_Number;
|
|||
|
sendBuff->data = Buff + hostQueueUartSendInfoSize;
|
|||
|
|
|||
|
uint8_t *replay_pack = sendBuff->data;
|
|||
|
/* <20><>ʼ<EFBFBD><CABC>־ */
|
|||
|
*(replay_pack) = 'S';
|
|||
|
*(replay_pack + 1) = 'L';
|
|||
|
|
|||
|
/* <20>˿ں<CBBF> */
|
|||
|
replay_pack += 2;
|
|||
|
*(replay_pack) = HostMcu;
|
|||
|
|
|||
|
/* <20>ظ<EFBFBD><D8B8>ֽڳ<D6BD><DAB3><EFBFBD> */
|
|||
|
replay_pack += 1;
|
|||
|
*(replay_pack) = (uint8_t)((sendBuff->length - 6) >> 8);
|
|||
|
*(replay_pack + 1) = (uint8_t)(sendBuff->length - 6);
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
replay_pack += 2;
|
|||
|
*(replay_pack) = SL_Function_Code_Read_Register;
|
|||
|
|
|||
|
/* <20><>ȡ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ */
|
|||
|
replay_pack += 1;
|
|||
|
*(replay_pack) = buff[6];
|
|||
|
*(replay_pack + 1) = buff[7];
|
|||
|
|
|||
|
/* <20>ظ<EFBFBD><D8B8>ֽڳ<D6BD><DAB3><EFBFBD> */
|
|||
|
replay_pack += 2;
|
|||
|
*(replay_pack) = (uint8_t)((sendBuff->length - 13) >> 8);
|
|||
|
*(replay_pack + 1) = (uint8_t)(sendBuff->length - 13);
|
|||
|
|
|||
|
/* <20>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
/* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> */
|
|||
|
for ( uint16_t pos = 0; pos < Register_Number; pos++) {
|
|||
|
for (uint16_t var = 0; var < sizeof(m_host_RegTblR) / sizeof(SL_RegProcTable); var++) {
|
|||
|
if (m_host_RegTblR[var].regId == (Register_Start_Address + pos)) {
|
|||
|
uint16_t temp = m_host_RegTblR[var].pRegProc(NULL);
|
|||
|
replay_pack += 2;
|
|||
|
*(replay_pack) = (uint8_t)(temp >> 8);
|
|||
|
*(replay_pack + 1) = (uint8_t)(temp);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/* У<><D0A3>λ */
|
|||
|
replay_pack += 2;
|
|||
|
uint16_t crc_temp = modebusCrc(sendBuff->data, sendBuff->length - 3);
|
|||
|
*replay_pack = (uint8_t)(crc_temp >> 8);
|
|||
|
replay_pack += 1;
|
|||
|
*replay_pack = (uint8_t)crc_temp;
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|||
|
replay_pack += 1;
|
|||
|
*replay_pack = 0x17;
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ䣬<D5BC><EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
if (uxQueueSpacesAvailable(hostMcu_uart_Queue)) {
|
|||
|
xQueueSend(hostMcu_uart_Queue, &Buff, 10);
|
|||
|
}
|
|||
|
else {
|
|||
|
vPortFree(Buff);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief д<EFBFBD><EFBFBD>һ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
static void hostMcuWriteRegister(uint8_t *buff, uint8_t dataLen)
|
|||
|
{
|
|||
|
uint16_t Register_Start_Address = (buff[6] << 8) | buff[7];
|
|||
|
uint16_t Register_Number = (buff[8] << 8) | buff[9];
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>뵽<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
for ( uint16_t pos = 0; pos < Register_Number; pos++) {
|
|||
|
for (uint16_t i = 0; i < sizeof(m_host_RegTblW) / sizeof(SL_RegProcTable); i++) {
|
|||
|
if (m_host_RegTblW[i].regId == (Register_Start_Address + pos)) {
|
|||
|
uint16_t data = buff[10 + 2 * pos] << 8 | buff[10 + 2 * pos + 1];
|
|||
|
m_host_RegTblW[i].pRegProc(&data);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> */
|
|||
|
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @brief
|
|||
|
* @param
|
|||
|
* @retval
|
|||
|
*/
|
|||
|
void hostFrameDataAnalyze(uint8_t *buff, uint8_t dataLen)
|
|||
|
{
|
|||
|
uint16_t crc = (buff[dataLen - 4] << 8) | buff[dataLen - 3];
|
|||
|
if (crc != modebusCrc(buff, dataLen - 3)) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (buff[5] == SL_Function_Code_Read_Register) {
|
|||
|
hostMcuReadRegister(buff, dataLen);
|
|||
|
}
|
|||
|
else if (buff[5] == SL_Function_Code_Write_Register) {
|
|||
|
hostMcuWriteRegister(buff, dataLen);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|