2025-05-30 14:10:31 +08:00
|
|
|
|
/*!
|
|
|
|
|
* @文件名 logic_parse.c
|
2025-05-21 11:31:07 +08:00
|
|
|
|
*
|
2025-05-30 14:10:31 +08:00
|
|
|
|
* @功能描述
|
|
|
|
|
* 通过解析948发来的I2C读写命令来执行主机对屏的控制动作
|
2025-05-21 11:31:07 +08:00
|
|
|
|
*/
|
2025-05-30 14:10:31 +08:00
|
|
|
|
#include "logic_public.h"
|
2025-05-21 11:31:07 +08:00
|
|
|
|
|
|
|
|
|
extern ST_VENDOR_DATA gst_vendor_data;
|
|
|
|
|
extern uint8_t result1,result2;
|
|
|
|
|
extern void logWrite(const char *fmt, ...);
|
|
|
|
|
extern void fml_ds90ub948_read_commod(uint8_t *pBuf);
|
|
|
|
|
extern ST_DIAGNOSE1_DATA Err_status1;
|
|
|
|
|
|
|
|
|
|
#define MAX_RX_SIZE 100
|
|
|
|
|
uint8_t pub_slaveRxBuffer[2];
|
|
|
|
|
uint8_t pub_slaveTxBuffer[1];
|
|
|
|
|
int Rx_length = sizeof(pub_slaveRxBuffer);
|
|
|
|
|
int Tx_length = sizeof(pub_slaveTxBuffer);
|
|
|
|
|
void (*p_read_commod)(uint8_t*) = fml_ds90ub948_read_commod;
|
|
|
|
|
static task_t s_948_task;
|
|
|
|
|
static cola_fifo_t g_rx_fifo;
|
|
|
|
|
static uint8_t g_rx_buf[MAX_RX_SIZE];
|
2025-05-30 14:10:31 +08:00
|
|
|
|
|
|
|
|
|
|
2025-05-21 11:31:07 +08:00
|
|
|
|
void logic_read_948_task(void *arg, uint32_t event)
|
|
|
|
|
{
|
2025-05-30 14:10:31 +08:00
|
|
|
|
(void)arg;
|
2025-05-21 11:31:07 +08:00
|
|
|
|
if(event == 1)
|
2025-05-30 14:10:31 +08:00
|
|
|
|
{//接收底层发来的事件
|
2025-05-21 11:31:07 +08:00
|
|
|
|
#if 0
|
|
|
|
|
//Here print cause data wrong display
|
|
|
|
|
for(int i=0; i<sizeof(pub_slaveRxBuffer); i++)
|
|
|
|
|
logWrite("0x%02X ",pub_slaveRxBuffer[i]);
|
|
|
|
|
logWrite("\r\n");
|
|
|
|
|
#endif
|
|
|
|
|
fml_ds90ub948_read_commod(pub_slaveRxBuffer);
|
|
|
|
|
}
|
|
|
|
|
#if 0
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//Here print better,but wrong display sometimes
|
|
|
|
|
uint8_t buffer[2];
|
|
|
|
|
if(cola_fifo_read(&g_rx_fifo, (uint8_t *)buffer, sizeof(buffer)))
|
|
|
|
|
{
|
|
|
|
|
logWrite("%02X %02X\r\n",buffer[0],buffer[1]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-30 14:10:31 +08:00
|
|
|
|
void logic_parse_init(void)
|
2025-05-21 11:31:07 +08:00
|
|
|
|
{
|
|
|
|
|
cola_fifo_init(&g_rx_fifo, g_rx_buf, MAX_RX_SIZE);
|
|
|
|
|
fml_ds90ub948_init(pub_slaveRxBuffer,Rx_length,pub_slaveTxBuffer,Tx_length,p_read_commod,&s_948_task);
|
|
|
|
|
cola_task_create(&s_948_task,logic_read_948_task,NULL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void fml_ds90ub948_read_commod(uint8_t *pBuf)
|
|
|
|
|
{
|
2025-05-30 14:10:31 +08:00
|
|
|
|
static int pwmValue = -1;
|
|
|
|
|
static int backlightOnOff = -1;
|
|
|
|
|
//cola_fifo_write(&g_rx_fifo, pBuf, 2);
|
2025-05-21 11:31:07 +08:00
|
|
|
|
switch (pBuf[0])
|
|
|
|
|
{
|
2025-05-30 14:10:31 +08:00
|
|
|
|
case LCD_BACKLIGHT_PWM:
|
|
|
|
|
if(pwmValue != pBuf[1])
|
2025-05-21 11:31:07 +08:00
|
|
|
|
{
|
2025-05-30 14:10:31 +08:00
|
|
|
|
pwmValue = pBuf[1];
|
|
|
|
|
if(Err_status1.LCD_TEMPERATURE_FAIL == 1)
|
|
|
|
|
{
|
|
|
|
|
fml_pwm_change_duty(pwmValue/2);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fml_pwm_change_duty(pwmValue);
|
|
|
|
|
}
|
|
|
|
|
//logWrite("pwm=%d\r\n",pwmValue);
|
2025-05-21 11:31:07 +08:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case LCD_BACKLIGHT_SWITCH:
|
2025-05-30 14:10:31 +08:00
|
|
|
|
if(backlightOnOff != pBuf[1])
|
|
|
|
|
{
|
|
|
|
|
backlightOnOff = pBuf[1];
|
|
|
|
|
if(backlightOnOff == 1)
|
|
|
|
|
{
|
|
|
|
|
fml_max25512_set_bklight_on(true);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
fml_max25512_set_bklight_on(false);
|
|
|
|
|
}
|
|
|
|
|
//logWrite("backlight=%d\r\n",backlightOnOff);
|
|
|
|
|
}
|
2025-05-21 11:31:07 +08:00
|
|
|
|
break;
|
|
|
|
|
case DAY_NIGHT_MODE:
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case TOUCH_RESET:
|
|
|
|
|
fml_gpio_write(OUT_TP_RST,true);
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case UPDATE_WRITE:
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case TIME_STAMP:
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
/* code */
|
|
|
|
|
case LCD_BACKLIGHT_FB:
|
|
|
|
|
pub_slaveTxBuffer[0] = pwm_pal_1_configs.pwmChannels[0].duty;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case DIAGNOSTIC_STATUS1:
|
|
|
|
|
pub_slaveTxBuffer[0] = result1;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case DIAGNOSTIC_STATUS2:
|
|
|
|
|
pub_slaveTxBuffer[0] = result2;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case LCD_BACKLIGHT_SWITCH_STATE:
|
|
|
|
|
//iic閫氫俊寮<E4BF8A>鍚紝鑳屽厜浣胯兘涔熶竴瀹氭槸鎵撳紑鐨<E7B491>
|
|
|
|
|
pub_slaveTxBuffer[0] = 0x01;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case LCD_TEMPURATURE:
|
2025-05-30 14:10:31 +08:00
|
|
|
|
pub_slaveTxBuffer[0] = fml_convert_ntc_ad_to_temp();
|
2025-05-21 11:31:07 +08:00
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case UPDATE_READ:
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case LCD_BACKLIGHT_AMBIENT_LIGHT_SENSOR:
|
|
|
|
|
pub_slaveTxBuffer[0] = 0xFF;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case I2C_CLASSIFY_VERSION0_READ:
|
|
|
|
|
pub_slaveTxBuffer[0] = APP_CAR_MODLE;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case I2C_CLASSIFY_VERSION1_READ:
|
|
|
|
|
pub_slaveTxBuffer[0] = APP_MAJOR_VERSION;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case I2C_CLASSIFY_VERSION2_READ:
|
|
|
|
|
pub_slaveTxBuffer[0] = APP_MINOR_VERSION;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case I2C_CLASSIFY_VERSION3_READ:
|
|
|
|
|
pub_slaveTxBuffer[0] = APP_SUB_VERSION;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case I2C_CLASSIFY_FBL_VERSION0_READ:
|
|
|
|
|
pub_slaveTxBuffer[0] = FBL_MAJOR_VERSION;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case I2C_CLASSIFY_FBL_VERSION1_READ:
|
|
|
|
|
pub_slaveTxBuffer[0] = FBL_MINOR_VERSION;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case I2C_CLASSIFY_FBL_VERSION2_READ:
|
|
|
|
|
pub_slaveTxBuffer[0] = FBL_SUB_VERSION;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case LCD_TYPE:
|
|
|
|
|
pub_slaveTxBuffer[0] = WENZHOUCHANGJIANG_LCD;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case TP_type:
|
|
|
|
|
pub_slaveTxBuffer[0] = WENZHOUCHANGJIANG_TP;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case PN_VERSION0:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.PN_VERSION0;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case PN_VERSION1:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.PN_VERSION1;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case PN_VERSION2:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.PN_VERSION2;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case PN_VERSION3:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.PN_VERSION3;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case PN_VERSION4:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.PN_VERSION4;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case PN_VERSION5:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.PN_VERSION5;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case HARDWARE_VERSION0:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.HARDWARE_VERSION0;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case HARDWARE_VERSION1:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.HARDWARE_VERSION1;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case HARDWARE_VERSION2:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.HARDWARE_VERSION2;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case HARDWARE_VERSION3:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.HARDWARE_VERSION3;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case HARDWARE_VERSION4:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.HARDWARE_VERSION4;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case HARDWARE_VERSION5:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.HARDWARE_VERSION5;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case SOFTWARE_VERSION0:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.SOFTWARE_VERSION0;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case SOFTWARE_VERSION1:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.SOFTWARE_VERSION1;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case SOFTWARE_VERSION2:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.SOFTWARE_VERSION2;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case SOFTWARE_VERSION3:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.SOFTWARE_VERSION3;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case SOFTWARE_VERSION4:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.SOFTWARE_VERSION4;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case SOFTWARE_VERSION5:
|
|
|
|
|
pub_slaveTxBuffer[0] = gst_vendor_data.SOFTWARE_VERSION5;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case BOOTLOADER_VERSION:
|
|
|
|
|
pub_slaveTxBuffer[0] = BOOTLOADER_VERSION_V;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case I2C_CLASSIFY_FLASH_VERSION_READ:
|
|
|
|
|
pub_slaveTxBuffer[0] = FALSH_VERSION;
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
case DISPLAY_SELF_CHECK_INFO:
|
|
|
|
|
/* code */
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|