Repository navigation
Expand file tree
/
Copy pathmpdb.h
More file actions
124 lines (104 loc) · 2.83 KB
/
Copy pathmpdb.h
File metadata and controls
124 lines (104 loc) · 2.83 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
/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-11-10 think the first version
* 2026-5-26 think the 2.0 version
*/
#ifndef APPLICATIONS_COMMON_MPDB_H_
#define APPLICATIONS_COMMON_MPDB_H_
#define MPDB_DEBUG
//#define MPDB_TEST
#include "type.h"
#define MPDB_VERSION 2
#define MPDB_BLOCK_SIZE 4096
#define MPDB_DATA_OFFSET 4096
#ifdef MPDB_DEBUG
#include <stdio.h>
#include <string.h>
#define MPDB_MEMSET(b, s, c) memset(b, s, c)
#define MPDB_MEMCMP(b, s, c) memcmp(b, s, c)
#define MPDB_PRINT(str, arg...) printf(str, arg)
#else
#include <string.h>
#define MPDB_MEMSET(b, s, c) memset(b, s, c)
#define MPDB_MEMCMP(b, s, c) memcmp(b, s, c)
#define MPDB_PRINT(str, arg...)
#endif
typedef enum mpdb_err{
MpdbErr_ERROR = -100,
MpdbErr_VERSION,
MpdbErr_INIT,
MpdbErr_NULL,
MpdbErr_HEAD,
MpdbErr_OK = 0,
}MpdbErr;
typedef enum mpdb_query_mode{
MpdbQueryMode_NORMAL,
MpdbQueryMode_FAST
}MpdbQueryMode;
MpdbErr Mpdb_read_port(u32 addr, u8 *data, u32 data_size);
MpdbErr Mpdb_write_port(u32 addr, u8 *data, u32 data_size);
MpdbErr Mpdb_erase_port(u32 addr, u32 data_size);
u32 Mpdb_capacity_port();
MpdbErr Mpdb_erase_all_port();
MpdbErr Mpdb_export_open_port();
MpdbErr Mpdb_export_write_port(u32 addr, u8 *data, u32 data_size);
void Mpdb_export_close_port();
struct mpdb_head_prm{
char name[4];
u32 version;
u32 capacity;
u32 data_max;
u32 data_size;
u32 block_quantity;
u32 block_data_max;
};
struct mpdb_head{
struct mpdb_head_prm prm;
u8 reserve[68];
u32 count[1000];
};
struct mpdb_block_head{
u8 init_flag:1;
u8 empty_flag:1;
u8 full_flag:1;
u8 deleted_flag:1;
u8 head_flag:1;
u8 reserve:3;
u8 delete_table[31];
};
typedef struct mpdb_itar_context
{
u32 index;
u32 block_index;
u32 block_data_max;
u32 data_size;
u32 block_quantity;
}MpdbItarContext;
struct mpdb_struct{
u8 buffer[4096];
u32 count_tail;
u32 data_tail;
u32 data_count;
u32 capacity;
u32 block_head_index;
MpdbQueryMode query_mode;
};
typedef struct mpdb_struct Mpdb;
MpdbErr Mpdb_init(Mpdb* mpdb, MpdbQueryMode query_mode);
MpdbErr Mpdb_add(Mpdb* mpdb, void* data);
u32 Mpdb_count(const Mpdb *const mpdb);
u32 Mpdb_capacity(const Mpdb *const mpdb);
MpdbErr Mpdb_positioning(Mpdb* mpdb, u32 index, MpdbItarContext *context);
MpdbErr Mpdb_get(Mpdb *const mpdb, MpdbItarContext *context, void *data);
MpdbErr Mpdb_delete(Mpdb* mpdb, u32 index);
MpdbErr Mpdb_reset(Mpdb* mpdb, u32 data_size);
MpdbErr Mpdb_export(Mpdb* mpdb);
#ifdef MPDB_TEST
void Mpdb_test();
#endif
#endif /* APPLICATIONS_COMMON_MPDB_H_ */