mirror of
https://github.com/openharmony/applications_sample_wifi_iot.git
synced 2026-07-01 10:37:28 -04:00
43b9869237
Signed-off-by: Caoruihong <crh.cao@huawei.com> Change-Id: I74050d19a0937d6f61f922780362c70ab0957d75
228 lines
7.4 KiB
C
228 lines
7.4 KiB
C
/*
|
|
* Copyright (c) 2020-2022 Huawei Device Co., Ltd.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
#include <securec.h>
|
|
#include <ohos_init.h>
|
|
#include <cmsis_os.h>
|
|
#include "service.h"
|
|
#include "samgr_lite.h"
|
|
#include "time_adapter.h"
|
|
|
|
#define TOTAL_SPEC_TASK_NUM 19
|
|
|
|
static const char *g_specTaskService[] = {
|
|
"ltsk_s1", "ltsk_s2", "ltsk_s3",
|
|
"otsk_s1", "otsk_s2", "otsk_s3", "otsk_s4",
|
|
"otsk_s5", "otsk_s6", "otsk_s7", "otsk_s8",
|
|
"otsk_s9", "otsk_s10", "otsk_s11", "otsk_s12",
|
|
"otsk_s13", "otsk_s14", "otsk_s15", "otsk_s16",
|
|
};
|
|
static const char *g_specServiceName1[] = {
|
|
"l6tsk_s1", "l6tsk_s2"
|
|
};
|
|
static const char *g_specServiceName2[] = {
|
|
"l7tsk_s1", "l7tsk_s2", "l7tsk_s3"
|
|
};
|
|
static const char *g_specServiceName3[] = {
|
|
"l8tsk_s1", "l8tsk_s2", "l8tsk_s3", "l8tsk_s4"
|
|
};
|
|
static const char *GetName(Service *service);
|
|
static const char *GetSpec1Name(Service *service);
|
|
static const char *GetSpec2Name(Service *service);
|
|
static const char *GetSpec3Name(Service *service);
|
|
static BOOL Initialize(Service *service, Identity identity);
|
|
static BOOL MessageHandle(Service *service, Request *msg);
|
|
static TaskConfig GetLowTagTaskConfig(Service *service);
|
|
static TaskConfig GetHighTagTaskConfig(Service *service);
|
|
static TaskConfig GetSpec1TagTaskConfig(Service *service);
|
|
static TaskConfig GetSpec2TagTaskConfig(Service *service);
|
|
static TaskConfig GetSpec3TagTaskConfig(Service *service);
|
|
static Service g_example[] = {
|
|
{GetName, Initialize, MessageHandle, GetLowTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetLowTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetLowTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig},
|
|
{GetName, Initialize, MessageHandle, GetHighTagTaskConfig}
|
|
};
|
|
static Service g_exampleSpec1[] = {
|
|
{GetSpec1Name, Initialize, MessageHandle, GetSpec1TagTaskConfig},
|
|
{GetSpec1Name, Initialize, MessageHandle, GetSpec1TagTaskConfig}
|
|
};
|
|
static Service g_exampleSpec2[] = {
|
|
{GetSpec2Name, Initialize, MessageHandle, GetSpec2TagTaskConfig},
|
|
{GetSpec2Name, Initialize, MessageHandle, GetSpec2TagTaskConfig},
|
|
{GetSpec2Name, Initialize, MessageHandle, GetSpec2TagTaskConfig}
|
|
};
|
|
static Service g_exampleSpec3[] = {
|
|
{GetSpec3Name, Initialize, MessageHandle, GetSpec3TagTaskConfig},
|
|
{GetSpec3Name, Initialize, MessageHandle, GetSpec3TagTaskConfig},
|
|
{GetSpec3Name, Initialize, MessageHandle, GetSpec3TagTaskConfig},
|
|
{GetSpec3Name, Initialize, MessageHandle, GetSpec3TagTaskConfig}
|
|
};
|
|
static uint32_t g_initIndex = 0;
|
|
|
|
static const char *GetName(Service *service)
|
|
{
|
|
int i;
|
|
for (i = 0; i < TOTAL_SPEC_TASK_NUM; ++i) {
|
|
if (service == &g_example[i]) {
|
|
return g_specTaskService[i];
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
static const char *GetSpec1Name(Service *service)
|
|
{
|
|
int i;
|
|
// g_exampleSpec1 has 2 services
|
|
for (i = 0; i < 2; ++i) {
|
|
if (service == &g_exampleSpec1[i]) {
|
|
return g_specServiceName1[i];
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
static const char *GetSpec2Name(Service *service)
|
|
{
|
|
int i;
|
|
// g_exampleSpec2 has 3 services
|
|
for (i = 0; i < 3; ++i) {
|
|
if (service == &g_exampleSpec2[i]) {
|
|
return g_specServiceName2[i];
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
static const char *GetSpec3Name(Service *service)
|
|
{
|
|
int i;
|
|
// g_exampleSpec3 has 4 services
|
|
for (i = 0; i < 4; ++i) {
|
|
if (service == &g_exampleSpec3[i]) {
|
|
return g_specServiceName3[i];
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
static BOOL Initialize(Service *service, Identity identity)
|
|
{
|
|
(void)identity;
|
|
printf("[Specified Task Test][TaskID:%u][Step:%u][Reg Finish S:%s]Time: %llu!\n",
|
|
(int)osThreadGetId(), g_initIndex++, service->GetName(service), SAMGR_GetProcessTime());
|
|
return TRUE;
|
|
}
|
|
|
|
static BOOL MessageHandle(Service *service, Request *msg)
|
|
{
|
|
printf("[Specified Task Test][TaskID:%u][Step:%u][S:%s] msgId<%d> \n",
|
|
(int)osThreadGetId(), g_initIndex++, service->GetName(service), msg->msgId);
|
|
return FALSE;
|
|
}
|
|
|
|
static TaskConfig GetLowTagTaskConfig(Service *service)
|
|
{
|
|
(void)service;
|
|
int16 customLevelLow = LEVEL_CUSTOM_BEGIN + 1;
|
|
TaskConfig config = {customLevelLow, PRI_NORMAL,
|
|
0x400, 16, SPECIFIED_TASK};
|
|
return config;
|
|
}
|
|
|
|
static TaskConfig GetHighTagTaskConfig(Service *service)
|
|
{
|
|
(void)service;
|
|
int16 customLevelHigh = LEVEL_CUSTOM_BEGIN + 2; // Custom level 2
|
|
TaskConfig config = {customLevelHigh, PRI_NORMAL,
|
|
0x400, 16, SPECIFIED_TASK};
|
|
return config;
|
|
}
|
|
|
|
static TaskConfig GetSpec1TagTaskConfig(Service *service)
|
|
{
|
|
(void)service;
|
|
int16 customLevelSpec1 = LEVEL_CUSTOM_BEGIN + 3; // Custom level 3
|
|
TaskConfig config = {customLevelSpec1, PRI_NORMAL,
|
|
0x400, 16, SPECIFIED_TASK};
|
|
return config;
|
|
}
|
|
|
|
static TaskConfig GetSpec2TagTaskConfig(Service *service)
|
|
{
|
|
(void)service;
|
|
int16 customLevelSpec2 = LEVEL_CUSTOM_BEGIN + 4; // Custom level 4
|
|
TaskConfig config = {customLevelSpec2, PRI_NORMAL,
|
|
0x400, 16, SPECIFIED_TASK};
|
|
return config;
|
|
}
|
|
|
|
static TaskConfig GetSpec3TagTaskConfig(Service *service)
|
|
{
|
|
(void)service;
|
|
int16 customLevelSpec3 = LEVEL_CUSTOM_BEGIN + 5; // Custom level 5
|
|
TaskConfig config = {customLevelSpec3, PRI_NORMAL,
|
|
0x400, 16, SPECIFIED_TASK};
|
|
return config;
|
|
}
|
|
|
|
static void SInit(Service *demo)
|
|
{
|
|
SAMGR_GetInstance()->RegisterService(demo);
|
|
|
|
printf("[Specified Task Test][TaskID:%u][Step:%u][SYSEX Reg S:%s]Time: %llu!\n",
|
|
(int)osThreadGetId(), g_initIndex++, demo->GetName(demo), SAMGR_GetProcessTime());
|
|
}
|
|
|
|
static void SSInit(void)
|
|
{
|
|
int i;
|
|
for (i = 0; i < TOTAL_SPEC_TASK_NUM; ++i) {
|
|
SInit(&g_example[i]);
|
|
}
|
|
|
|
// g_exampleSpec1 has 2 services
|
|
for (i = 0; i < 2; ++i) {
|
|
SInit(&g_exampleSpec1[i]);
|
|
}
|
|
// g_exampleSpec2 has 3 services
|
|
for (i = 0; i < 3; ++i) {
|
|
SInit(&g_exampleSpec2[i]);
|
|
}
|
|
// g_exampleSpec3 has 4 services
|
|
for (i = 0; i < 4; ++i) {
|
|
SInit(&g_exampleSpec3[i]);
|
|
}
|
|
}
|
|
|
|
SYSEX_SERVICE_INIT(SSInit);
|