1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
31
32
33
34
35
36
41
42
43
44
45
50
57
58
63
67
72
85
86
92
93
107
108
113
114
127
128
133
134
150
151
156
157
170
173
174
/* ... */
#include "k_module.h"
#include "DIALOG.h"
/* ... */
/* ... */
Includes
#define MAX_MODULES_NUM 15
K_ModulePropertyTypedef module_prop [MAX_MODULES_NUM];
K_ModuleOpenTypedef open_link [MAX_MODULES_NUM];
uint16_t module_num = 0;
uint16_t openlink_num = 0;Private variables
static uint8_t k_ModuleVerify(K_ModuleItem_Typedef *module);
/* ... */
void k_ModuleInit(void)
{
module_num = 0;
openlink_num = 0;
memset(module_prop, 0, sizeof(module_prop));
memset(open_link, 0, sizeof(module_prop));
}{ ... }
/* ... */
uint8_t k_ModuleGetNumber(void)
{
return module_num;
}{ ... }
/* ... */
uint8_t k_ModuleAdd(K_ModuleItem_Typedef *module)
{
if((module_num < (MAX_MODULES_NUM - 1)) && (k_ModuleVerify(module) == 0))
{
module_prop[module_num].module = module;
module_num++;
return 0;
}if ((module_num < (MAX_MODULES_NUM - 1)) && (k_ModuleVerify(module) == 0)) { ... }
else
{
return 1;
}else { ... }
}{ ... }
/* ... */
uint8_t k_ModuleOpenLink(K_ModuleItem_Typedef *module, char *ext)
{
if(openlink_num < (MAX_MODULES_NUM - 1))
{
open_link[openlink_num].module = module;
strcpy(open_link[openlink_num].ext, ext);
openlink_num++;
return 0;
}if (openlink_num < (MAX_MODULES_NUM - 1)) { ... }
else
{
return 1;
}else { ... }
}{ ... }
/* ... */
K_GET_DIRECT_OPEN_FUNC *k_ModuleCheckLink(char *ext)
{
uint8_t i = 0;
for (i = 0; i < MAX_MODULES_NUM; i++)
{
if(strcmp(open_link[i].ext, ext) == 0)
{
return (K_GET_DIRECT_OPEN_FUNC *)(open_link[i].module->DirectOpen);
}if (strcmp(open_link[i].ext, ext) == 0) { ... }
}for (i = 0; i < MAX_MODULES_NUM; i++) { ... }
return NULL;
}{ ... }
/* ... */
static uint8_t k_ModuleVerify(K_ModuleItem_Typedef *module)
{
uint8_t i = 0;
for (i = 0; i < MAX_MODULES_NUM; i++)
{
if(module_prop[i].module != NULL)
{
if(module_prop[i].module->id == module->id)
{
return 1;
}if (module_prop[i].module->id == module->id) { ... }
}if (module_prop[i].module != NULL) { ... }
}for (i = 0; i < MAX_MODULES_NUM; i++) { ... }
return 0;
}{ ... }
/* ... */
void k_ModuleRemove(K_ModuleItem_Typedef *module)
{
uint8_t idx = 0;
for (idx = 0; idx < MAX_MODULES_NUM; idx ++)
{
if(module_prop[module_num].module->id == module->id)
{
module_prop[module_num].module = NULL;
module_num--;
}if (module_prop[module_num].module->id == module->id) { ... }
}for (idx = 0; idx < MAX_MODULES_NUM; idx ++) { ... }
}{ ... }
/* ... */
/* ... */