support hc08 on xidatong

This commit is contained in:
wgzAIIT 2022-05-13 16:19:30 +08:00
parent 53a70c5234
commit 7056725c66
11 changed files with 199 additions and 24 deletions

View File

@ -0,0 +1,7 @@
############################################################################
# APP_Framework/Framework/connection/bluetooth/Make.defs
############################################################################
ifneq ($(CONFIG_CONNECTION_ADAPTER_BLUETOOTH),)
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Framework/connection/bluetooth
endif
include $(wildcard $(APPDIR)/../../../APP_Framework/Framework/connection/bluetooth/*/Make.defs)

View File

@ -1,7 +1,17 @@
SRC_FILES := adapter_bluetooth.c
include $(KERNEL_ROOT)/.config
ifeq ($(CONFIG_ADD_NUTTX_FETURES),y)
include $(APPDIR)/Make.defs
CSRCS += adapter_bluetooth.c
include $(APPDIR)/Application.mk
ifeq ($(CONFIG_ADAPTER_HC08),y)
SRC_DIR += hc08
endif
include $(KERNEL_ROOT)/compiler.mk
ifeq ($(CONFIG_ADD_XIZI_FETURES),y)
SRC_FILES := adapter_bluetooth.c
ifeq ($(CONFIG_ADAPTER_HC08),y)
SRC_DIR += hc08
endif
include $(KERNEL_ROOT)/compiler.mk
endif

View File

@ -33,6 +33,25 @@ endif
if ADD_NUTTX_FETURES
config ADAPTER_HC08_WORK_ROLE
string "HC08 work role M(MASTER) or S(SLAVER)"
default "M"
config ADAPTER_HC08_DRIVER_EXTUART
bool "Using extra uart to support bluetooth"
default y
config ADAPTER_HC08_DRIVER
string "HC08 device uart driver path"
default "/dev/ttyS2"
depends on !ADAPTER_HC08_DRIVER_EXTUART
if ADAPTER_HC08_DRIVER_EXTUART
config ADAPTER_HC08_DRIVER
string "HC08 device extra uart driver path"
default "/dev/extuart_dev2"
endif
endif
if ADD_RTTHREAD_FETURES

View File

@ -0,0 +1,6 @@
############################################################################
# APP_Framework/Framework/connection/bluetooth/hc08/Make.defs
############################################################################
ifneq ($(CONFIG_ADAPTER_HC08),)
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Framework/connection/bluetooth/hc08
endif

View File

@ -1,3 +1,13 @@
SRC_FILES := hc08.c
include $(KERNEL_ROOT)/.config
ifeq ($(CONFIG_ADD_NUTTX_FETURES),y)
include $(APPDIR)/Make.defs
CSRCS += hc08.c
include $(APPDIR)/Application.mk
include $(KERNEL_ROOT)/compiler.mk
endif
ifeq ($(CONFIG_ADD_XIZI_FETURES),y)
SRC_FILES := hc08.c
include $(KERNEL_ROOT)/compiler.mk
endif

View File

@ -21,27 +21,27 @@
#include <adapter.h>
#include <at_agent.h>
#define HC08_DETECT_CMD "AT"
#define HC08_DEFAULT_CMD "AT+DEFAULT"
#define HC08_RESET_CMD "AT+RESET"
#define HC08_CLEAR_CMD "AT+CLEAR"
#define HC08_GET_DEVICE_INFO "AT+RX"
#define HC08_DETECT_CMD "AT"
#define HC08_DEFAULT_CMD "AT+DEFAULT"
#define HC08_RESET_CMD "AT+RESET"
#define HC08_CLEAR_CMD "AT+CLEAR"
#define HC08_GET_DEVICE_INFO "AT+RX"
#define HC08_GET_BAUDRATE_CMD "AT+BAUD=?"
#define HC08_SET_BAUDRATE_CMD "AT+BAUD=%u"
#define HC08_GET_CONNECTABLE "AT+CONT=?"
#define HC08_SET_CONNECTABLE "AT+CONT=%s"
#define HC08_GET_ROLE_CMD "AT+ROLE=?"
#define HC08_SET_ROLE_CMD "AT+ROLE=%s"
#define HC08_GET_ADDR_CMD "AT+ADDR=?"
#define HC08_SET_ADDR_CMD "AT+ADDR=%s"
#define HC08_GET_BAUDRATE_CMD "AT+BAUD=?"
#define HC08_SET_BAUDRATE_CMD "AT+BAUD=%u"
#define HC08_GET_CONNECTABLE "AT+CONT=?"
#define HC08_SET_CONNECTABLE "AT+CONT=%s"
#define HC08_GET_ROLE_CMD "AT+ROLE=?"
#define HC08_SET_ROLE_CMD "AT+ROLE=%s"
#define HC08_GET_ADDR_CMD "AT+ADDR=?"
#define HC08_SET_ADDR_CMD "AT+ADDR=%s"
#define HC08_GET_NAME_CMD "AT+NAME=%s"
#define HC08_SET_NAME_CMD "AT+NAME=?"
#define HC08_OK_RESP "OK"
#define HC08_OK_RESP "OK"
#define HC08_CMD_STR_DEFAULT_SIZE 64
#define HC08_RESP_DEFAULT_SIZE 64
#define HC08_CMD_STR_DEFAULT_SIZE 64
#define HC08_RESP_DEFAULT_SIZE 64
enum Hc08AtCmd
{
@ -232,6 +232,41 @@ static int Hc08Close(struct Adapter *adapter)
return 0;
}
#ifdef ADD_NUTTX_FETURES
static int Hc08Ioctl(struct Adapter *adapter, int cmd, void *args)
{
if (OPE_INT != cmd) {
printf("Hc08Ioctl only support OPE_INT, do not support %d\n", cmd);
return -1;
}
uint32_t baud_rate = *((uint32_t *)args);
PrivIoctl(adapter->fd, OPE_INT, baud_rate);
//Step1 : detect hc08 serial function
if (Hc08AtConfigure(adapter->agent, HC08_AT_CMD_DETECT, NULL, NULL) < 0) {
return -1;
}
//Step2 : set hc08 device serial baud, hc08_set_baud send "AT+BAUD=%s"
if (Hc08AtConfigure(adapter->agent, HC08_AT_CMD_SET_BAUDRATE, args, NULL) < 0) {
return -1;
}
PrivTaskDelay(200);
//Step3 : show hc08 device info, hc08_get send "AT+RX" response device info
char device_info[HC08_RESP_DEFAULT_SIZE * 2] = {0};
if (Hc08AtConfigure(adapter->agent, HC08_AT_CMD_GET_DEVICE_INFO, NULL, device_info) < 0) {
return -1;
}
ADAPTER_DEBUG("Hc08 ioctl done\n");
return 0;
}
#else
static int Hc08Ioctl(struct Adapter *adapter, int cmd, void *args)
{
if (OPE_INT != cmd) {
@ -283,6 +318,7 @@ static int Hc08Ioctl(struct Adapter *adapter, int cmd, void *args)
return 0;
}
#endif
static int Hc08SetAddr(struct Adapter *adapter, const char *ip, const char *gateway, const char *netmask)
{
@ -348,7 +384,7 @@ static int Hc08Send(struct Adapter *adapter, const void *buf, size_t len)
EntmSend(adapter->agent, (const char *)buf, len);
} else {
printf("Hc08Send can not find agent\n");
}
}
return 0;
}
@ -358,7 +394,7 @@ static int Hc08Recv(struct Adapter *adapter, void *buf, size_t len)
return EntmRecv(adapter->agent, (char *)buf, len, 40);
} else {
printf("Hc08Recv can not find agent\n");
}
}
return -1;
}

View File

@ -0,0 +1,65 @@
#
# 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_EXTUART2=y
CONFIG_CH438_EXTUART2_BAUD=9600
CONFIG_SUPPORT_CONNECTION_FRAMEWORK=y
CONFIG_CONNECTION_FRAMEWORK_DEBUG=y
CONFIG_CONNECTION_ADAPTER_BLUETOOTH=y
CONFIG_ADAPTER_HC08=y
CONFIG_ADAPTER_BLUETOOTH_HC08="hc08"
CONFIG_ADAPTER_HC08_WORK_ROLE="M"
CONFIG_ADAPTER_HC08_DRIVER_EXTUART=y
CONFIG_ADAPTER_HC08_DRIVER="/dev/extuart_dev2"
CONFIG_USER_ENTRYPOINT="nsh_main"

View File

@ -672,6 +672,10 @@ config NSH_DISABLE_E220_LORA_SEND
bool "Disable e220 Lora send."
default n
config NSH_DISABLE_ADAPTER_BLUETOOTH_TEST
bool "Disable hc08 AdapterBlueToothTest."
default n
config NSH_DISABLE_K210_FFT
bool "Disable the K210 fft device."
default n

View File

@ -1502,6 +1502,10 @@ int nsh_foreach_var(FAR struct nsh_vtbl_s *vtbl, nsh_foreach_var_t cb,
int cmd_E220LoraSend(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
#endif
#if defined(CONFIG_ADAPTER_BLUETOOTH_HC08) && !defined(CONFIG_NSH_DISABLE_ADAPTER_BLUETOOTH_TEST)
int cmd_AdapterBlueToothTest(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
#endif
#if defined(CONFIG_K210_FFT_TEST) && !defined(CONFIG_NSH_DISABLE_K210_FFT)
int cmd_fft(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv);
#endif

View File

@ -327,6 +327,17 @@ int cmd_E220LoraSend(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
}
#endif
#if defined(CONFIG_ADAPTER_BLUETOOTH_HC08) && !defined(CONFIG_NSH_DISABLE_ADAPTER_BLUETOOTH_TEST)
extern int AdapterBlueToothTest(void);
int cmd_AdapterBlueToothTest(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)
{
nsh_output(vtbl, "Hello, world!\n");
FrameworkInit();
AdapterBlueToothTest();
return OK;
}
#endif
#if defined(CONFIG_K210_FFT_TEST) && !defined(CONFIG_NSH_DISABLE_K210_FFT)
extern void nuttx_k210_fft_test(void);
int cmd_fft(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv)

View File

@ -674,6 +674,9 @@ static const struct cmdmap_s g_cmdmap[] =
{ "E220Send", cmd_E220LoraSend, 1, 2, "[e220loraSend <message>]" },
#endif
#if defined(CONFIG_ADAPTER_BLUETOOTH_HC08) && !defined(CONFIG_NSH_DISABLE_ADAPTER_BLUETOOTH_TEST)
{ "AdapterBlueToothTest", cmd_AdapterBlueToothTest, 1, 1, "[BlueTooth hc08 test.]" },
#endif
#if defined(CONFIG_K210_FFT_TEST) && !defined(CONFIG_NSH_DISABLE_K210_FFT)
{ "fft", cmd_fft, 1, 1, "[K210 fft function.]" },