diff --git a/APP_Framework/Framework/connection/zigbee/e18/Kconfig b/APP_Framework/Framework/connection/zigbee/e18/Kconfig index 643d07acb..06bdec8c7 100644 --- a/APP_Framework/Framework/connection/zigbee/e18/Kconfig +++ b/APP_Framework/Framework/connection/zigbee/e18/Kconfig @@ -1,8 +1,8 @@ config ADAPTER_ZIGBEE_E18 string "E18 adapter name" default "e18" - -choice + +choice prompt "E18 adapter select net role type " default AS_END_DEVICE_ROLE @@ -11,7 +11,7 @@ choice config AS_ROUTER_ROLE bool "config as a router" - + config AS_END_DEVICE_ROLE bool "config as an end device" endchoice @@ -22,8 +22,8 @@ if ADD_XIZI_FETURES int "E18 MODE pin number" default "61" - config ADAPTER_BC28_PIN_DRIVER - string "BC28 device pin driver path" + config ADAPTER_E18_PIN_DRIVER + string "E18 device pin driver path" default "/dev/pin_dev" config ADAPTER_E18_DRIVER_EXTUART @@ -35,7 +35,7 @@ if ADD_XIZI_FETURES default "/dev/uart2_dev2" depends on !ADAPTER_E18_DRIVER_EXTUART - if ADAPTER_E18_DRIVER_EXTUART + if ADAPTER_E18_DRIVER_EXTUART config ADAPTER_E18_DRIVER string "E18 device extra uart driver path" default "/dev/extuart_dev0" @@ -47,11 +47,31 @@ if ADD_XIZI_FETURES endif if ADD_NUTTX_FETURES + config ADAPTER_E18_MODEPIN + int "E18 MODE pin number" + default "61" + + config ADAPTER_E18_PIN_DRIVER + string "E18 device pin driver path" + default "/dev/pin_dev" + config ADAPTER_E18_DRIVER string "E18 device uart driver path" default "/dev/ttyS1" + depends on !ADAPTER_E18_DRIVER_EXTUART ---help--- If USART1 is selected, then fill in /dev/ttyS1 here. + + if ADAPTER_E18_DRIVER_EXTUART + config ADAPTER_E18_DRIVER + string "E18 device extra uart driver path" + default "/dev/extuart_dev1" + + config ADAPTER_E18_DRIVER_EXT_PORT + int "if E18 device using extuart, choose port" + default "1" + endif + endif if ADD_RTTHREAD_FETURES diff --git a/APP_Framework/Framework/connection/zigbee/e18/e18.c b/APP_Framework/Framework/connection/zigbee/e18/e18.c index bd8d5ef92..6638a988b 100644 --- a/APP_Framework/Framework/connection/zigbee/e18/e18.c +++ b/APP_Framework/Framework/connection/zigbee/e18/e18.c @@ -45,7 +45,7 @@ static int E18HardwareModeGet() int ret = 0; int pin_fd; - pin_fd = PrivOpen(ADAPTER_BC28_PIN_DRIVER, O_RDWR); + pin_fd = PrivOpen(ADAPTER_E18_PIN_DRIVER, O_RDWR); struct PinStat pin_stat; pin_stat.pin = ADAPTER_E18_MODEPIN; @@ -175,7 +175,7 @@ static int E18NetworkModeConfig(struct Adapter *adapter) } out: - if(E18_AS_HEX_MODE == mode){ + if(E18_AS_AT_MODE == mode){ AtCmdConfigAndCheck(adapter->agent, cmd_exit, "+OK"); } @@ -203,7 +203,9 @@ static int E18NetRoleConfig(struct Adapter *adapter) goto out; } } - + + //wait 2second + PrivTaskDelay(2000); switch (adapter->net_role) { @@ -240,7 +242,7 @@ static int E18NetRoleConfig(struct Adapter *adapter) } out: - if(E18_AS_HEX_MODE == mode) { + if(E18_AS_AT_MODE == mode) { AtCmdConfigAndCheck(adapter->agent, cmd_exit, "+OK"); } @@ -382,7 +384,7 @@ static int E18Join(struct Adapter *adapter, unsigned char *priv_net_group) // } if(!ret){ - if(E18_AS_HEX_MODE == mode) { + if(E18_AS_AT_MODE == mode) { ret = AtCmdConfigAndCheck(adapter->agent, cmd_exit, "+OK"); if(ret < 0) { printf("%s %d cmd[%s] config failed!\n",__func__,__LINE__,cmd_exit); diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong/configs/zbnsh/defconfig b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong/configs/zbnsh/defconfig new file mode 100755 index 000000000..deb156dfa --- /dev/null +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/aiit_board/xidatong/configs/zbnsh/defconfig @@ -0,0 +1,64 @@ +# +# This file is autogenerated: PLEASE DO NOT EDIT IT. +# +# You can use "make menuconfig" to make any modifications to the installed .config file. +# You can then do "make savedefconfig" to generate a new defconfig file that includes your +# modifications. +# +CONFIG_ADD_NUTTX_FETURES=y +CONFIG_ARCH="arm" +CONFIG_ARCH_BOARD="xidatong" +CONFIG_ARCH_BOARD_XIDATONG=y +CONFIG_ARCH_CHIP="imxrt" +CONFIG_ARCH_CHIP_IMXRT=y +CONFIG_ARCH_CHIP_MIMXRT1052CVL5B=y +CONFIG_ARCH_INTERRUPTSTACK=10240 +CONFIG_ARCH_STACKDUMP=y +CONFIG_ARMV7M_DCACHE=y +CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y +CONFIG_ARMV7M_ICACHE=y +CONFIG_ARMV7M_USEBASEPRI=y +CONFIG_BOARD_LOOPSPERMSEC=104926 +CONFIG_BUILTIN=y +CONFIG_CLOCK_MONOTONIC=y +CONFIG_EXAMPLES_HELLO=y +CONFIG_IMXRT_GPIO_IRQ=y +CONFIG_IMXRT_GPIO3_0_15_IRQ=y +CONFIG_IDLETHREAD_STACKSIZE=2048 +CONFIG_IMXRT_LPUART1=y +CONFIG_INTELHEX_BINARY=y +CONFIG_LPUART1_SERIAL_CONSOLE=y +CONFIG_NSH_ARCHINIT=y +CONFIG_NSH_BUILTIN_APPS=y +CONFIG_NSH_DISABLE_IFUPDOWN=y +CONFIG_NSH_FILEIOSIZE=512 +CONFIG_NSH_LINELEN=64 +CONFIG_NSH_READLINE=y +CONFIG_RAM_SIZE=524288 +CONFIG_RAM_START=0x20200000 +CONFIG_RAW_BINARY=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_WAITPID=y +CONFIG_START_DAY=14 +CONFIG_START_MONTH=3 +CONFIG_SYSTEM_NSH=y +CONFIG_DEV_GPIO=y +CONFIG_READLINE_CMD_HISTORY=y +CONFIG_READLINE_CMD_HISTORY_LEN=100 +CONFIG_READLINE_CMD_HISTORY_LINELEN=120 +CONFIG_READLINE_TABCOMPLETION=y +CONFIG_FS_ROMFS=y +CONFIG_NSH_ROMFSETC=y +CONFIG_NSH_ARCHROMFS=y +CONFIG_BOARDCTL_RESET=y +CONFIG_BSP_USING_CH438=y +CONFIG_CH438_EXTUART1=y +CONFIG_SUPPORT_CONNECTION_FRAMEWORK=y +CONFIG_CONNECTION_FRAMEWORK_DEBUG=y +CONFIG_SUPPORT_CONNECTION_FRAMEWORK=y +CONFIG_CONNECTION_ADAPTER_ZIGBEE=y +CONFIG_ADAPTER_E18=y +CONFIG_ADAPTER_ZIGBEE_E18="e18" +CONFIG_AS_END_DEVICE_ROLE=y +CONFIG_ADAPTER_E18_DRIVER="/dev/extuart_dev1" +CONFIG_USER_ENTRYPOINT="nsh_main" diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/nuttx/drivers/input/gt9xx.c b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/nuttx/drivers/input/gt9xx.c index 77496d9cf..6d97db654 100755 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/nuttx/drivers/input/gt9xx.c +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/nuttx/drivers/input/gt9xx.c @@ -287,10 +287,10 @@ static int gt9xx_read_reg(FAR struct gt9xx_dev_s *priv, uint8_t *reg_addr, uint8 retries ++; } if (ret < 0) - { + { ierr("gt: [%s] failed freq %ld addr %x ret %d\n", __func__, priv->frequency, config->address, ret); return ret; - } + } return ret; } @@ -302,7 +302,7 @@ static int gt9xx_write_config(FAR struct gt9xx_dev_s *priv) { int i, ret = -1; uint8_t check_sum = 0; - uint8_t offet = 0x80FE - 0x8047 + 1 ; + uint8_t offet = GT9XX_REG_CONFIG_CHKSUM - GT9XX_REG_CONFIG_DATA; const uint8_t* cfg_info = gt9xx_cfg_data; uint8_t cfg_info_len = sizeof(gt9xx_cfg_data) / sizeof(gt9xx_cfg_data[0]); @@ -313,8 +313,6 @@ static int gt9xx_write_config(FAR struct gt9xx_dev_s *priv) memset(®_data[GT9XX_ADDR_LENGTH], 0, GT9XX_CONFIG_MAX_LENGTH); memcpy(®_data[GT9XX_ADDR_LENGTH], cfg_info, cfg_info_len); - check_sum = 0; - for (i = GT9XX_ADDR_LENGTH; i < offet + GT9XX_ADDR_LENGTH; i++) { check_sum += reg_data[i]; @@ -323,7 +321,7 @@ static int gt9xx_write_config(FAR struct gt9xx_dev_s *priv) reg_data[offet + GT9XX_ADDR_LENGTH] = (~check_sum) + 1; //checksum reg_data[offet + GT9XX_ADDR_LENGTH + 1] = 1; //refresh - gt_print("Driver send config."); + gt_print("Driver send config.\n"); ret = gt9xx_write_reg(priv, reg_data, offet + GT9XX_ADDR_LENGTH + 2); @@ -420,14 +418,14 @@ static void gt9xx_data_worker(FAR void *arg) */ if(priv->touchbuf[0] & 0xf) - { - gt_print("gt: [%s] get i2c %x reg %x %x ret %d\n", __func__, config->address, regaddr[0], regaddr[1], ret); - for(int i = 0; i < 10; i ++) - { - gt_print("%x ", priv->touchbuf[i]); - } - gt_print("\n"); - } + { + gt_print("get i2c %x reg %x %x ret %d ", config->address, regaddr[0], regaddr[1], ret); + for(int i = 0; i < GT9XX_TOUCH_DATA_LEN; i ++) + { + gt_print("%x ", priv->touchbuf[i]); + } + gt_print("\n"); + } sample = (FAR struct gt9xx_touch_data_s *)priv->touchbuf; diff --git a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/nuttx/include/nuttx/input/gt9xx.h b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/nuttx/include/nuttx/input/gt9xx.h index 1d723fa53..7a518c8c0 100755 --- a/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/nuttx/include/nuttx/input/gt9xx.h +++ b/Ubiquitous/Nuttx_Fusion_XiUOS/app_match_nuttx/nuttx/include/nuttx/input/gt9xx.h @@ -1,165 +1,113 @@ -/* - * Copyright (c) 2022 AIIT XUOS Lab - * XiUOS is licensed under Mulan PSL v2. - * You can use this software according to the terms and conditions of the Mulan PSL v2. - * You may obtain a copy of Mulan PSL v2 at: - * http://license.coscl.org.cn/MulanPSL2 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PSL v2 for more details. - */ - -/** - * @file gt9xx.h - * @brief API for gt9xx. - * @version 1.0 - * @author AIIT XUOS Lab - * @date 2022.5.31 - */ - - -#ifndef __GT9XX_H_ -#define __GT9XX_H_ - -#define GT9XX_MAX_TOUCHES (1) -#define GT9XX_TOUCH_DATA_LEN (8 * GT9XX_MAX_TOUCHES + 4) - -#define TOUCH_POINT_GET_EVENT(t) ((t).xh >> 6) -#define TOUCH_POINT_GET_ID(t) ((t).yh >> 4) -#define TOUCH_POINT_GET_X(t) ((((t).xh & 0x0f) << 8) | (t).xl) -#define TOUCH_POINT_GET_Y(t) ((((t).yh & 0x0f) << 8) | (t).yl) - - -#define GT9XX_MAX_HEIGHT 272 -#define GT9XX_MAX_WIDTH 480 -#define GT9XX_INT_TRIGGER 0 - -#define GT9XX_ADDR_LENGTH 2 -#define GT9XX_CONFIG_MIN_LENGTH 186 -#define GT9XX_CONFIG_MAX_LENGTH 240 - -#define GT9XX_REG_BAK_REF 0x99D0 -#define GT9XX_REG_MAIN_CLK 0x8020 -#define GT9XX_REG_CHIP_TYPE 0x8000 -#define GT9XX_REG_HAVE_KEY 0x804E -#define GT9XX_REG_MATRIX_DRVNUM 0x8069 -#define GT9XX_REG_MATRIX_SENNUM 0x806A -#define GT9XX_REG_COMMAND 0x8040 - -#define GT9XX_COMMAND_READSTATUS 0 -#define GT9XX_COMMAND_DIFFERENCE 1 -#define GT9XX_COMMAND_SOFTRESET 2 -#define GT9XX_COMMAND_UPDATE 3 -#define GT9XX_COMMAND_CALCULATE 4 -#define GT9XX_COMMAND_TURNOFF 5 - -#define GT9XX_REG_READ_COOR 0x814E -#define GT9XX_REG_SLEEP 0x8040 -#define GT9XX_REG_SENSOR_ID 0x814A -#define GT9XX_REG_CONFIG_DATA 0x8047 -#define GT9XX_REG_VERSION 0x8140 - -/**************************************************************************** - * Public Types - ****************************************************************************/ - -enum touch_event_e -{ - GT9XX_DOWN = 0, /* The state changed to touched */ - GT9XX_UP = 1, /* The state changed to not touched */ - GT9XX_CONTACT = 2, /* There is a continuous touch being detected */ - GT9XX_INVALID = 3 /* No touch information available */ -}; - -/* Describes on touchpoint returned by the GT9xx */ - -struct gt9xx_touch_point_s -{ - uint8_t xl; - uint8_t xh; - uint8_t yl; - uint8_t yh; - uint8_t weight; - uint8_t area; -}; - -/* Describes all touch data returned by the GT9xx */ - -struct gt9xx_touch_data_s -{ - uint8_t tdstatus; /* Touch status */ - struct gt9xx_touch_point_s touch[GT9XX_MAX_TOUCHES]; -}; - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ +/* + * Copyright (c) 2022 AIIT XUOS Lab + * XiUOS is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ -/* Configuration ************************************************************/ +/** + * @file gt9xx.h + * @brief API for gt9xx. + * @version 1.0 + * @author AIIT XUOS Lab + * @date 2022.5.31 + */ + + +#ifndef __GT9XX_H_ +#define __GT9XX_H_ + +#define GT9XX_MAX_TOUCHES (1) +#define GT9XX_TOUCH_DATA_LEN (8 * GT9XX_MAX_TOUCHES + 4) + +#define TOUCH_POINT_GET_EVENT(t) ((t).xh >> 6) +#define TOUCH_POINT_GET_ID(t) ((t).yh >> 4) +#define TOUCH_POINT_GET_X(t) ((((t).xh & 0x0f) << 8) | (t).xl) +#define TOUCH_POINT_GET_Y(t) ((((t).yh & 0x0f) << 8) | (t).yl) + + +#define GT9XX_MAX_HEIGHT 272 +#define GT9XX_MAX_WIDTH 480 +#define GT9XX_INT_TRIGGER 0 + +#define GT9XX_ADDR_LENGTH 2 +#define GT9XX_CONFIG_MIN_LENGTH 186 +#define GT9XX_CONFIG_MAX_LENGTH 240 + +#define GT9XX_REG_BAK_REF 0x99D0 +#define GT9XX_REG_CHIP_TYPE 0x8000 +#define GT9XX_REG_MAIN_CLK 0x8020 +#define GT9XX_REG_COMMAND 0x8040 +#define GT9XX_REG_CONFIG_DATA 0x8047 +#define GT9XX_REG_CONFIG_CHKSUM 0x80FF +#define GT9XX_REG_VERSION 0x8140 +#define GT9XX_REG_SENSOR_ID 0x814A +#define GT9XX_REG_READ_COOR 0x814E + +#define GT9XX_COMMAND_READSTATUS 0 +#define GT9XX_COMMAND_DIFFERENCE 1 +#define GT9XX_COMMAND_SOFTRESET 2 +#define GT9XX_COMMAND_UPDATE 3 +#define GT9XX_COMMAND_CALCULATE 4 +#define GT9XX_COMMAND_TURNOFF 5 + +enum touch_event_e +{ + GT9XX_DOWN = 0, /* The state changed to touched */ + GT9XX_UP = 1, /* The state changed to not touched */ + GT9XX_CONTACT = 2, /* There is a continuous touch being detected */ + GT9XX_INVALID = 3 /* No touch information available */ +}; + +/* Describes on touchpoint returned by the GT9xx */ + +struct gt9xx_touch_point_s +{ + uint8_t xh; + uint8_t xl; + uint8_t yh; + uint8_t yl; + uint8_t weight; + uint8_t area; +}; + +/* Describes all touch data returned by the GT9xx */ + +struct gt9xx_touch_data_s +{ + uint8_t tdstatus; /* Touch status */ + struct gt9xx_touch_point_s touch[GT9XX_MAX_TOUCHES]; +}; /* Maximum number of threads than can be waiting for POLL events */ -#ifndef CONFIG_GT9XX_NPOLLWAITERS -# define CONFIG_GT9XX_NPOLLWAITERS 2 +#ifndef CONFIG_GT9XX_NPOLLWAITERS +# define CONFIG_GT9XX_NPOLLWAITERS 2 #endif -/* Check for some required settings. This can save the user a lot of time - * in getting the right configuration. - */ - -#ifndef CONFIG_SCHED_WORKQUEUE -# error "Work queue support required. CONFIG_SCHED_WORKQUEUE must be selected." -#endif - -/**************************************************************************** - * Public Types - ****************************************************************************/ - -/* A reference to a structure of this type must be passed to the GT9XX - * driver. This structure provides information about the configuration - * of the FT5x06 and provides some board-specific hooks. - * - * Memory for this structure is provided by the caller. It is not copied - * by the driver and is presumed to persist while the driver is active. The - * memory must be writeable because, under certain circumstances, the driver - * may modify frequency or X plate resistance values. - */ - -struct gt9xx_config_s +struct gt9xx_config_s { - /* Device characterization */ - uint8_t address; /* 7-bit I2C address (only bits 0-6 used) */ uint32_t frequency; /* Default I2C frequency */ - /* IRQ/GPIO access callbacks. These operations all hidden behind - * callbacks to isolate the GT9XX driver from differences in GPIO - * interrupt handling by varying boards and MCUs. - * - * attach - Attach an FT5x06 interrupt handler to a GPIO interrupt - * enable - Enable or disable a GPIO interrupt - * clear - Acknowledge/clear any pending GPIO interrupt - * wakeup - Issue WAKE interrupt to FT5x06 to change the FT5x06 from - * Hibernate to Active mode. - * nreset - Control the chip reset pin (active low) - - */ - -#ifndef CONFIG_GT9XX_POLLMODE - int (*attach)(FAR const struct gt9xx_config_s *config, xcpt_t isr, +#ifndef CONFIG_GT9XX_POLLMODE + int (*attach)(FAR const struct gt9xx_config_s *config, xcpt_t isr, FAR void *arg); - void (*enable)(FAR const struct gt9xx_config_s *config, bool enable); - void (*clear)(FAR const struct gt9xx_config_s *config); + void (*enable)(FAR const struct gt9xx_config_s *config, bool enable); + void (*clear)(FAR const struct gt9xx_config_s *config); #endif - void (*wakeup)(FAR const struct gt9xx_config_s *config); - void (*nreset)(FAR const struct gt9xx_config_s *config, + void (*wakeup)(FAR const struct gt9xx_config_s *config); + void (*nreset)(FAR const struct gt9xx_config_s *config, bool state); -}; - +}; -int gt9xx_register(FAR struct i2c_master_s *i2c, - FAR const struct gt9xx_config_s *config, int minor); - - -#endif /* __GT9XX_H__ */ +int gt9xx_register(FAR struct i2c_master_s *i2c, + FAR const struct gt9xx_config_s *config, int minor); + + +#endif /* __GT9XX_H__ */