Merge branch 'prepare_for_master' of https://git.trustie.net/xuos/xiuos into jerryscript

This commit is contained in:
wgzAIIT
2023-08-28 08:41:32 +08:00
16 changed files with 1440 additions and 411 deletions

View File

@@ -129,6 +129,9 @@ uint8_t lora_recv_data[ADAPTER_LORA_TRANSFER_DATA_LENGTH];
struct LoraDataFormat client_recv_data_format[ADAPTER_LORA_CLIENT_NUM];
static sem_t gateway_recv_data_sem;
static sem_t gateway_send_cmd_sem;
static sem_t client_recv_cmd_sem;
static sem_t client_send_data_sem;
struct LoraDataFormat gateway_recv_data_format;
static int recv_error_cnt = 0;
@@ -315,6 +318,8 @@ static int LoraGatewaySendCmd(struct Adapter *adapter, uint8_t client_id, uint16
return -1;
}
PrivSemaphoreAbandon(&gateway_send_cmd_sem);
return 0;
}
@@ -410,6 +415,7 @@ static int LoraClientSendData(struct Adapter *adapter, void *send_buf, int lengt
return -1;
}
PrivSemaphoreAbandon(&client_send_data_sem);
return 0;
}
@@ -462,7 +468,7 @@ static int LoraClientDataAnalyze(struct Adapter *adapter, void *send_buf, int le
struct timespec abstime;
abstime.tv_sec = DEFAULT_SEM_TIMEOUT;
ret = PrivSemaphoreObtainWait(&adapter->sem, &abstime);
ret = PrivSemaphoreObtainWait(&client_recv_cmd_sem, NULL);
if (0 == ret) {
//only handle this client_id information from gateway
if ((client_recv_data_format[client_id - 1].client_id == adapter->net_role_id) &&
@@ -653,9 +659,15 @@ static int LoraReceiveDataCheck(struct Adapter *adapter, uint8_t *recv_data, uin
static void *LoraReceiveTask(void *parameter)
{
int ret = 0;
struct timespec abstime;
abstime.tv_sec = DEFAULT_SEM_TIMEOUT;
struct Adapter *lora_adapter = (struct Adapter *)parameter;
while (1) {
#ifdef AS_LORA_GATEWAY_ROLE
PrivSemaphoreObtainWait(&gateway_send_cmd_sem, NULL);
#endif
memset(lora_recv_data, 0, ADAPTER_LORA_TRANSFER_DATA_LENGTH);
ret = AdapterDeviceRecv(lora_adapter, lora_recv_data, ADAPTER_LORA_TRANSFER_DATA_LENGTH);
@@ -675,8 +687,10 @@ static void *LoraReceiveTask(void *parameter)
if (ret < 0) {
continue;
}
PrivSemaphoreAbandon(&lora_adapter->sem);
#ifdef AS_LORA_CLIENT_ROLE
PrivSemaphoreAbandon(&client_recv_cmd_sem);
PrivSemaphoreObtainWait(&client_send_data_sem, &abstime);
#endif
}
return 0;
@@ -702,7 +716,7 @@ void LoraGatewayProcess(struct Adapter *lora_adapter, struct LoraGatewayParam *g
printf("LoraGatewaySendCmd client ID %d error\n", gateway->client_id[i]);
continue;
}
ret = PrivSemaphoreObtainWait(&gateway_recv_data_sem, &abstime);
if (0 == ret) {
printf("LoraGatewayProcess receive client %d data done\n", gateway->client_id[i]);
@@ -904,9 +918,13 @@ int AdapterLoraInit(void)
adapter->done = product_info->model_done;
#endif
PrivSemaphoreCreate(&adapter->sem, 0, 0);
#ifdef AS_LORA_GATEWAY_ROLE
PrivSemaphoreCreate(&gateway_recv_data_sem, 0, 0);
PrivSemaphoreCreate(&gateway_send_cmd_sem, 0, 0);
#else//AS_LORA_CLIENT_ROLE
PrivSemaphoreCreate(&client_recv_cmd_sem, 0, 0);
PrivSemaphoreCreate(&client_send_data_sem, 0, 0);
#endif
PrivMutexCreate(&adapter->lock, 0);
@@ -944,9 +962,9 @@ int AdapterLoraTest(void)
PrivTaskStartup(&lora_recv_data_task);
#ifdef ADD_NUTTX_FEATURES
lora_gateway_attr.priority = 19;
lora_gateway_attr.priority = 20;
#else
lora_gateway_attr.schedparam.sched_priority = 19;
lora_gateway_attr.schedparam.sched_priority = 20;
#endif
PrivTaskCreate(&lora_gateway_task, &lora_gateway_attr, &LoraGatewayTask, (void *)adapter);
@@ -966,9 +984,9 @@ int AdapterLoraTest(void)
PrivTaskStartup(&lora_recv_data_task);
#ifdef ADD_NUTTX_FEATURES
lora_client_attr.priority = 19;
lora_client_attr.priority = 20;
#else
lora_client_attr.schedparam.sched_priority = 19;
lora_client_attr.schedparam.sched_priority = 20;
#endif
//create lora client task

View File

@@ -67,7 +67,7 @@ typedef enum
struct ControlDevice
{
char *dev_name;
char dev_name[20];
int status;
//to do