forked from xuos/xiuos
				
			repair the send peoblem for ch438
This commit is contained in:
		
							parent
							
								
									ec7b594345
								
							
						
					
					
						commit
						be221d902b
					
				| 
						 | 
					@ -17,6 +17,8 @@ if GetDepend(['APPLICATION_SENSOR_TEMPERATURE_HS300X']):
 | 
				
			||||||
    SOURCES = ['temperature_hs300x.c'] + SOURCES
 | 
					    SOURCES = ['temperature_hs300x.c'] + SOURCES
 | 
				
			||||||
if GetDepend(['APPLICATION_SENSOR_CH4_AS830']):
 | 
					if GetDepend(['APPLICATION_SENSOR_CH4_AS830']):
 | 
				
			||||||
    SOURCES = ['ch4_as830.c'] + SOURCES
 | 
					    SOURCES = ['ch4_as830.c'] + SOURCES
 | 
				
			||||||
 | 
					if GetDepend(['APPLICATION_SENSOR_HCHO']):
 | 
				
			||||||
 | 
					    SOURCES = ['hcho_tb600b_wq_hcho1os.c'] + SOURCES
 | 
				
			||||||
path =  [cwd]
 | 
					path =  [cwd]
 | 
				
			||||||
objs = DefineGroup('sensor_app', src = SOURCES, depend = DEPENDS,CPPPATH = path) 
 | 
					objs = DefineGroup('sensor_app', src = SOURCES, depend = DEPENDS,CPPPATH = path) 
 | 
				
			||||||
Return("objs") 
 | 
					Return("objs") 
 | 
				
			||||||
