add e22 support for edu-riscv64 on nuttx
This commit is contained in:
parent
d8795bb244
commit
a5231d5f43
|
@ -7,7 +7,7 @@ config ADAPTER_E220
|
||||||
default n
|
default n
|
||||||
|
|
||||||
config ADAPTER_E22
|
config ADAPTER_E22
|
||||||
bool "Using lora adapter device E22-400T33D"
|
bool "Using lora adapter device E22-400T30s"
|
||||||
default n
|
default n
|
||||||
|
|
||||||
choice
|
choice
|
||||||
|
|
|
@ -1,28 +1,34 @@
|
||||||
config ADAPTER_LORA_E22
|
config ADAPTER_LORA_E22
|
||||||
string "E22-400T33D adapter name"
|
string "E22-400T30S adapter name"
|
||||||
default "e22"
|
default "e22"
|
||||||
|
|
||||||
if ADD_XIZI_FETURES
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
if ADD_NUTTX_FETURES
|
if ADD_NUTTX_FETURES
|
||||||
|
|
||||||
config ADAPTER_E22_M0_PATH
|
config ADAPTER_E22_M0_PATH
|
||||||
string "E22 M0 pin device"
|
string "E22 M0 pin device"
|
||||||
default "/dev/gpio0"
|
default "/dev/gpio0"
|
||||||
|
|
||||||
config ADAPTER_E22_M1_PATH
|
config ADAPTER_E22_M1_PATH
|
||||||
string "E22 M1 pin device"
|
string "E22 M1 pin device"
|
||||||
default "/dev/gpio1"
|
default "/dev/gpio1"
|
||||||
|
|
||||||
|
config ADAPTER_E22_DRIVER_EXTUART
|
||||||
|
bool "Using extra uart to support lora"
|
||||||
|
default n
|
||||||
|
|
||||||
config ADAPTER_E22_DRIVER
|
config ADAPTER_E22_DRIVER
|
||||||
string "E22 device uart driver path"
|
string "E22 device uart driver path"
|
||||||
default "/dev/ttyS3"
|
default "/dev/ttyS2"
|
||||||
|
depends on !ADAPTER_E22_DRIVER_EXTUART
|
||||||
endif
|
|
||||||
|
if ADAPTER_E22_DRIVER_EXTUART
|
||||||
if ADD_RTTHREAD_FETURES
|
config ADAPTER_E22_DRIVER
|
||||||
|
string "E22 device extra uart driver path"
|
||||||
|
default "/dev/extuart_dev3"
|
||||||
|
|
||||||
|
config ADAPTER_E22_DRIVER_EXT_PORT
|
||||||
|
int "if E22 device using extuart, choose port"
|
||||||
|
default "3"
|
||||||
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -49,6 +49,7 @@ enum E22LoraMode
|
||||||
static void E22LoraModeConfig(enum E22LoraMode mode)
|
static void E22LoraModeConfig(enum E22LoraMode mode)
|
||||||
{
|
{
|
||||||
int m0_fd, m1_fd;
|
int m0_fd, m1_fd;
|
||||||
|
char value0, value1;
|
||||||
|
|
||||||
//delay 1s , wait AUX ready
|
//delay 1s , wait AUX ready
|
||||||
PrivTaskDelay(1000);
|
PrivTaskDelay(1000);
|
||||||
|
@ -68,23 +69,31 @@ static void E22LoraModeConfig(enum E22LoraMode mode)
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case DATA_TRANSFER_MODE:
|
case DATA_TRANSFER_MODE:
|
||||||
PrivIoctl(m1_fd, GPIOC_WRITE, (unsigned long)GPIO_LOW);
|
value1 = '0';
|
||||||
PrivIoctl(m0_fd, GPIOC_WRITE, (unsigned long)GPIO_LOW);
|
value0 = '0';
|
||||||
|
PrivWrite(m1_fd, &value1, 1);
|
||||||
|
PrivWrite(m0_fd, &value0, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WOR_SEND_MODE:
|
case WOR_SEND_MODE:
|
||||||
PrivIoctl(m1_fd, GPIOC_WRITE, (unsigned long)GPIO_LOW);
|
value1 = '0';
|
||||||
PrivIoctl(m0_fd, GPIOC_WRITE, (unsigned long)GPIO_HIGH);
|
value0 = '1';
|
||||||
|
PrivWrite(m1_fd, &value1, 1);
|
||||||
|
PrivWrite(m0_fd, &value0, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CONFIGURE_MODE:
|
case CONFIGURE_MODE:
|
||||||
PrivIoctl(m1_fd, GPIOC_WRITE, (unsigned long)GPIO_HIGH);
|
value1 = '1';
|
||||||
PrivIoctl(m0_fd, GPIOC_WRITE,(unsigned long)GPIO_LOW);
|
value0 = '0';
|
||||||
|
PrivWrite(m1_fd, &value1, 1);
|
||||||
|
PrivWrite(m0_fd, &value0, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SLEEP_MODE:
|
case SLEEP_MODE:
|
||||||
PrivIoctl(m1_fd, GPIOC_WRITE, (unsigned long)GPIO_HIGH);
|
value1 = '1';
|
||||||
PrivIoctl(m0_fd, GPIOC_WRITE, (unsigned long)GPIO_HIGH);
|
value0 = '1';
|
||||||
|
PrivWrite(m1_fd, &value1, 1);
|
||||||
|
PrivWrite(m0_fd, &value0, 1);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -246,8 +255,6 @@ static int E22GetRegisterParam(uint8 *buf)
|
||||||
*/
|
*/
|
||||||
static int E22Open(struct Adapter *adapter)
|
static int E22Open(struct Adapter *adapter)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
|
||||||
struct termios cfg;
|
|
||||||
/*step1: open e22 uart port*/
|
/*step1: open e22 uart port*/
|
||||||
adapter->fd = PrivOpen(ADAPTER_E22_DRIVER, O_RDWR);
|
adapter->fd = PrivOpen(ADAPTER_E22_DRIVER, O_RDWR);
|
||||||
if (adapter->fd < 0) {
|
if (adapter->fd < 0) {
|
||||||
|
@ -255,22 +262,53 @@ static int E22Open(struct Adapter *adapter)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
tcgetattr(adapter->fd, &cfg);
|
struct SerialDataCfg cfg;
|
||||||
cfsetspeed(&cfg, BAUD_RATE_9600);
|
memset(&cfg, 0 ,sizeof(struct SerialDataCfg));
|
||||||
tcsetattr(adapter->fd, TCSANOW, &cfg);
|
|
||||||
|
cfg.serial_baud_rate = BAUD_RATE_9600;
|
||||||
|
cfg.serial_data_bits = DATA_BITS_8;
|
||||||
|
cfg.serial_stop_bits = STOP_BITS_1;
|
||||||
|
cfg.serial_parity_mode = PARITY_NONE;
|
||||||
|
cfg.serial_bit_order = BIT_ORDER_LSB;
|
||||||
|
cfg.serial_invert_mode = NRZ_NORMAL;
|
||||||
|
cfg.serial_buffer_size = SERIAL_RB_BUFSZ;
|
||||||
|
cfg.is_ext_uart = 0;
|
||||||
|
|
||||||
|
/*aiit board use ch438, so it needs more serial configuration*/
|
||||||
|
#ifdef ADAPTER_E22_DRIVER_EXTUART
|
||||||
|
cfg.is_ext_uart = 1;
|
||||||
|
cfg.ext_uart_no = ADAPTER_E22_DRIVER_EXT_PORT;
|
||||||
|
cfg.port_configure = PORT_CFG_INIT;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AS_LORA_GATEWAY_ROLE
|
||||||
|
//serial receive timeout 10s
|
||||||
|
cfg.serial_timeout = 10000;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AS_LORA_CLIENT_ROLE
|
||||||
|
//serial receive wait forever
|
||||||
|
cfg.serial_timeout = -1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct PrivIoctlCfg ioctl_cfg;
|
||||||
|
ioctl_cfg.ioctl_driver_type = SERIAL_TYPE;
|
||||||
|
ioctl_cfg.args = &cfg;
|
||||||
|
|
||||||
|
PrivIoctl(adapter->fd, OPE_INT, &ioctl_cfg);
|
||||||
|
|
||||||
E22SetRegisterParam(adapter, E22_ADDRESS, E22_CHANNEL, E22_UART_BAUD_RATE);
|
E22SetRegisterParam(adapter, E22_ADDRESS, E22_CHANNEL, E22_UART_BAUD_RATE);
|
||||||
|
|
||||||
|
cfg.serial_baud_rate = E22_UART_BAUD_RATE;
|
||||||
|
ioctl_cfg.args = &cfg;
|
||||||
|
|
||||||
cfsetspeed(&cfg, E22_UART_BAUD_RATE);
|
PrivIoctl(adapter->fd, OPE_INT, &ioctl_cfg);
|
||||||
tcsetattr(adapter->fd, TCSANOW, &cfg);
|
|
||||||
|
|
||||||
ADAPTER_DEBUG("E22Open done\n");
|
ADAPTER_DEBUG("E22Open done\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: Close E22 uart function
|
* @description: Close E22 uart function
|
||||||
* @param adapter - Lora device pointer
|
* @param adapter - Lora device pointer
|
||||||
|
@ -351,7 +389,7 @@ static int E22Send(struct Adapter *adapter, const void *buf, size_t len)
|
||||||
*/
|
*/
|
||||||
static int E22Recv(struct Adapter *adapter, void *buf, size_t len)
|
static int E22Recv(struct Adapter *adapter, void *buf, size_t len)
|
||||||
{
|
{
|
||||||
int recv_len, recv_len_continue;
|
int recv_len = 0, recv_len_continue = 0;
|
||||||
|
|
||||||
uint8 *recv_buf = PrivMalloc(len);
|
uint8 *recv_buf = PrivMalloc(len);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue