13d0407baSopenharmony_ci/*
23d0407baSopenharmony_ci * Copyright (c) 2022 FuZhou Lockzhiner Electronic Co., Ltd. All rights reserved.
33d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
43d0407baSopenharmony_ci * you may not use this file except in compliance with the License.
53d0407baSopenharmony_ci * You may obtain a copy of the License at
63d0407baSopenharmony_ci *
73d0407baSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
83d0407baSopenharmony_ci *
93d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
103d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
113d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
123d0407baSopenharmony_ci * See the License for the specific language governing permissions and
133d0407baSopenharmony_ci * limitations under the License.
143d0407baSopenharmony_ci */
153d0407baSopenharmony_ci#include <stdio.h>
163d0407baSopenharmony_ci#include <stdint.h>
173d0407baSopenharmony_ci#include <string.h>
183d0407baSopenharmony_ci#include <sys/types.h>
193d0407baSopenharmony_ci#include <sys/stat.h>
203d0407baSopenharmony_ci#include <fcntl.h>
213d0407baSopenharmony_ci#include <unistd.h>
223d0407baSopenharmony_ci
233d0407baSopenharmony_ci#include "los_tick.h"
243d0407baSopenharmony_ci#include "los_task.h"
253d0407baSopenharmony_ci#include "los_config.h"
263d0407baSopenharmony_ci#include "los_interrupt.h"
273d0407baSopenharmony_ci#include "los_debug.h"
283d0407baSopenharmony_ci#include "los_compiler.h"
293d0407baSopenharmony_ci#include "los_arch_interrupt.h"
303d0407baSopenharmony_ci#include "los_task.h"
313d0407baSopenharmony_ci
323d0407baSopenharmony_ci#include "lz_hardware.h"
333d0407baSopenharmony_ci#include "uart_debug.h"
343d0407baSopenharmony_ci#include "config_network.h"
353d0407baSopenharmony_ci
363d0407baSopenharmony_ci#define MAIN_TAG                    "MAIN"
373d0407baSopenharmony_ci
383d0407baSopenharmony_ci#define IOTPROCESS_TASK_STACKSIZE   0x1000
393d0407baSopenharmony_ci#define IOTPROCESS_TASK_PRIO        6
403d0407baSopenharmony_ci#define IOTPROCESS_TASK_NAME        "IotProcess"
413d0407baSopenharmony_ci
423d0407baSopenharmony_ci#define MASKLED_ON                  LZGPIO_LEVEL_HIGH
433d0407baSopenharmony_ci#define MASKLED_OFF                 LZGPIO_LEVEL_LOW
443d0407baSopenharmony_ci
453d0407baSopenharmony_civoid OHOS_SystemInit(void);
463d0407baSopenharmony_ci
473d0407baSopenharmony_cistatic void IotProcess(void *arg)
483d0407baSopenharmony_ci{
493d0407baSopenharmony_ci    static const unsigned int SLEEP_MAX_SECOND = 5;
503d0407baSopenharmony_ci    static const unsigned int SECOND_TO_MSECOND = 1000;
513d0407baSopenharmony_ci
523d0407baSopenharmony_ci    while (1) {
533d0407baSopenharmony_ci        printf("%s: sleep %d sec!\n", __func__, SLEEP_MAX_SECOND);
543d0407baSopenharmony_ci
553d0407baSopenharmony_ci        LOS_Msleep(SLEEP_MAX_SECOND * SECOND_TO_MSECOND);
563d0407baSopenharmony_ci    }
573d0407baSopenharmony_ci}
583d0407baSopenharmony_ci
593d0407baSopenharmony_cistatic void IotInit(void)
603d0407baSopenharmony_ci{
613d0407baSopenharmony_ci    UINT32 uwRet;
623d0407baSopenharmony_ci    UINT32 taskID;
633d0407baSopenharmony_ci    TSK_INIT_PARAM_S stTask = {0};
643d0407baSopenharmony_ci
653d0407baSopenharmony_ci    stTask.pfnTaskEntry = (TSK_ENTRY_FUNC)IotProcess;
663d0407baSopenharmony_ci    stTask.uwStackSize = IOTPROCESS_TASK_STACKSIZE;
673d0407baSopenharmony_ci    stTask.pcName = IOTPROCESS_TASK_NAME;
683d0407baSopenharmony_ci    stTask.uwArg = (UINT32)(0);
693d0407baSopenharmony_ci    stTask.usTaskPrio = IOTPROCESS_TASK_PRIO;
703d0407baSopenharmony_ci    uwRet = LOS_TaskCreate(&taskID, &stTask);
713d0407baSopenharmony_ci    if (uwRet != LOS_OK) {
723d0407baSopenharmony_ci        LZ_HARDWARE_LOGD(MAIN_TAG, "MainBoot task create failed!!!");
733d0407baSopenharmony_ci    }
743d0407baSopenharmony_ci}
753d0407baSopenharmony_ci
763d0407baSopenharmony_ciint Main(void)
773d0407baSopenharmony_ci{
783d0407baSopenharmony_ci    UINT32 ret;
793d0407baSopenharmony_ci
803d0407baSopenharmony_ci    HalInit();
813d0407baSopenharmony_ci
823d0407baSopenharmony_ci    LZ_HARDWARE_LOGD(MAIN_TAG, "%s: OpenHarmony enter...", __func__);
833d0407baSopenharmony_ci
843d0407baSopenharmony_ci    ret = LOS_KernelInit();
853d0407baSopenharmony_ci    if (ret == LOS_OK) {
863d0407baSopenharmony_ci        OHOS_SystemInit();
873d0407baSopenharmony_ci        DeviceManagerStart(); // HDF Drivers Init
883d0407baSopenharmony_ci        IotInit();
893d0407baSopenharmony_ci        LZ_HARDWARE_LOGD(MAIN_TAG, "%s: OpenHarmony start schedule...", __func__);
903d0407baSopenharmony_ci        LOS_Start();
913d0407baSopenharmony_ci    }
923d0407baSopenharmony_ci
933d0407baSopenharmony_ci    while (1) {
943d0407baSopenharmony_ci        __asm volatile("wfi");
953d0407baSopenharmony_ci    }
963d0407baSopenharmony_ci
973d0407baSopenharmony_ci    return 0;
983d0407baSopenharmony_ci}
99