PresetTask.c
4.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
#include "JZsdkLib.h"
#include "BaseConfig.h"
#ifdef MEGAPHONE_CONFIG_STATUS_ON
#include "Megaphone/Megaphone.h"
#endif
#define PRESET_TASK_FALG_PATH "/root/preset_task_flag"
static T_JZTaskHandle g_PrsetTask_Handle = NULL;
static U8_t g_PrsetTask_Flag = JZ_FLAGCODE_OFF; //预设任务的开启标志位
static U8_t g_PrsetTask_SaveContentFlag = JZ_FLAGCODE_OFF; //预设任务保存内容标志位
/*************************************
*
* 获取预设任务的开启标志位
*
*
* ********************/
int PrsetTask_GetPrsetTaskFlag()
{
return g_PrsetTask_Flag;
}
/*************************************
*
* 获取预设任务保存内容标志位
*
*
* ********************/
int PrsetTask_GetPrsetTaskSaveContentFlag()
{
return g_PrsetTask_SaveContentFlag;
}
/*******************
*
* 创建一个预设任务
*
*
* ***************/
static void *PrsetTask_CreatePrsetTask()
{
T_JZsdkReturnCode ret;
//等候设备启动完毕
while (BaseConfig_GetDeviceInitFlag() != JZ_FLAGCODE_ON)
{
delayMs(100);
}
//都没开启预设任务
if (g_PrsetTask_Flag != JZ_FLAGCODE_ON)
{
return NULL;
}
#ifdef MEGAPHONE_CONFIG_STATUS_ON
JZSDK_LOG_INFO("喊话器配置已已打开,创建喊话器预设任务");
Megaphone_PresetTask(); //创建喊话器预设任务
#endif
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*******************
*
* 开启关闭预设任务
*
* ***************/
T_JZsdkReturnCode PrsetTask_SetPrsetTaskFlag(U8_t flag)
{
T_JZsdkReturnCode ret;
int realLen;
T_JZsdkFSHandler *FSHandler = JZsdk_GetFsHandler();
T_JZsdkFileHandle FileHandle;
g_PrsetTask_Flag = flag;
JZSDK_LOG_INFO("设置预设任务标志位完成 为0x%d", flag);
ret = FSHandler->FileOpen(PRESET_TASK_FALG_PATH, FS_READ_AND_WRITE_CLEAR, &FileHandle);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("预设任务标志位文件打开失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
ret = FSHandler->FileWrite_U8(FileHandle, &flag, 1, &realLen);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("预设任务标志位写入失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
ret = FSHandler->FileClose(FileHandle);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("预设任务标志位文件关闭失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
JZSDK_LOG_INFO("设置预设任务标志位保存完成", flag);
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
/*******************
*
* 设置预设任务内容保存标志位
*
* ***************/
T_JZsdkReturnCode PrsetTask_SetPrsetTaskSaveContentFlag(U8_t flag)
{
g_PrsetTask_SaveContentFlag = flag;
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
T_JZsdkReturnCode PrsetTask_Init()
{
T_JZsdkReturnCode ret;
int realLen;
T_JZsdkOsalHandler *OsalHandler = JZsdk_Platform_GetOsalHandler();
T_JZsdkFSHandler *FSHandler = JZsdk_GetFsHandler();
//创建预设任务目录
FSHandler->Mkdir("/root/Preset");
//1、读取本地的预设任务标志位
T_JZsdkFileHandle FileHandle;
ret = FSHandler->FileOpen(PRESET_TASK_FALG_PATH, FS_ONLY_READ, &FileHandle);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("预设任务标志位获取失败,没有预设的任务");
ret = FSHandler->FileOpen(PRESET_TASK_FALG_PATH, FS_READ_AND_WRITE_CLEAR, &FileHandle);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("预设任务标志位文件创建失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
ret = FSHandler->FileWrite_U8(FileHandle, &g_PrsetTask_Flag, 1, &realLen);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("预设任务标志位写入失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
g_PrsetTask_Flag = JZ_FLAGCODE_OFF;
return ret;
}
//2、读取标志位
ret = FSHandler->FileRead_U8(FileHandle, &g_PrsetTask_Flag, 1, &realLen);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("预设任务标志位读取失败");
g_PrsetTask_Flag = JZ_FLAGCODE_OFF;
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//3、关闭文件
ret = FSHandler->FileClose(FileHandle);
if (ret != JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
{
JZSDK_LOG_ERROR("预设任务标志位文件关闭失败");
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
}
//创建一个预设任务的等候
OsalHandler->TaskCreate("PresetTask", PrsetTask_CreatePrsetTask, 8192, NULL, &g_PrsetTask_Handle);
return ret;
}