262 lines
7.5 KiB
C
Raw Permalink Normal View History

/*!
* @ logic_parse.c
2025-05-21 11:31:07 +08:00
*
* @
* 948I2C读写命令来执行主机对屏的控制动作
2025-05-21 11:31:07 +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-21 11:31:07 +08:00
void logic_read_948_task(void *arg, uint32_t event)
{
(void)arg;
2025-05-21 11:31:07 +08:00
if(event == 1)
{//接收底层发来的事件
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
}
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)
{
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])
{
case LCD_BACKLIGHT_PWM:
if(pwmValue != pBuf[1])
2025-05-21 11:31:07 +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:
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:
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;
}
}