support lora for aiit-arm32-board on nuttx

This commit is contained in:
wgz-code
2022-03-17 12:04:33 +08:00
parent 3735f221e0
commit 63210858e5
9 changed files with 265 additions and 33 deletions
@@ -9,6 +9,9 @@ if ADD_XIZI_FETURES
endif
if ADD_NUTTX_FETURES
config ADAPTER_SX1278_DRIVER
string "SX1278 device spi driver path"
default "/dev/spi2_lora"
endif
@@ -0,0 +1,6 @@
############################################################################
# APP_Framework/Framework/connection/lora/sx1278/Make.defs
############################################################################
ifneq ($(CONFIG_ADAPTER_LORA_SX1278),)
CONFIGURED_APPS += $(APPDIR)/../../../APP_Framework/Framework/connection/lora/sx1278
endif
@@ -1,3 +1,13 @@
SRC_FILES := sx1278.c
include $(KERNEL_ROOT)/.config
ifeq ($(CONFIG_ADD_NUTTX_FETURES),y)
include $(APPDIR)/Make.defs
CSRCS += sx1278.c
include $(APPDIR)/Application.mk
include $(KERNEL_ROOT)/compiler.mk
endif
ifeq ($(CONFIG_ADD_XIZI_FETURES),y)
SRC_FILES := sx1278.c
include $(KERNEL_ROOT)/compiler.mk
endif
@@ -20,6 +20,35 @@
#include <adapter.h>
#ifdef ADD_NUTTX_FETURES
* fd
* buf - Data to write
* nbytes - Length of data to write
/**
* @description: Sx127x_Nuttx_Write function for nuttx
* @param fd - file descriptor to write to
* @param buf - Data to write
* @param buf - Length of data to write
* @return On success, the number of bytes written are returned (zero indicates nothing was written). On error, -1 is returned.
*/
static int Sx127x_Nuttx_Write(int fd, const void *buf, size_t len)
{
int ret;
unsigned char *buffer = (unsigned char*)PrivMalloc(256);
if (!buffer)
{
printf("failed to allocate buffer\n");
}
memset(buffer, 0, 256);
memcpy(buffer,(unsigned char *)buf,len);
ret = PrivWrite(fd, buffer, len);
PrivFree(buffer);
return ret;
}
#endif
/**
* @description: Open SX1278 spi function
* @param adapter - Lora device pointer
@@ -47,9 +76,14 @@ static int Sx1278Open(struct Adapter *adapter)
static int Sx1278Close(struct Adapter *adapter)
{
/*step1: close sx1278 spi port*/
PrivClose(adapter->fd);
int ret;
ret = PrivClose(adapter->fd);
if(ret < 0){
printf("Sx1278 close failed: %d!\n", ret);
return -1;
}
ADAPTER_DEBUG("Sx1278Close done\n");
ADAPTER_DEBUG("Sx1278 Close done\n");
return 0;
}
@@ -73,13 +107,30 @@ static int Sx1278Ioctl(struct Adapter *adapter, int cmd, void *args)
* @param priv_net_group - priv_net_group params
* @return success: 0, failure: -1
*/
#ifdef ADD_NUTTX_FETURES
static int Sx1278Join(struct Adapter *adapter, unsigned char *priv_net_group)
{
int ret;
ret = Sx127x_Nuttx_Write(adapter->fd, (void *)priv_net_group, 144);
if(ret < 0){
printf("Sx1278 Join net group failed: %d!\n", ret);
}
PrivWrite(adapter->fd, (void *)priv_net_group, 144);
return 0;
return ret;
}
#else
static int Sx1278Join(struct Adapter *adapter, unsigned char *priv_net_group)
{
int ret;
ret = PrivWrite(adapter->fd, (void *)priv_net_group, 144);
if(ret < 0){
printf("Sx1278 Join net group failed: %d!\n", ret);
}
return ret;
}
#endif
/**
* @description: SX1278 send data function
@@ -88,11 +139,28 @@ static int Sx1278Join(struct Adapter *adapter, unsigned char *priv_net_group)
* @param len - data len
* @return success: 0, failure: -1
*/
#ifdef ADD_NUTTX_FETURES
static int Sx1278Send(struct Adapter *adapter, const void *buf, size_t len)
{
PrivWrite(adapter->fd, buf, len);
return 0;
int ret;
ret = Sx127x_Nuttx_Write(adapter->fd, buf, len);
if(ret < 0){
printf("send failed %d!\n", ret);
}
return ret;
}
#else
static int Sx1278Send(struct Adapter *adapter, const void *buf, size_t len)
{
int ret;
ret = PrivWrite(adapter->fd, buf, len);
if(ret < 0){
printf("send failed %d!\n", ret);
}
return ret;
}
#endif
/**
* @description: SX1278 receive data function
@@ -101,10 +169,25 @@ static int Sx1278Send(struct Adapter *adapter, const void *buf, size_t len)
* @param len - data len
* @return success: 0, failure: -1
*/
#ifdef ADD_NUTTX_FETURES
static int Sx1278Recv(struct Adapter *adapter, void *buf, size_t len)
{
int ret;
struct sx127x_read_hdr_s recv_data;
ret = read(adapter->fd, &recv_data, sizeof(struct sx127x_read_hdr_s));
if (ret <= 0){
printf("Read failed %d!\n", ret);
return ret;
}
memcpy((uint8 *)buf, (uint8 *)(&recv_data), len);
return ret;
}
#else
static int Sx1278Recv(struct Adapter *adapter, void *buf, size_t len)
{
return PrivRead(adapter->fd, buf, len);
}
#endif
/**
* @description: SX1278 quit lora net group function
@@ -112,12 +195,30 @@ static int Sx1278Recv(struct Adapter *adapter, void *buf, size_t len)
* @param priv_net_group - priv_net_group params
* @return success: 0, failure: -1
*/
#ifdef ADD_NUTTX_FETURES
static int Sx1278Quit(struct Adapter *adapter, unsigned char *priv_net_group)
{
PrivWrite(adapter->fd, (void *)priv_net_group, 144);
int ret;
ret = Sx127x_Nuttx_Write(adapter->fd, (void *)priv_net_group, 144);
if(ret < 0){
printf("Sx1278 quit net group failed %d!\n", ret);
}
return 0;
return ret;
}
#else
static int Sx1278Quit(struct Adapter *adapter, unsigned char *priv_net_group)
{
int ret;
ret = PrivWrite(adapter->fd, (void *)priv_net_group, 144);
if(ret < 0){
printf("Sx1278 quit net group failed %d!\n", ret);
}
return ret;
}
#endif
static const struct PrivProtocolDone sx1278_done =
{