| 
						 | 
					@ -55,11 +55,11 @@ config SENSOR_AS830
 | 
				
			||||||
                        if SENSOR_AS830_DRIVER_EXTUART
 | 
					                        if SENSOR_AS830_DRIVER_EXTUART
 | 
				
			||||||
                                config SENSOR_DEVICE_AS830_DEV
 | 
					                                config SENSOR_DEVICE_AS830_DEV
 | 
				
			||||||
                                        string "as830 device extra uart path"
 | 
					                                        string "as830 device extra uart path"
 | 
				
			||||||
                                        default "/dev/extuart_dev1"
 | 
					                                        default "/dev/extuart_dev4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                config SENSOR_DEVICE_AS830_DEV_EXT_PORT
 | 
					                                config SENSOR_DEVICE_AS830_DEV_EXT_PORT
 | 
				
			||||||
                                        int "if AS830 device using extuart, choose port"
 | 
					                                        int "if AS830 device using extuart, choose port"
 | 
				
			||||||
                                        default "1"
 | 
					                                        default "4"
 | 
				
			||||||
                        endif
 | 
					                        endif
 | 
				
			||||||
                endif                
 | 
					                endif                
 | 
				
			||||||
        endif
 | 
					        endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,6 +43,23 @@ config SENSOR_TB600B_WQ_HCHO1OS
 | 
				
			||||||
                endif
 | 
					                endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if ADD_RTTHREAD_FETURES
 | 
					                if ADD_RTTHREAD_FETURES
 | 
				
			||||||
 | 
					                        config SENSOR_TB600B_WQ_HCHO1OS_DRIVER_EXTUART
 | 
				
			||||||
 | 
					                                bool "Using extra uart to support tb600b wq_hcho1os"
 | 
				
			||||||
 | 
					                                default y
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        config SENSOR_DEVICE_TB600B_WQ_HCHO1OS_DEV
 | 
				
			||||||
 | 
					                                string "tb600b wq_hcho1os device uart path"
 | 
				
			||||||
 | 
					                                default "/dev/uart2"
 | 
				
			||||||
 | 
					                                depends on !SENSOR_TB600B_WQ_HCHO1OS_DRIVER_EXTUART
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        if SENSOR_TB600B_WQ_HCHO1OS_DRIVER_EXTUART
 | 
				
			||||||
 | 
					                                config SENSOR_DEVICE_TB600B_WQ_HCHO1OS_DEV
 | 
				
			||||||
 | 
					                                        string "tb600b wq_hcho1os device extra uart path"
 | 
				
			||||||
 | 
					                                        default "/dev/extuart_dev1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                                config SENSOR_DEVICE_TB600B_WQ_HCHO1OS_DEV_EXT_PORT
 | 
				
			||||||
 | 
					                                        int "if TB600B_WQ_HCHO1OS device using extuart, choose port"
 | 
				
			||||||
 | 
					                                        default "1"
 | 
				
			||||||
 | 
					                        endif
 | 
				
			||||||
                endif                
 | 
					                endif                
 | 
				
			||||||
        endif
 | 
					        endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,14 @@
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					Import('RTT_ROOT')
 | 
				
			||||||
 | 
					from building import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cwd = GetCurrentDir()
 | 
				
			||||||
 | 
					objs = []
 | 
				
			||||||
 | 
					list = os.listdir(cwd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for d in list:
 | 
				
			||||||
 | 
					    path = os.path.join(cwd, d)
 | 
				
			||||||
 | 
					    if os.path.isfile(os.path.join(path, 'SConscript')):
 | 
				
			||||||
 | 
					        objs = objs + SConscript(os.path.join(path, 'SConscript'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return('objs')
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,10 @@
 | 
				
			||||||
 | 
					from building import *
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cwd = GetCurrentDir()
 | 
				
			||||||
 | 
					src = []
 | 
				
			||||||
 | 
					if GetDepend(['SENSOR_TB600B_WQ_HCHO1OS']):
 | 
				
			||||||
 | 
					    src += ['tb600b_wq_hcho1os.c']
 | 
				
			||||||
 | 
					group = DefineGroup('sensor hcho', src, depend = [], CPPPATH = [cwd])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Return('group')
 | 
				
			||||||
| 
						 | 
					@ -331,7 +331,13 @@ CONFIG_TRANSFORM_LAYER_ATTRIUBUTE=y
 | 
				
			||||||
# CONFIG_ADD_NUTTX_FETURES is not set
 | 
					# CONFIG_ADD_NUTTX_FETURES is not set
 | 
				
			||||||
CONFIG_ADD_RTTHREAD_FETURES=y
 | 
					CONFIG_ADD_RTTHREAD_FETURES=y
 | 
				
			||||||
CONFIG_SUPPORT_SENSOR_FRAMEWORK=y
 | 
					CONFIG_SUPPORT_SENSOR_FRAMEWORK=y
 | 
				
			||||||
# CONFIG_SENSOR_HCHO is not set
 | 
					CONFIG_SENSOR_HCHO=y
 | 
				
			||||||
 | 
					CONFIG_SENSOR_TB600B_WQ_HCHO1OS=y
 | 
				
			||||||
 | 
					CONFIG_SENSOR_DEVICE_TB600B_WQ_HCHO1OS="tb600b_wq_hcho1os_1"
 | 
				
			||||||
 | 
					CONFIG_SENSOR_QUANTITY_TB600B_HCHO="hcho_1"
 | 
				
			||||||
 | 
					CONFIG_SENSOR_TB600B_WQ_HCHO1OS_DRIVER_EXTUART=y
 | 
				
			||||||
 | 
					CONFIG_SENSOR_DEVICE_TB600B_WQ_HCHO1OS_DEV="/dev/extuart_dev1"
 | 
				
			||||||
 | 
					CONFIG_SENSOR_DEVICE_TB600B_WQ_HCHO1OS_DEV_EXT_PORT=1
 | 
				
			||||||
# CONFIG_SENSOR_TVOC is not set
 | 
					# CONFIG_SENSOR_TVOC is not set
 | 
				
			||||||
# CONFIG_SENSOR_IAQ is not set
 | 
					# CONFIG_SENSOR_IAQ is not set
 | 
				
			||||||
CONFIG_SENSOR_CH4=y
 | 
					CONFIG_SENSOR_CH4=y
 | 
				
			||||||
| 
						 | 
					@ -339,8 +345,8 @@ CONFIG_SENSOR_AS830=y
 | 
				
			||||||
CONFIG_SENSOR_DEVICE_AS830="as830_1"
 | 
					CONFIG_SENSOR_DEVICE_AS830="as830_1"
 | 
				
			||||||
CONFIG_SENSOR_QUANTITY_AS830_CH4="ch4_1"
 | 
					CONFIG_SENSOR_QUANTITY_AS830_CH4="ch4_1"
 | 
				
			||||||
CONFIG_SENSOR_AS830_DRIVER_EXTUART=y
 | 
					CONFIG_SENSOR_AS830_DRIVER_EXTUART=y
 | 
				
			||||||
CONFIG_SENSOR_DEVICE_AS830_DEV="/dev/extuart_dev1"
 | 
					CONFIG_SENSOR_DEVICE_AS830_DEV="/dev/extuart_dev4"
 | 
				
			||||||
CONFIG_SENSOR_DEVICE_AS830_DEV_EXT_PORT=1
 | 
					CONFIG_SENSOR_DEVICE_AS830_DEV_EXT_PORT=4
 | 
				
			||||||
# CONFIG_SENSOR_CO2 is not set
 | 
					# CONFIG_SENSOR_CO2 is not set
 | 
				
			||||||
# CONFIG_SENSOR_PM is not set
 | 
					# CONFIG_SENSOR_PM is not set
 | 
				
			||||||
# CONFIG_SENSOR_VOICE is not set
 | 
					# CONFIG_SENSOR_VOICE is not set
 | 
				
			||||||
| 
						 | 
					@ -395,7 +401,8 @@ CONFIG_MAIN_KTASK_STACK_SIZE=1024
 | 
				
			||||||
# sensor app
 | 
					# sensor app
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
CONFIG_APPLICATION_SENSOR=y
 | 
					CONFIG_APPLICATION_SENSOR=y
 | 
				
			||||||
# CONFIG_APPLICATION_SENSOR_HCHO is not set
 | 
					CONFIG_APPLICATION_SENSOR_HCHO=y
 | 
				
			||||||
 | 
					CONFIG_APPLICATION_SENSOR_HCHO_TB600B_WQ_HCHO1OS=y
 | 
				
			||||||
# CONFIG_APPLICATION_SENSOR_TVOC is not set
 | 
					# CONFIG_APPLICATION_SENSOR_TVOC is not set
 | 
				
			||||||
# CONFIG_APPLICATION_SENSOR_IAQ is not set
 | 
					# CONFIG_APPLICATION_SENSOR_IAQ is not set
 | 
				
			||||||
CONFIG_APPLICATION_SENSOR_CH4=y
 | 
					CONFIG_APPLICATION_SENSOR_CH4=y
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -116,7 +116,7 @@ void set_485_output(rt_uint8_t	ch_no)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rt_uint8_t ReadCH438Data( rt_uint8_t addr )
 | 
					rt_uint8_t ReadCH438Data( rt_uint8_t addr )
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	rt_uint8_t dat;
 | 
						rt_uint8_t dat = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gpiohs_set_pin(FPIOA_CH438_NWR,GPIO_PV_HIGH);	
 | 
						gpiohs_set_pin(FPIOA_CH438_NWR,GPIO_PV_HIGH);	
 | 
				
			||||||
	gpiohs_set_pin(FPIOA_CH438_NRD,GPIO_PV_HIGH);	
 | 
						gpiohs_set_pin(FPIOA_CH438_NRD,GPIO_PV_HIGH);	
 | 
				
			||||||
| 
						 | 
					@ -224,9 +224,11 @@ static int Ch438Irq(void *parameter)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	rt_uint8_t gInterruptStatus;
 | 
						rt_uint8_t gInterruptStatus;
 | 
				
			||||||
	rt_uint8_t port = 0;
 | 
						rt_uint8_t port = 0;
 | 
				
			||||||
 | 
						struct rt_serial_device *serial = (struct rt_serial_device *)parameter;
 | 
				
			||||||
 | 
						/* multi irq may happen*/
 | 
				
			||||||
	gInterruptStatus = ReadCH438Data(REG_SSR_ADDR);
 | 
						gInterruptStatus = ReadCH438Data(REG_SSR_ADDR);
 | 
				
			||||||
	port = log(gInterruptStatus & 0xFF)/log(2);
 | 
						port = log(gInterruptStatus & 0xFF)/log(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rt_hw_serial_isr(extuart_serial_parm[port], RT_SERIAL_EVENT_RX_IND);
 | 
						rt_hw_serial_isr(extuart_serial_parm[port], RT_SERIAL_EVENT_RX_IND);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -242,17 +244,27 @@ static rt_err_t rt_extuart_configure(struct rt_serial_device *serial, struct ser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static rt_err_t extuart_control(struct rt_serial_device *serial, int cmd, void *arg)
 | 
					static rt_err_t extuart_control(struct rt_serial_device *serial, int cmd, void *arg)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	uint16_t ext_uart_no = serial->config.reserved;
 | 
						rt_uint16_t ext_uart_no = serial->config.reserved;
 | 
				
			||||||
 | 
						static rt_uint16_t register_flag = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (cmd)
 | 
					    switch (cmd)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
    case RT_DEVICE_CTRL_CLR_INT:
 | 
					    case RT_DEVICE_CTRL_CLR_INT:
 | 
				
			||||||
 | 
							if(1 == register_flag)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
			gpiohs_irq_unregister(FPIOA_CH438_INT);
 | 
								gpiohs_irq_unregister(FPIOA_CH438_INT);
 | 
				
			||||||
 | 
								register_flag = 0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case RT_DEVICE_CTRL_SET_INT:
 | 
					    case RT_DEVICE_CTRL_SET_INT:
 | 
				
			||||||
 | 
							if(0 == register_flag)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
			gpiohs_set_drive_mode(FPIOA_CH438_INT, GPIO_DM_INPUT_PULL_UP);
 | 
								gpiohs_set_drive_mode(FPIOA_CH438_INT, GPIO_DM_INPUT_PULL_UP);
 | 
				
			||||||
    		gpiohs_set_pin_edge(FPIOA_CH438_INT,GPIO_PE_FALLING);
 | 
					    		gpiohs_set_pin_edge(FPIOA_CH438_INT,GPIO_PE_FALLING);
 | 
				
			||||||
		gpiohs_irq_register(FPIOA_CH438_INT, 1, Ch438Irq, RT_NULL);
 | 
								gpiohs_irq_register(FPIOA_CH438_INT, 1, Ch438Irq, (void*)serial);
 | 
				
			||||||
 | 
								register_flag = 1;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return (RT_EOK);
 | 
					    return (RT_EOK);
 | 
				
			||||||
| 
						 | 
					@ -261,20 +273,25 @@ static rt_err_t extuart_control(struct rt_serial_device *serial, int cmd, void *
 | 
				
			||||||
static int drv_extuart_putc(struct rt_serial_device *serial, char c)
 | 
					static int drv_extuart_putc(struct rt_serial_device *serial, char c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	uint16_t ext_uart_no = serial->config.reserved;
 | 
						uint16_t ext_uart_no = serial->config.reserved;
 | 
				
			||||||
 | 
					 | 
				
			||||||
	rt_uint8_t	REG_LSR_ADDR,REG_THR_ADDR;
 | 
						rt_uint8_t	REG_LSR_ADDR,REG_THR_ADDR;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	REG_LSR_ADDR = offsetadd[ext_uart_no] | REG_LSR0_ADDR;
 | 
						REG_LSR_ADDR = offsetadd[ext_uart_no] | REG_LSR0_ADDR;
 | 
				
			||||||
	REG_THR_ADDR = offsetadd[ext_uart_no] | REG_THR0_ADDR;
 | 
						REG_THR_ADDR = offsetadd[ext_uart_no] | REG_THR0_ADDR;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while( ( ReadCH438Data( REG_LSR_ADDR ) & BIT_LSR_TEMT ) == 0 );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if((ReadCH438Data( REG_LSR_ADDR ) & BIT_LSR_TEMT) != 0)
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
		WriteCH438Block( REG_THR_ADDR, 1, &c );
 | 
							WriteCH438Block( REG_THR_ADDR, 1, &c );
 | 
				
			||||||
 | 
							return 1;
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int drv_extuart_getc(struct rt_serial_device *serial)
 | 
					static int drv_extuart_getc(struct rt_serial_device *serial)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	rt_int8_t	dat = -1;
 | 
						rt_uint8_t	dat = 0;
 | 
				
			||||||
	rt_uint8_t	REG_LSR_ADDR,REG_RBR_ADDR;
 | 
						rt_uint8_t	REG_LSR_ADDR,REG_RBR_ADDR;
 | 
				
			||||||
	uint16_t ext_uart_no = serial->config.reserved;///< get extern uart port
 | 
						uint16_t ext_uart_no = serial->config.reserved;///< get extern uart port
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -208,13 +208,20 @@
 | 
				
			||||||
#define TRANSFORM_LAYER_ATTRIUBUTE
 | 
					#define TRANSFORM_LAYER_ATTRIUBUTE
 | 
				
			||||||
#define ADD_RTTHREAD_FETURES
 | 
					#define ADD_RTTHREAD_FETURES
 | 
				
			||||||
#define SUPPORT_SENSOR_FRAMEWORK
 | 
					#define SUPPORT_SENSOR_FRAMEWORK
 | 
				
			||||||
 | 
					#define SENSOR_HCHO
 | 
				
			||||||
 | 
					#define SENSOR_TB600B_WQ_HCHO1OS
 | 
				
			||||||
 | 
					#define SENSOR_DEVICE_TB600B_WQ_HCHO1OS "tb600b_wq_hcho1os_1"
 | 
				
			||||||
 | 
					#define SENSOR_QUANTITY_TB600B_HCHO "hcho_1"
 | 
				
			||||||
 | 
					#define SENSOR_TB600B_WQ_HCHO1OS_DRIVER_EXTUART
 | 
				
			||||||
 | 
					#define SENSOR_DEVICE_TB600B_WQ_HCHO1OS_DEV "/dev/extuart_dev1"
 | 
				
			||||||
 | 
					#define SENSOR_DEVICE_TB600B_WQ_HCHO1OS_DEV_EXT_PORT 1
 | 
				
			||||||
#define SENSOR_CH4
 | 
					#define SENSOR_CH4
 | 
				
			||||||
#define SENSOR_AS830
 | 
					#define SENSOR_AS830
 | 
				
			||||||
#define SENSOR_DEVICE_AS830 "as830_1"
 | 
					#define SENSOR_DEVICE_AS830 "as830_1"
 | 
				
			||||||
#define SENSOR_QUANTITY_AS830_CH4 "ch4_1"
 | 
					#define SENSOR_QUANTITY_AS830_CH4 "ch4_1"
 | 
				
			||||||
#define SENSOR_AS830_DRIVER_EXTUART
 | 
					#define SENSOR_AS830_DRIVER_EXTUART
 | 
				
			||||||
#define SENSOR_DEVICE_AS830_DEV "/dev/extuart_dev1"
 | 
					#define SENSOR_DEVICE_AS830_DEV "/dev/extuart_dev4"
 | 
				
			||||||
#define SENSOR_DEVICE_AS830_DEV_EXT_PORT 1
 | 
					#define SENSOR_DEVICE_AS830_DEV_EXT_PORT 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Security */
 | 
					/* Security */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -242,6 +249,8 @@
 | 
				
			||||||
/* sensor app */
 | 
					/* sensor app */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define APPLICATION_SENSOR
 | 
					#define APPLICATION_SENSOR
 | 
				
			||||||
 | 
					#define APPLICATION_SENSOR_HCHO
 | 
				
			||||||
 | 
					#define APPLICATION_SENSOR_HCHO_TB600B_WQ_HCHO1OS
 | 
				
			||||||
#define APPLICATION_SENSOR_CH4
 | 
					#define APPLICATION_SENSOR_CH4
 | 
				
			||||||
#define APPLICATION_SENSOR_CH4_AS830
 | 
					#define APPLICATION_SENSOR_CH4_AS830
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue