feat add sem obtain wait_time and modify e220 lora receive len operation

This commit is contained in:
Liu_Weichao
2022-04-26 17:57:32 +08:00
parent 63d26584b7
commit 808f00ade1
28 changed files with 287 additions and 15 deletions

View File

@@ -28,7 +28,7 @@
#endif
#ifdef AS_LORA_CLIENT_ROLE
#define E220_ADDRESS 0xFFFF
#define E220_ADDRESS ADAPTER_LORA_NET_ROLE_ID
#endif
#define E220_UART_BAUD_RATE 9600
@@ -289,6 +289,9 @@ static int E220Open(struct Adapter *adapter)
cfg.port_configure = PORT_CFG_INIT;
#endif
//serial receive timeout 100s
cfg.serial_timeout = 100000;
struct PrivIoctlCfg ioctl_cfg;
ioctl_cfg.ioctl_driver_type = SERIAL_TYPE;
ioctl_cfg.args = &cfg;
@@ -387,14 +390,22 @@ static int E220Recv(struct Adapter *adapter, void *buf, size_t len)
uint8 *recv_buf = PrivMalloc(len);
recv_len = PrivRead(adapter->fd, recv_buf, len);
while (recv_len < len) {
recv_len_continue = PrivRead(adapter->fd, recv_buf + recv_len, len - recv_len);
recv_len += recv_len_continue;
if (recv_len) {
while (recv_len < len) {
printf("recv_len %u len %u\n", recv_len, len);
recv_len_continue = PrivRead(adapter->fd, recv_buf + recv_len, len - recv_len);
if (recv_len_continue) {
printf("recv_len_continue %u\n", recv_len);
recv_len += recv_len_continue;
printf("recv_len done %u\n", recv_len);
} else {
recv_len = 0;
break;
}
}
memcpy(buf, recv_buf, len);
}
memcpy(buf, recv_buf, recv_len);
PrivFree(recv_buf);
return recv_len;
@@ -467,7 +478,7 @@ static void LoraOpen(void)
static void LoraRead(void *parameter)
{
int RevLen;
uint8 i, cnt = 0;
int i, cnt = 0;
uint8 buffer[256];
@@ -481,11 +492,11 @@ static void LoraRead(void *parameter)
while (1)
{
KPrintf("ready to read lora data\n");
printf("ready to read lora data\n");
RevLen = E220Recv(adapter, buffer, 256);
if (RevLen) {
KPrintf("lora get data %u\n", RevLen);
printf("lora get data %u\n", RevLen);
for (i = 0; i < RevLen; i ++) {
printf("i %u data 0x%x\n", i, buffer[i]);
}