forked from xuos/xiuos
feat add sem obtain wait_time and modify e220 lora receive len operation
This commit is contained in:
@@ -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]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user