| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /** ******************************************************************************
- * @file AT_Module.h
- * @author 度云未来 DOIOT
- * @brief 针对公司模块AT指令的处理库
- ******************************************************************************
- * @attention
- * <h2><center>© Copyright (c) 2019 成都度云未来
- * All rights reserved.</center></h2>
- * 注意:本程序针对cubemx 生成的hal库程序快速开发
- * 环境:keil5.0
- * STM32Cube FW_F1 V1.8.0
- ********************************************************************************/
- //#define Ask_arry_size 2
- #define Ask_arry_len 20
- //[Ask_arry_size][Ask_arry_len]
- typedef struct{
-
- /*发送的指令 */
- char *SEND_CMD;
- /*应该响应的指令 */
- char *ASK[Ask_arry_len];
- /*需要校验的指令数 */
- uint32_t crc_size;
- /*指令等待超时时间*/
- uint32_t timeout;
- /*重发次数*/
- uint32_t REF_Count;
- /*失败时要跳转的指令位置*/
- uint32_t jump;
- /*支持注册一个发送前奏回调函数*/
- void (*BeforeCpltCallback)();
- /*支持注册一个发送且校验完成完成回调函数,参数默认为rx_buff*/
- void (*AfterCpltCallback)(char *rx_buff);
- /*支持注册一个错误处理校验函数,参数默认为rx_buff*/
- void (*ErrorCpltCallback)(char *rx_buff);
- /*完成后延时*/
- uint32_t delay_time;
-
- }AT_CMD; /*发送指令结构体*/
- /*开模组长度char数组的宏*/
- #if 0
- #define MODULE_RDA_MAXlen 128
- #define rxbuff(name) char(name)[MODULE_RDA_MAXlen]={0}
- #define clear(name) memset(name,0,MODULE_RDA_MAXlen)
- #else
- #define MODULE_RDA_MAXlen 160
- #define rxbuff(name) char(name)[MODULE_RDA_MAXlen]={0}
- #define clear(name) memset(name,0,MODULE_RDA_MAXlen)
- #endif
- /**@brief 开始启动AT任务*/
- uint8_t AT_TASK_START(AT_CMD task[],uint8_t Size);
- #define cmd_length 256 /*响应指令最大长度*/
- /**@brief 发送且阻塞读取校验*/
- uint8_t Module_SEND_CRC(char* send_cmd,char *ack_str,uint32_t overtime);
- /**@brief 发送且阻塞读取校验,支持多组参数*/
- uint8_t Module_SEND_A_CRC(char* send_cmd,char cmd_arry[][cmd_length],uint8_t arry_size,uint8_t crc_size);
- /**@brief 阻塞读取并校验*/
- uint8_t Module_Read_A_CRC(char cmd_arry[],uint32_t overtime);
- /**@brief 阻塞轮询,校验成功后返回*/
- uint8_t AT_CMD_Polling(char *send_cmd,char*ack,uint32_t Polling_delay,uint32_t overtime);
- /*-字符处理函数------【旧版】---------------------------------------------------------------------------------*/
- /**@brief 以字符包裹为标志提取子串*/
- uint8_t AT_GET_Data(char * buff,uint8_t * get_data,char*sign,uint8_t Number_of_groups);
- /**@brief 以子串包裹为标志提取子串*/
- uint8_t AT_GET_Data_2Param(char * buff,uint8_t get_data[],char*head,char*tail);
- /**@brief 把标志位的子串替换为要替换的子串*/
- uint8_t AT_Data_Replace(char buff[],char *str1, char *str2);
- /**@brief AT_GET_Data_Param_number :指定的标志位开始,提取后面的数据,直到遇到\r,\n,*/
- uint8_t AT_GET_Data_Param(char * buff,uint8_t get_data[],char*head);
- /**@brief AT_Extract_numbers:把导入的数组提纯为纯数字*/
- uint8_t AT_Extract_numbers(char buff[]);
- /**@brief AT_Extract_numbers :导入的数组提纯为纯字符和数字*/
- uint8_t AT_Extract_numbers_letters(char buff[]);
- /**@brief AT_Remove_spaces :去掉空字符,\r,\n,space */
- uint8_t AT_Remove_spaces(char buff[]);
- #define HAL_Delay(x)
- #define AT_INFO(fmt,arg...) //trace_otp_trace1(uart_msg_send, 4, fmt, ##arg);
- //printf("<<-EEPROM-INFO->> "fmt"\n",##arg)
- #define AT_ERROR(fmt,arg...) //printf("<<-EEPROM-ERROR->> "fmt"\n",##arg)
- #define AT_DEBUG(fmt,arg...) /*do{\
- if(EEPROM_DEBUG_ON)\
- printf("<<-EEPROM-DEBUG->> [%d]"fmt"\n",__LINE__, ##arg);\
- }while(0)*/
- /*调试打印 */
- #define debug_printf(fmt,arg...) printf("<<-at_debug_printf->> "fmt"\r\n",##arg)
- /*往模组打印*/
- #define module_printf(fmt,arg...) trace_otp_trace1(uart_msg_send, UART_ME3616, fmt, ##arg);
- int Module_Blocking_Read(char *buffer, u32 timeout);
|