-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathjdy.h
230 lines (199 loc) · 4.63 KB
/
jdy.h
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
#ifndef JDY_H
#define JDY_H
#include "main.h"
#include "stdio.h"
#include "string.h"
#include "bsp_ble.h"
#include "bsp_dbg.h"
// 指令集合
typedef struct __JDY_CMD_TypeDef
{
char* OK;
char* add;
char* equ;
char* over;
char* AT;
char* RESET;
char* VERSION;
char* LADDR;
char* NAME;
char* PIN;
char* TYPE;
char* BAUD;
char* DISC;
char* STAT;
char* STARTEN;
char* ADVIN;
char* POWR;
char* ROLE;
char* SLEEP;
char* DEFAULT;
char* INQ;
char* STOP;
char* CONN;
char* CONA;
char* BAND;
char* CLRBAND;
char* SRBAND;
char* MESH;
char* KEY;
char* NETID;
char* MADDR;
char* MCLSS;
char* FRIEND;
char* CLRFRIEND;
char* FRTYPE;
char* IBUUID;
char* MAJOR;
char* MINOR;
char* IBSING;
char* ENLOG;
char* DATA;
char* CUIO;
char* TGIO;
char* FUNC;
char* SUBTYPE;
char* LEARN;
char* LEAVAL;
char* DEVCLSS;
char* KLABEL;
char* KLTIME;
char* KLRSSI;
char* ALED;
char* RSSVAL;
char* RSSI;
char* RITYPE;
char* PAISTART;
char* GSEND;
char* RSSVLS;
}_JDY_CMD_TypeDef;
// 工作模式 默认是5
typedef enum __ROLE
{
Slave,
Master,
BLE_radio,
iBeacon,
iBeacon_pogopin,
MESH,
MESH_net,
multiSlave,
multiMaster,
KeyTag
}_ROLE;
// 波特率 默认是4 (9600bps)
typedef enum __BAUD
{
B2400 = 2U,
B4800 = 3U,
B9600 = 4U,
B19200 = 5U,
B38400 = 6U,
B57600 = 7U,
B115200 = 8U
}_BAUD;
// 发射功率 默认是4
typedef enum __POWR
{
n_15dbm,
n_0dbm,
p_2dbm,
p_3dbm,
p_4dbm
}_POWR;
// 查询--连接状态
// MESH状态,只有在网络内有中心机的情况下才有效,
// 特别说明组网数量多时不建议用户打开中心机会造成网络负荷
typedef enum __STAT
{
NotConnect,
Connected,
Netted,
ConnectedAndNetted
}_STAT;
// 开机睡眠或唤醒 默认是1 这个测试发现jdy-25m不反应,暂时不用
typedef enum __STARTEN
{
sleep,
weakup
}_STARTEN;
// 串口输出状态 默认是1
typedef enum __ENLOG
{
off,
on
}_ENLOG;
// 是否打开密码连接方式 默认是0
typedef enum __TYPE
{
noPIN,
NeedPIN_without_Banding,
NeedPIN_with_Banding
}_TYPE;
// 组网设备类型 默认是0(路由器) 1(终端设备)
typedef enum __MCLSS
{
Router, //路由器(支持中继)
Terminal //终端设备(无中继)
}_MCLSS;
// 串口状态机
typedef enum __STATE
{
JDY_idle,
JDY_listening,
JDY_datahandling
}_STATE;
// JDY库的状态反馈
typedef enum _JDY_StateDef
{
JDY_OK,
JDY_ERR,
JDY_TMOUT,
JDY_Waitting
}JDY_StateDef;
// JDY25设备
typedef struct _JDY_DEVICE
{
/******* 特殊用途 ********/
_JDY_CMD_TypeDef cmd;
char isInited;
char dbgflag;
_STATE state;
/******* enum 类型 ********/
_ENLOG ENLOG; //串口输出状态
_TYPE TYPE; //是否需要PIN
_BAUD BAUD; //波特率 // 默认 B9600
_MCLSS MCLSS; //组网设备类型
_ROLE ROLE; //工作模式设置
_POWR POWR; //发射功率
_STAT STAT; //读取连接状态
/******* char* 类型 ********/
// 留出一位用于 字符串 型末尾的 '\0'
char LADDR[49]; //MAC地址
char MADDR[5]; //短地址
char NETID[5]; //组网ID // "1189"
char NAME[19]; //广播名称 // "JDY-25M"
char PIN[7]; //连接PIN // "123456"
}JDY_Def;
#define JAY_MAX_AT_SIZE ((uint16_t)49U)
#define JAY_MAX_Para_SIZE ((uint16_t)49U)
#define JAY_MAX_Recv_SIZE ble_MAX_datarev_buffsize
#define JDY_Listening_timeout ((uint32_t)3000U) // 最大超时1000ms
extern JDY_Def JDY;
JDY_StateDef __jdy_AT_OKcheck(void);
JDY_StateDef __jdy_AT_CMD(const char* cmdin, const char* param);
JDY_StateDef __jdy_AT_Query(const char* cmdin, char* param, size_t paramlen);
JDY_StateDef __jdy_AT_Query_with_enum(const char* cmdin, int* num);
JDY_StateDef __jdy_AT_Query_with_char(const char* cmdin, char* c, size_t paramlen);
JDY_StateDef __jdy_AT_Query_Selectable(const char* cmdin);
void __jdy_StrCut(char* str, size_t len);
JDY_StateDef jdy_SNED_and_EQUERY(const char* cmdin, const char* param);
JDY_StateDef jdy_SEND_CMD(const char *cmdin, const char *param);
JDY_StateDef jdy_SEND_MESH(const char* data);
JDY_StateDef jdy_EQUERY(const char* cmdin);
void jdy_init(void);
void jdy_loop(void);
void jdy_it_ble_handle(void);
void jdy_it_dbg_handle(void);
// void _jdy_txData_cat(const char* cmdin);
#endif