作者 ookk303

国家码小改动

@@ -721,7 +721,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_tone(int Uartport ,int tone) @@ -721,7 +721,7 @@ T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_tone(int Uartport ,int tone)
721 //发送语速 721 //发送语速
722 T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed) 722 T_JZsdkReturnCode HalSend_type1Send_Reply_TTS_speed(int Uartport ,int speed)
723 { 723 {
724 - printf("发送音色\n"); 724 + printf("发送语速\n");
725 725
726 unsigned char sendbuf[256]; 726 unsigned char sendbuf[256];
727 int send_buf_len; 727 int send_buf_len;
1 -// /**  
2 -// 方案一:调用该文件中的对外函数输入参数国家码,可能需要更改获取序列号中地区码的部分代码,等待返回值即可,返回值:0 表明国家码与地区码一致。  
3 -// 方案二:调用该文件中的对外函数输入参数国家码、序列号中的地区码,等待返回值即可。  
4 -// */  
5 -// #include "FreeRTOS.h"  
6 -// #include "task.h"  
7 -// #include "Country_Code.h"  
8 -// #include "myflash.h"  
9 -// #include "dji_logger.h"  
10 -  
11 -  
12 -  
13 -// /*____________________________________________________ Country code array module ____________________________________________________*/  
14 -// #if 1 //国家码  
15 -// //4个有效数据  
16 -// uint16_t CN[] = { //中国  
17 -// 156, //中国大陆  
18 -// 344, //香港  
19 -// 446, //澳门  
20 -// 158, //台湾  
21 -// };  
22 -// //37个有效数据(国家码)  
23 -// uint16_t NA[] = { //美洲  
24 -// 3, //0; 国家码的百位为0~2的数据的位置<_*_*_>  
25 -// 17, //1; 国家码的百位为3~5的数据的位置<_*_*_>  
26 -// 32, //2; 国家码的百位为6~8的数据的位置<_*_*_>  
27 -  
28 -// 13, //3; 国家码的百位为0~2的数据的数量<_*_*_>  
29 -// 28, //4; 安提瓜和巴布达  
30 -// 44, //5; 巴哈马  
31 -// 52, //6; 巴巴多斯  
32 -// 60, //7; 百慕大(英国)  
33 -// 84, //8; 伯利兹  
34 -// 92, //9; 英属维尔京群岛  
35 -// 124, //10; 加拿大  
36 -// 136, //11; 开曼群岛(英国)  
37 -// 188, //12; 哥斯达黎加  
38 -// 192, //13; 古巴  
39 -// 212, //14; 多米尼克  
40 -// 214, //15; 多米尼加  
41 -// 222, //16; 萨尔瓦多  
42 -  
43 -// 14, //17; 国家码的百位为3~4的数据的数量<_*_*_>  
44 -// 304, //18; 格陵兰(丹麦)  
45 -// 308, //19; 格林纳达  
46 -// 312, //20; 瓜德罗普(法国)  
47 -// 320, //21; 危地马拉  
48 -// 332, //22; 海地  
49 -// 340, //23; 洪都拉斯  
50 -// 388, //24; 牙买加  
51 -// 474, //25; 马提尼克(法国)  
52 -// 484, //26; 墨西哥  
53 -// 500, //27; 蒙特塞拉特(英国)  
54 -// 530, //28; 荷属安的列斯  
55 -// 533, //29; 阿鲁巴(荷兰)  
56 -// 558, //30; 尼加拉瓜  
57 -// 591, //31; 巴拿马  
58 -  
59 -// 10, //32; 国家码的百位为6~8的数据的数量<_*_*_>  
60 -// 630, //33; 波多黎各(美国)  
61 -// 659, //34; 圣基茨和尼维斯  
62 -// 660, //35; 安圭拉(英国)  
63 -// 662, //36; 圣卢西亚  
64 -// 666, //37; 圣皮埃尔和密克隆(法国)  
65 -// 670, //38; 圣文森特和格林纳丁斯  
66 -// 780, //39; 特立尼达和多巴哥  
67 -// 796, //40; 特克斯和凯科斯群岛(英国)  
68 -// 840, //41; 美国  
69 -// 850, //42; 美属维尔京群岛  
70 -// };  
71 -  
72 -// //45个数据  
73 -// uint16_t EU[] = { //欧洲  
74 -// 3, //0; 国家码的百位为0~2的数据的位置<_*_*_>  
75 -// 19, //1; 国家码的百位为3~5的数据的位置<_*_*_>  
76 -// 36, //2; 国家码的百位为6~8的数据的位置<_*_*_>  
77 -  
78 -// 15, //3; 国家码的百位为0~2的数据的数量<_*_*_>  
79 -// 8, //4; 阿尔巴尼亚  
80 -// 20, //5; 安道尔  
81 -// 40, //6; 奥地利  
82 -// 56, //7; 比利时  
83 -// 100, //8; 保加利亚  
84 -// 112, //9; 白俄罗斯  
85 -// 191, //10; 克罗地亚  
86 -// 203, //11; 捷克  
87 -// 208, //12; 丹麦  
88 -// 233, //13; 爱沙尼亚  
89 -// 234, //14; 法罗群岛(丹麦)  
90 -// 246, //15; 芬兰  
91 -// 250, //16; 法国  
92 -// 276, //17; 德国  
93 -// 292, //18; 直布罗陀  
94 -  
95 -// 16, //19; 国家码的百位为3~5的数据的数量<_*_*_>  
96 -// 300, //20; 希腊  
97 -// 336, //21; 梵蒂冈  
98 -// 348, //22; 匈牙利  
99 -// 352, //23; 冰岛  
100 -// 372, //24; 爱尔兰  
101 -// 380, //25; 意大利  
102 -// 428, //26; 拉脱维亚  
103 -// 438, //27; 列支敦士登  
104 -// 440, //28; 立陶宛  
105 -// 442, //29; 卢森堡  
106 -// 470, //30; 马耳他  
107 -// 492, //31; 摩纳哥  
108 -// 498, //32; 摩尔多瓦  
109 -// 499, //33; 黑山  
110 -// 528, //34; 荷兰  
111 -// 578, //35; 挪威  
112 -  
113 -// 14, //36; 国家码的百位为6~8的数据的数量<_*_*_>  
114 -// 616, //37; 波兰  
115 -// 620, //38; 葡萄牙  
116 -// 642, //39; 罗马尼亚  
117 -// 643, //40; 俄罗斯联邦  
118 -// 674, //41; 圣马力诺  
119 -// 688, //42; 塞尔维亚  
120 -// 703, //43; 斯洛伐克  
121 -// 705, //44; 斯洛文尼亚  
122 -// 724, //45; 西班牙  
123 -// 752, //46; 瑞典  
124 -// 756, //47; 瑞士  
125 -// 792, //48; 土耳其欧洲部分  
126 -// 804, //49; 乌克兰  
127 -// 826, //50; 英国  
128 -// };  
129 -  
130 -// /*  
131 -// uint16_t AF[] = { //非洲  
132 -  
133 -// };  
134 -  
135 -// uint16_t OC[] = { //大洋洲  
136 -  
137 -// };  
138 -// */  
139 -// #endif  
140 -// /*____________________________________________________ Country code array module ____________________________________________________*/  
141 -  
142 -  
143 -  
144 -// //变量定义  
145 -// T_country_code_param country_code_Param[] = {  
146 -// {.name = "CN", .name_address = CN,},  
147 -// {.name = "NA", .name_address = NA,},  
148 -// {.name = "EU", .name_address = EU,},//新增区域时,在此处新增对应的区域名字符串,以及对应的国家码数组  
149 -// };  
150 -  
151 -  
152 -  
153 -// /*____________________________________________________ Country Code func module ____________________________________________________*/  
154 -// #if 1 //国家码比对函数模块  
155 -// /**  
156 -// @brief: 传入国家码结构体,判断是否与传入的国家码一致(返回0),不一致返回1  
157 -// @Param: code 国家码参数结构体  
158 -// @Param: CountryCode 国家码  
159 -// @return:no  
160 -// */  
161 -// static uint8_t IF_Country_Code(T_country_code_param * code , uint16_t CountryCode)  
162 -// {  
163 -// uint8_t i = 0;  
164 -// uint8_t hundred = 0;//存储传进参数的百位的值  
165 -// uint8_t hundred_address = 0;//存储传进参数的百位处在第X个元素的位置  
166 -// uint8_t number = 0;  
167 -  
168 -// hundred = CountryCode / 100;//取传进参数的百位在数组中的位置  
169 -// if(hundred <= 2)  
170 -// {  
171 -// hundred = 0;//存放国家码百位为0~2的数据所在位置的数组的第X个元素  
172 -// }else if(hundred >=3 && hundred <= 5)  
173 -// {  
174 -// hundred = 1;  
175 -// }else if(hundred >=6 && hundred <= 8)  
176 -// {  
177 -// hundred = 2;  
178 -// }  
179 -// hundred_address = code->name_address[hundred];//取国家码百位在X~X+2的数据的位置  
180 -// number = code->name_address[hundred_address];//取国家码百位在X~X+2的数据的数量  
181 -  
182 -// for(i = 0;i<number;i++)  
183 -// {  
184 -// if(CountryCode == code->name_address[hundred_address+(1+i)])//判断这些数据是否与传进参数一致  
185 -// {  
186 -// return 0;//对比成功,数组中存在该元素  
187 -// }else  
188 -// {  
189 -// }  
190 -// }  
191 -// return 1;//对比失败,数组中未存在该元素  
192 -// }  
193 -// /**  
194 -// @brief: 输入的国家码与序列号中的地区码相同即返回0;否返回1  
195 -// @Param: CountryCode 国家码  
196 -// @Param: xarea 序列号中的国家码(地区位)  
197 -// @return:0/1 成功/失败  
198 -// */  
199 -// #if 1 //方案二  
200 -// uint8_t Country_Code_handle(uint16_t CountryCode , char * xarea)  
201 -// {  
202 -// if(strcmp(xarea,country_code_Param[0].name) == 0)//中国地区  
203 -// {  
204 -// if(CountryCode == country_code_Param[0].name_address[0]  
205 -// || CountryCode == country_code_Param[0].name_address[1]  
206 -// || CountryCode == country_code_Param[0].name_address[2]  
207 -// || CountryCode == country_code_Param[0].name_address[3])//if(CountryCode == 156 || CountryCode == 344 || CountryCode == 446 || CountryCode == 158)  
208 -// {  
209 -// return 0;//返回成功  
210 -// }else  
211 -// {  
212 -// return 1;//返回不成功  
213 -// }  
214 -// }  
215 -// else if(strcmp(xarea,country_code_Param[1].name) == 0)//美洲地区  
216 -// {  
217 -// return IF_Country_Code(&country_code_Param[1],CountryCode);  
218 -// }  
219 -// else if(strcmp(xarea,country_code_Param[2].name) == 0)//欧洲地区  
220 -// {  
221 -// return IF_Country_Code(&country_code_Param[2],CountryCode);  
222 -// }  
223 -// else  
224 -// {  
225 -  
226 -// }  
227 -  
228 -// return 1;//返回不成功  
229 -// }  
230 -// #else //方案一  
231 -// uint8_t Country_Code_handle(uint16_t CountryCode)  
232 -// {  
233 -// uint8_t SN_Code[SN_LEN+2] = {0}; //暂时存储序列号  
234 -// char area[3] = {0};//保存序列号中的地区码  
235 -  
236 -// Read_SN_FromFlash(SN_Code,SN_LEN); //获取序列号  
237 -// SN_Code[16] = '\0';  
238 -// area[0] = SN_Code[4];  
239 -// area[1] = SN_Code[5];  
240 -// area[2] = '\0';  
241 -  
242 -// if(strcmp(area,country_code_Param[0].name) == 0)//  
243 -// {  
244 -// if(CountryCode == country_code_Param[0].name_address[0]  
245 -// || CountryCode == country_code_Param[0].name_address[0]  
246 -// || CountryCode == country_code_Param[0].name_address[0]  
247 -// || CountryCode == country_code_Param[0].name_address[0])//if(CountryCode == 156 || CountryCode == 344 || CountryCode == 446 || CountryCode == 158)  
248 -// {  
249 -// return 0;//返回成功  
250 -// }else  
251 -// {  
252 -// return 1;//返回不成功  
253 -// }  
254 -// }  
255 -// else if(strcmp(area,country_code_Param[1].name) == 0)  
256 -// {  
257 -// return IF_Country_Code(&country_code_Param[1],CountryCode);  
258 -// }  
259 -// else if(strcmp(area,country_code_Param[2].name) == 0)  
260 -// {  
261 -// return IF_Country_Code(&country_code_Param[2],CountryCode);  
262 -// }  
263 -// else  
264 -// {  
265 -  
266 -// }  
267 -  
268 -// return 1;//返回不成功  
269 -// }  
270 -// #endif  
271 -// #endif  
272 -// /*____________________________________________________ Country Code func module ____________________________________________________*/  
273 -  
274 -  
275 -  
276 -// /*____________________________________________________ "Country_Code_handle()" External call module ____________________________________________________*/  
277 -// #if 0 //国家码函数调用例子  
278 -// static void Country_Code_init(void)//方案二  
279 -// {  
280 -// uint8_t SN_Code[SN_LEN+2] = {0}; //暂时存储序列号  
281 -// char area[3] = {0};//保存序列号中的地区码  
282 -// uint8_t activate_flag = 0;//激活标志位,该处位局部变量真正工程中需变为全局变量或其它操作  
283 -// uint8_t Country_Code = 156;//假如从飞机获取的国家码是156,真正工程中需变为全局变量或其它操作  
284 -  
285 -// Read_SN_FromFlash(SN_Code,SN_LEN); //获取序列号,需更改为工程的对应的获取序列号的函数  
286 -// SN_Code[16] = '\0';  
287 -// area[0] = SN_Code[4];  
288 -// area[1] = SN_Code[5];  
289 -// area[2] = '\0';  
290 -  
291 -// activate_flag = Get_Active_State(); //获取激活状态,需更改为工程的对应的获取激活状态的函数  
292 -  
293 -// if(activate_flag == 0x01)//激活后才需要判断国家码与序列号的码是否一致,app_activate_flag == 0x01  
294 -// {  
295 -// USER_LOG_INFO("SN = %s,activate = %x,CountryCode = %d,area = %s\r\n",SN_Code,activate_flag,Country_Code,area);//输出序列号,国家码,  
296 -// activate_flag = Country_Code_handle(Country_Code,area);//获取国家码比对结果。  
297 -// USER_LOG_INFO("app_country_flag = %d\r\n",activate_flag);  
298 -// if(activate_flag == 0)//国家码与序列号地区码比对一致  
299 -// {  
300 -  
301 -// }else  
302 -// {  
303 -// activate_flag = 0;//非法地区,禁止使用  
304 -// }  
305 -// }  
306 -// }  
307 -// #endif  
308 -// /*____________________________________________________ "Country_Code_handle()" External call module ____________________________________________________*/  
309 -  
310 -  
311 -  
312 -// /*____________________________________________________ Country code test module ____________________________________________________*/  
313 -// #if COUNTRY_CODE_TEST //测试国家码是否能对应查找以及对比成功  
314 -// /**  
315 -// @brief: 传入国家码结构体,判断是否与传入的国家码一致(返回0),不一致返回1  
316 -// @Param: code 国家码参数结构体  
317 -// @Param: CountryCode 国家码  
318 -// @return:no  
319 -// */  
320 -// uint8_t TEST_IF_Country_Code(T_country_code_param * code , uint16_t CountryCode)  
321 -// {  
322 -// uint8_t i = 0;  
323 -// uint8_t hundred = 0;//存储传进参数的百位的值  
324 -// uint8_t hundred_address = 0;//存储传进参数的百位处在第X个元素的位置  
325 -// uint8_t number = 0;  
326 -// uint8_t state = 1;//返回检查状态  
327 -  
328 -// hundred = CountryCode / 100;//取传进参数的百位在数组中的位置  
329 -// if(hundred <= 2)  
330 -// {  
331 -// hundred = 0;//存放国家码百位为0~2的数据所在位置的数组的第X个元素  
332 -// }else if(hundred >=3 && hundred <= 5)  
333 -// {  
334 -// hundred = 1;  
335 -// }else if(hundred >=6 && hundred <= 8)  
336 -// {  
337 -// hundred = 2;  
338 -// }  
339 -// hundred_address = code->name_address[hundred];//取国家码百位在X~X+2的数据的位置  
340 -// number = code->name_address[hundred_address];//取国家码百位在X~X+2的数据的数量  
341 -  
342 -// for(i = 0;i<number;i++)  
343 -// {  
344 -// if(CountryCode == code->name_address[hundred_address+(1+i)])//判断这些数据是否与传进参数一致  
345 -// {  
346 -// state = 0;  
347 -// }else  
348 -// {  
349 -// USER_LOG_INFO("CountryCode = %d\n",code->name_address[hundred_address+(1+i)]); //输出  
350 -// vTaskDelay(pdMS_TO_TICKS(2));  
351 -// }  
352 -// }  
353 -// return state;//对比成功,数组中存在该元素  
354 -// }  
355 -// /**  
356 -// @brief: 输入的国家码与序列号中的地区码相同即返回0;否返回1  
357 -// @Param: CountryCode 国家码  
358 -// @Param: xarea 序列号中的国家码(地区位)  
359 -// @return:0/1 成功/失败  
360 -// */  
361 -// uint8_t TEST_Country_Code_handle(uint16_t CountryCode , char * xarea)  
362 -// {  
363 -// USER_LOG_INFO("CountryCode = %d,%s\n",CountryCode,xarea); //输出  
364 -  
365 -// if(strcmp(xarea,country_code_Param[0].name) == 0)//  
366 -// {  
367 -// if(CountryCode == 156 || CountryCode == 344 || CountryCode == 446 || CountryCode == 158)  
368 -// {  
369 -// return 0;//返回成功  
370 -// }else  
371 -// {  
372 -// return 1;//返回不成功  
373 -// }  
374 -// }  
375 -// else if(strcmp(xarea,country_code_Param[1].name) == 0)  
376 -// {  
377 -// return TEST_IF_Country_Code(&country_code_Param[1],CountryCode);  
378 -// }  
379 -// else if(strcmp(xarea,country_code_Param[2].name) == 0)  
380 -// {  
381 -// return TEST_IF_Country_Code(&country_code_Param[2],CountryCode);  
382 -// }  
383 -// else  
384 -// {  
385 -  
386 -// }  
387 -  
388 -// return 1;//返回不成功  
389 -// }  
390 -// /**  
391 -// @brief: 测试国家码  
392 -// @Param: no  
393 -// @return:no  
394 -// */  
395 -// void TEST_guojiama(void)  
396 -// {  
397 -// char area[5] = {0};//保存序列号中的地区码  
398 -// uint8_t state = 2;  
399 -  
400 -// area[0] = 'C';  
401 -// area[1] = 'N';  
402 -// area[2] = '\0';  
403 -  
404 -// state = TEST_Country_Code_handle(156,area);  
405 -// USER_LOG_INFO("%d\r\n",state);//国家码比对结果返回  
406 -// vTaskDelay(pdMS_TO_TICKS(500));  
407 -// area[0] = 'N';  
408 -// area[1] = 'A';  
409 -// area[2] = '\0';  
410 -  
411 -// state = TEST_Country_Code_handle(8,area);  
412 -// USER_LOG_INFO("%d\r\n",state);  
413 -// vTaskDelay(pdMS_TO_TICKS(500));  
414 -// area[0] = 'E';  
415 -// area[1] = 'U';  
416 -// area[2] = '\0';  
417 -  
418 -// state = TEST_Country_Code_handle(800,area);  
419 -// USER_LOG_INFO("%d\r\n",state);  
420 -// vTaskDelay(pdMS_TO_TICKS(500));  
421 -// }  
422 -// #endif  
423 -// /*____________________________________________________ Country code test module ____________________________________________________*/  
424 -  
425 -  
426 -  
427 -  
  1 +// /**
  2 +// 方案一:调用该文件中的对外函数输入参数国家码,可能需要更改获取序列号中地区码的部分代码,等待返回值即可,返回值:0 表明国家码与地区码一致。
  3 +// 方案二:调用该文件中的对外函数输入参数国家码、序列号中的地区码,等待返回值即可。
  4 +// */
  5 +// #include "FreeRTOS.h"
  6 +// #include "task.h"
  7 +// #include "Country_Code.h"
  8 +// #include "myflash.h"
  9 +// #include "dji_logger.h"
  10 +
  11 +
  12 +#include "JZsdkLib.h"
  13 +
  14 +#include "DeviceInfo/SerialNumberProc/FirewareOriginMAT/FirewareOriginMAT.h"
  15 +
  16 +
  17 +/*____________________________________________________ Country code array module ____________________________________________________*/
  18 +
  19 +//中国国家码
  20 +unsigned int CN[] =
  21 +{
  22 + 156, //中国大陆
  23 + 344, //香港
  24 + 446, //澳门
  25 + 158, //台湾
  26 +};
  27 +
  28 +
  29 +//美洲美洲
  30 +unsigned int NA[] =
  31 +{
  32 +
  33 + 28, //4; 安提瓜和巴布达
  34 + 44, //5; 巴哈马
  35 + 52, //6; 巴巴多斯
  36 + 60, //7; 百慕大(英国)
  37 + 84, //8; 伯利兹
  38 + 92, //9; 英属维尔京群岛
  39 + 124, //10; 加拿大
  40 + 136, //11; 开曼群岛(英国)
  41 + 188, //12; 哥斯达黎加
  42 + 192, //13; 古巴
  43 + 212, //14; 多米尼克
  44 + 214, //15; 多米尼加
  45 + 222, //16; 萨尔瓦多
  46 +
  47 +
  48 + 304, //18; 格陵兰(丹麦)
  49 + 308, //19; 格林纳达
  50 + 312, //20; 瓜德罗普(法国)
  51 + 320, //21; 危地马拉
  52 + 332, //22; 海地
  53 + 340, //23; 洪都拉斯
  54 + 388, //24; 牙买加
  55 + 474, //25; 马提尼克(法国)
  56 + 484, //26; 墨西哥
  57 + 500, //27; 蒙特塞拉特(英国)
  58 + 530, //28; 荷属安的列斯
  59 + 533, //29; 阿鲁巴(荷兰)
  60 + 558, //30; 尼加拉瓜
  61 + 591, //31; 巴拿马
  62 +
  63 + 630, //33; 波多黎各(美国)
  64 + 659, //34; 圣基茨和尼维斯
  65 + 660, //35; 安圭拉(英国)
  66 + 662, //36; 圣卢西亚
  67 + 666, //37; 圣皮埃尔和密克隆(法国)
  68 + 670, //38; 圣文森特和格林纳丁斯
  69 + 780, //39; 特立尼达和多巴哥
  70 + 796, //40; 特克斯和凯科斯群岛(英国)
  71 + 840, //41; 美国
  72 + 850, //42; 美属维尔京群岛
  73 +};
  74 +
  75 +//欧洲国家码
  76 +unsigned int EU[] =
  77 +{
  78 + 8, //4; 阿尔巴尼亚
  79 + 20, //5; 安道尔
  80 + 40, //6; 奥地利
  81 + 56, //7; 比利时
  82 + 100, //8; 保加利亚
  83 + 112, //9; 白俄罗斯
  84 + 191, //10; 克罗地亚
  85 + 203, //11; 捷克
  86 + 208, //12; 丹麦
  87 + 233, //13; 爱沙尼亚
  88 + 234, //14; 法罗群岛(丹麦)
  89 + 246, //15; 芬兰
  90 + 250, //16; 法国
  91 + 276, //17; 德国
  92 + 292, //18; 直布罗陀
  93 +
  94 + 300, //20; 希腊
  95 + 336, //21; 梵蒂冈
  96 + 348, //22; 匈牙利
  97 + 352, //23; 冰岛
  98 + 372, //24; 爱尔兰
  99 + 380, //25; 意大利
  100 + 428, //26; 拉脱维亚
  101 + 438, //27; 列支敦士登
  102 + 440, //28; 立陶宛
  103 + 442, //29; 卢森堡
  104 + 470, //30; 马耳他
  105 + 492, //31; 摩纳哥
  106 + 498, //32; 摩尔多瓦
  107 + 499, //33; 黑山
  108 + 528, //34; 荷兰
  109 + 578, //35; 挪威
  110 +
  111 + 616, //37; 波兰
  112 + 620, //38; 葡萄牙
  113 + 642, //39; 罗马尼亚
  114 + 643, //40; 俄罗斯联邦
  115 + 674, //41; 圣马力诺
  116 + 688, //42; 塞尔维亚
  117 + 703, //43; 斯洛伐克
  118 + 705, //44; 斯洛文尼亚
  119 + 724, //45; 西班牙
  120 + 752, //46; 瑞典
  121 + 756, //47; 瑞士
  122 + 792, //48; 土耳其欧洲部分
  123 + 804, //49; 乌克兰
  124 + 826, //50; 英国
  125 +};
  126 +
  127 +//非洲地区
  128 +unsigned int AF[] =
  129 +{
  130 +
  131 +};
  132 +
  133 +//大洋洲地区
  134 +unsigned int OC[] =
  135 +{
  136 +
  137 +};
  138 +
  139 +/*____________________________________________________ Country code array module ____________________________________________________*/
  140 +
  141 +
  142 +
  143 +// 判断国家代码是否有效
  144 +T_JZsdkReturnCode JZsdk_IsCountryCodeValid(unsigned int CountryCode)
  145 +{
  146 + //1、获取设备序列号的区域码
  147 + int OriginRegionNum = FOMAT_Get_FirewareOriginRegion();
  148 +
  149 + //2、判断国家代码是否存在于目标结构体
  150 + if(OriginRegionNum == ORIGIN_CN)
  151 + {
  152 + //中国地区
  153 + for(int i = 0; i < sizeof(CN)/sizeof(CN[0]); i++)
  154 + {
  155 + if(CN[i] == CountryCode)
  156 + {
  157 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  158 + }
  159 + }
  160 + }
  161 +
  162 + else if(OriginRegionNum == ORIGIN_NA)
  163 + {
  164 + //美洲地区
  165 + for(int i = 0; i < sizeof(NA)/sizeof(NA[0]); i++)
  166 + {
  167 + if(NA[i] == CountryCode)
  168 + {
  169 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  170 + }
  171 + }
  172 + }
  173 +
  174 + else if(OriginRegionNum == ORIGIN_EU)
  175 + {
  176 + //欧洲地区
  177 + for(int i = 0; i < sizeof(EU)/sizeof(EU[0]); i++)
  178 + {
  179 + if(EU[i] == CountryCode)
  180 + {
  181 + return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
  182 + }
  183 + }
  184 + }
  185 +
  186 + return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
  187 +}
  188 +
  189 +
  190 +// /*____________________________________________________ Country Code func module ____________________________________________________*/
  191 +// #if 1 //国家码比对函数模块
  192 +// /**
  193 +// @brief: 传入国家码结构体,判断是否与传入的国家码一致(返回0),不一致返回1
  194 +// @Param: code 国家码参数结构体
  195 +// @Param: CountryCode 国家码
  196 +// @return:no
  197 +// */
  198 +// static uint8_t IF_Country_Code(T_country_code_param * code , uint16_t CountryCode)
  199 +// {
  200 +// uint8_t i = 0;
  201 +// uint8_t hundred = 0;//存储传进参数的百位的值
  202 +// uint8_t hundred_address = 0;//存储传进参数的百位处在第X个元素的位置
  203 +// uint8_t number = 0;
  204 +
  205 +// hundred = CountryCode / 100;//取传进参数的百位在数组中的位置
  206 +// if(hundred <= 2)
  207 +// {
  208 +// hundred = 0;//存放国家码百位为0~2的数据所在位置的数组的第X个元素
  209 +// }else if(hundred >=3 && hundred <= 5)
  210 +// {
  211 +// hundred = 1;
  212 +// }else if(hundred >=6 && hundred <= 8)
  213 +// {
  214 +// hundred = 2;
  215 +// }
  216 +// hundred_address = code->name_address[hundred];//取国家码百位在X~X+2的数据的位置
  217 +// number = code->name_address[hundred_address];//取国家码百位在X~X+2的数据的数量
  218 +
  219 +// for(i = 0;i<number;i++)
  220 +// {
  221 +// if(CountryCode == code->name_address[hundred_address+(1+i)])//判断这些数据是否与传进参数一致
  222 +// {
  223 +// return 0;//对比成功,数组中存在该元素
  224 +// }else
  225 +// {
  226 +// }
  227 +// }
  228 +// return 1;//对比失败,数组中未存在该元素
  229 +// }
  230 +// /**
  231 +// @brief: 输入的国家码与序列号中的地区码相同即返回0;否返回1
  232 +// @Param: CountryCode 国家码
  233 +// @Param: xarea 序列号中的国家码(地区位)
  234 +// @return:0/1 成功/失败
  235 +// */
  236 +// #if 1 //方案二
  237 +// uint8_t Country_Code_handle(uint16_t CountryCode , char * xarea)
  238 +// {
  239 +// if(strcmp(xarea,country_code_Param[0].name) == 0)//中国地区
  240 +// {
  241 +// if(CountryCode == country_code_Param[0].name_address[0]
  242 +// || CountryCode == country_code_Param[0].name_address[1]
  243 +// || CountryCode == country_code_Param[0].name_address[2]
  244 +// || CountryCode == country_code_Param[0].name_address[3])//if(CountryCode == 156 || CountryCode == 344 || CountryCode == 446 || CountryCode == 158)
  245 +// {
  246 +// return 0;//返回成功
  247 +// }else
  248 +// {
  249 +// return 1;//返回不成功
  250 +// }
  251 +// }
  252 +// else if(strcmp(xarea,country_code_Param[1].name) == 0)//美洲地区
  253 +// {
  254 +// return IF_Country_Code(&country_code_Param[1],CountryCode);
  255 +// }
  256 +// else if(strcmp(xarea,country_code_Param[2].name) == 0)//欧洲地区
  257 +// {
  258 +// return IF_Country_Code(&country_code_Param[2],CountryCode);
  259 +// }
  260 +// else
  261 +// {
  262 +
  263 +// }
  264 +
  265 +// return 1;//返回不成功
  266 +// }
  267 +// #else //方案一
  268 +// uint8_t Country_Code_handle(uint16_t CountryCode)
  269 +// {
  270 +// uint8_t SN_Code[SN_LEN+2] = {0}; //暂时存储序列号
  271 +// char area[3] = {0};//保存序列号中的地区码
  272 +
  273 +// Read_SN_FromFlash(SN_Code,SN_LEN); //获取序列号
  274 +// SN_Code[16] = '\0';
  275 +// area[0] = SN_Code[4];
  276 +// area[1] = SN_Code[5];
  277 +// area[2] = '\0';
  278 +
  279 +// if(strcmp(area,country_code_Param[0].name) == 0)//
  280 +// {
  281 +// if(CountryCode == country_code_Param[0].name_address[0]
  282 +// || CountryCode == country_code_Param[0].name_address[0]
  283 +// || CountryCode == country_code_Param[0].name_address[0]
  284 +// || CountryCode == country_code_Param[0].name_address[0])//if(CountryCode == 156 || CountryCode == 344 || CountryCode == 446 || CountryCode == 158)
  285 +// {
  286 +// return 0;//返回成功
  287 +// }else
  288 +// {
  289 +// return 1;//返回不成功
  290 +// }
  291 +// }
  292 +// else if(strcmp(area,country_code_Param[1].name) == 0)
  293 +// {
  294 +// return IF_Country_Code(&country_code_Param[1],CountryCode);
  295 +// }
  296 +// else if(strcmp(area,country_code_Param[2].name) == 0)
  297 +// {
  298 +// return IF_Country_Code(&country_code_Param[2],CountryCode);
  299 +// }
  300 +// else
  301 +// {
  302 +
  303 +// }
  304 +
  305 +// return 1;//返回不成功
  306 +// }
  307 +// #endif
  308 +// #endif
  309 +// /*____________________________________________________ Country Code func module ____________________________________________________*/
  310 +
  311 +
  312 +
  313 +// /*____________________________________________________ "Country_Code_handle()" External call module ____________________________________________________*/
  314 +// #if 0 //国家码函数调用例子
  315 +// static void Country_Code_init(void)//方案二
  316 +// {
  317 +// uint8_t SN_Code[SN_LEN+2] = {0}; //暂时存储序列号
  318 +// char area[3] = {0};//保存序列号中的地区码
  319 +// uint8_t activate_flag = 0;//激活标志位,该处位局部变量真正工程中需变为全局变量或其它操作
  320 +// uint8_t Country_Code = 156;//假如从飞机获取的国家码是156,真正工程中需变为全局变量或其它操作
  321 +
  322 +// Read_SN_FromFlash(SN_Code,SN_LEN); //获取序列号,需更改为工程的对应的获取序列号的函数
  323 +// SN_Code[16] = '\0';
  324 +// area[0] = SN_Code[4];
  325 +// area[1] = SN_Code[5];
  326 +// area[2] = '\0';
  327 +
  328 +// activate_flag = Get_Active_State(); //获取激活状态,需更改为工程的对应的获取激活状态的函数
  329 +
  330 +// if(activate_flag == 0x01)//激活后才需要判断国家码与序列号的码是否一致,app_activate_flag == 0x01
  331 +// {
  332 +// USER_LOG_INFO("SN = %s,activate = %x,CountryCode = %d,area = %s\r\n",SN_Code,activate_flag,Country_Code,area);//输出序列号,国家码,
  333 +// activate_flag = Country_Code_handle(Country_Code,area);//获取国家码比对结果。
  334 +// USER_LOG_INFO("app_country_flag = %d\r\n",activate_flag);
  335 +// if(activate_flag == 0)//国家码与序列号地区码比对一致
  336 +// {
  337 +
  338 +// }else
  339 +// {
  340 +// activate_flag = 0;//非法地区,禁止使用
  341 +// }
  342 +// }
  343 +// }
  344 +// #endif
  345 +// /*____________________________________________________ "Country_Code_handle()" External call module ____________________________________________________*/
  346 +
  347 +
  348 +
  349 +// /*____________________________________________________ Country code test module ____________________________________________________*/
  350 +// #if COUNTRY_CODE_TEST //测试国家码是否能对应查找以及对比成功
  351 +// /**
  352 +// @brief: 传入国家码结构体,判断是否与传入的国家码一致(返回0),不一致返回1
  353 +// @Param: code 国家码参数结构体
  354 +// @Param: CountryCode 国家码
  355 +// @return:no
  356 +// */
  357 +// uint8_t TEST_IF_Country_Code(T_country_code_param * code , uint16_t CountryCode)
  358 +// {
  359 +// uint8_t i = 0;
  360 +// uint8_t hundred = 0;//存储传进参数的百位的值
  361 +// uint8_t hundred_address = 0;//存储传进参数的百位处在第X个元素的位置
  362 +// uint8_t number = 0;
  363 +// uint8_t state = 1;//返回检查状态
  364 +
  365 +// hundred = CountryCode / 100;//取传进参数的百位在数组中的位置
  366 +// if(hundred <= 2)
  367 +// {
  368 +// hundred = 0;//存放国家码百位为0~2的数据所在位置的数组的第X个元素
  369 +// }else if(hundred >=3 && hundred <= 5)
  370 +// {
  371 +// hundred = 1;
  372 +// }else if(hundred >=6 && hundred <= 8)
  373 +// {
  374 +// hundred = 2;
  375 +// }
  376 +// hundred_address = code->name_address[hundred];//取国家码百位在X~X+2的数据的位置
  377 +// number = code->name_address[hundred_address];//取国家码百位在X~X+2的数据的数量
  378 +
  379 +// for(i = 0;i<number;i++)
  380 +// {
  381 +// if(CountryCode == code->name_address[hundred_address+(1+i)])//判断这些数据是否与传进参数一致
  382 +// {
  383 +// state = 0;
  384 +// }else
  385 +// {
  386 +// USER_LOG_INFO("CountryCode = %d\n",code->name_address[hundred_address+(1+i)]); //输出
  387 +// vTaskDelay(pdMS_TO_TICKS(2));
  388 +// }
  389 +// }
  390 +// return state;//对比成功,数组中存在该元素
  391 +// }
  392 +// /**
  393 +// @brief: 输入的国家码与序列号中的地区码相同即返回0;否返回1
  394 +// @Param: CountryCode 国家码
  395 +// @Param: xarea 序列号中的国家码(地区位)
  396 +// @return:0/1 成功/失败
  397 +// */
  398 +// uint8_t TEST_Country_Code_handle(uint16_t CountryCode , char * xarea)
  399 +// {
  400 +// USER_LOG_INFO("CountryCode = %d,%s\n",CountryCode,xarea); //输出
  401 +
  402 +// if(strcmp(xarea,country_code_Param[0].name) == 0)//
  403 +// {
  404 +// if(CountryCode == 156 || CountryCode == 344 || CountryCode == 446 || CountryCode == 158)
  405 +// {
  406 +// return 0;//返回成功
  407 +// }else
  408 +// {
  409 +// return 1;//返回不成功
  410 +// }
  411 +// }
  412 +// else if(strcmp(xarea,country_code_Param[1].name) == 0)
  413 +// {
  414 +// return TEST_IF_Country_Code(&country_code_Param[1],CountryCode);
  415 +// }
  416 +// else if(strcmp(xarea,country_code_Param[2].name) == 0)
  417 +// {
  418 +// return TEST_IF_Country_Code(&country_code_Param[2],CountryCode);
  419 +// }
  420 +// else
  421 +// {
  422 +
  423 +// }
  424 +
  425 +// return 1;//返回不成功
  426 +// }
  427 +// /**
  428 +// @brief: 测试国家码
  429 +// @Param: no
  430 +// @return:no
  431 +// */
  432 +// void TEST_guojiama(void)
  433 +// {
  434 +// char area[5] = {0};//保存序列号中的地区码
  435 +// uint8_t state = 2;
  436 +
  437 +// area[0] = 'C';
  438 +// area[1] = 'N';
  439 +// area[2] = '\0';
  440 +
  441 +// state = TEST_Country_Code_handle(156,area);
  442 +// USER_LOG_INFO("%d\r\n",state);//国家码比对结果返回
  443 +// vTaskDelay(pdMS_TO_TICKS(500));
  444 +// area[0] = 'N';
  445 +// area[1] = 'A';
  446 +// area[2] = '\0';
  447 +
  448 +// state = TEST_Country_Code_handle(8,area);
  449 +// USER_LOG_INFO("%d\r\n",state);
  450 +// vTaskDelay(pdMS_TO_TICKS(500));
  451 +// area[0] = 'E';
  452 +// area[1] = 'U';
  453 +// area[2] = '\0';
  454 +
  455 +// state = TEST_Country_Code_handle(800,area);
  456 +// USER_LOG_INFO("%d\r\n",state);
  457 +// vTaskDelay(pdMS_TO_TICKS(500));
  458 +// }
  459 +// #endif
  460 +// /*____________________________________________________ Country code test module ____________________________________________________*/
  461 +
  462 +
  463 +
  464 +
@@ -27,9 +27,10 @@ T_JZsdkReturnCode FOMAT_Get_FirewareOriginRegion(); @@ -27,9 +27,10 @@ T_JZsdkReturnCode FOMAT_Get_FirewareOriginRegion();
27 typedef enum OriginRegionPlace 27 typedef enum OriginRegionPlace
28 { 28 {
29 ORIGIN_DEFAULT = 0x0000, 29 ORIGIN_DEFAULT = 0x0000,
30 - ORIGIN_CN = 0x0001, //中区码  
31 - ORIGIN_EN = 0x0002, //英区码  
32 - ORIGIN_NA = 0x0003, //南美码 30 + ORIGIN_CN = 0x0001, //中区通用码
  31 + ORIGIN_EN = 0x0002, //英区通用码
  32 +
  33 + ORIGIN_NA = 0x0003, //美洲码
33 ORIGIN_EU = 0x0004, //欧洲码 34 ORIGIN_EU = 0x0004, //欧洲码
34 }OriginRegionPlace; 35 }OriginRegionPlace;
35 36