forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-13 72def895431ad7a08e635b11f3da738e2b2c4618
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
#ifndef _GPRS_MODULE_API_H_
#define _GPRS_MODULE_API_H_
 
#include "define_all.h"
#include "main.h"
#include "string.h"
// #include "gprs.h"
#if GPRS_PROTOCOL_SELECT
#include "gprs_protocol_ideacreated_gasmeter_api.h"
#else
#include "gprs_protocol_api.h"
#endif
 
#define GPRS_RECV_LEN_MAX 1024 // GPRS½ÓÊÕ×î´ó³¤¶È
 
#define AT_CMEE "AT+CMEE=1" // ±¨¸æÒƶ¯ÖÕ¶Ë´íÎó
 
// 4GÄ£¿éÃüÁî
#define AT_ZIPOPEN "AT+ZIPOPEN=1,0"     // ½¨Á¢TCPÁ¬½Ó
#define AT_ZIPCLOSE "AT+ZIPCLOSE=1"     // ¹Ø±ÕTCPÁ¬½Ó
#define AT_ZIPSENDRAW "AT+ZIPSENDRAW=1" // ·¢ËÍÊý¾Ý
#define AT_ZIPCALL "AT+ZIPCALL=1"       // ½¨Á¢Á¬½Óǰ½øÐÐÊý¾Ý²¦ºÅ
#define AT_CCID "AT+ZGETICCID"          // ²éѯiccid
#define AT_GSN "AT+CGSN"                // ²éѯIMEI
#define AT_CSQ "AT+CSQ"                 // ²éѯÐźÅÇ¿¶È
#define AT_ZIPCFG_CX "AT+ZIPCFG?"       // ²éѯAPN
#define AT_ZIPCFG "AT+ZIPCFG="          // ÉèÖÃAPN
#define AT_ZRST "AT+ZRST"
 
#define AT_ZIPRECV "+ZIPRECV:" // ½ÓÊչؼü×Ö
 
#define CRLF "\r\n" // »Ø³µ»»ÐÐ
 
// NBÄ£¿éÃüÁî
#define AT_CMEE_NB AT_CMEE
#define AT_NCCID_NB "AT+NCCID"     // ²éѯiccid
#define AT_CGSN_NB "AT+CGSN=1"     // ²éѯimei
#define AT_CSQ_NB "AT+CSQ"         // ²éѯÐźÅÇ¿¶È
#define AT_SOPEN_NB "AT+SOPEN=0"   // ½¨Á¢TCPÁ¬½Ó
#define AT_DTMODE_NB "AT+DTMODE=2" // ·¢ËÍÊý¾ÝΪhex¸ñʽ
#define AT_SSEND_NB "AT+SSEND=0"   // ·¢ËÍÊý¾Ý
#define AT_ZRST_NB AT_ZRST         // É豸ÈíÖØÆô
 
#define __GPRS_MODULE_SEND_LENGTH__(__LEN__)                       \
  do                                                               \
  {                                                                \
    uint8_t temp_buffer[25];                                       \
    sprintf((char *)temp_buffer, "%s,%d", AT_ZIPSENDRAW, __LEN__); \
    Gprs_Send_ATcmd((char *)temp_buffer);                          \
  } while (0)
 
#define __GPRS_MODULE_SEND_LENGTH_NB__(__LEN__)                                 \
  do                                                                            \
  {                                                                             \
    uint8_t temp_buffer[25];                                                    \
    sprintf((char *)temp_buffer, "%s,%d,", AT_SSEND_NB, __LEN__);               \
    HAL_UART_Transmit(&huart3, temp_buffer, strlen((char *)temp_buffer), 1000); \
  } while (0)
 
typedef enum
{
  SEND_CMD_ZIPSENDRAW = 0U, // ·¢ËÍÃüÁî
#if NB_OR_4G_FLAG
  LOGIN_CMD_CMEE_NB, // µÇ¼ÃüÁî
  LOGIN_CMD_ICCID_NB,
  LOGIN_CMD_IMEI_NB,
  LOGIN_CMD_CSQ_NB,
  LOGIN_CMD_SOPEN_NB,
  LOGIN_CMD_DTMODE_NB,
  LOGIN_CMD_ZRST_NB
#else
  LOGIN_CMD_CMEE, // µÇ¼ÃüÁî
  LOGIN_CMD_ICCID,
  LOGIN_CMD_IMEI,
#if APN_SET_FLAG
  LOGIN_CMD_ZIPCFG,
#endif
  LOGIN_CMD_CSQ,
  LOGIN_CMD_ZIPCALL,
  LOGIN_CMD_ZIPOPEN,
  LOGIN_CMD_ZRST
#endif
 
} GPRS_AT_CMD;
 
typedef enum
{
  GMS_WORST = 3U,
  GMS_POOR = 10U,
  GMS_GENERAL = 15U,
  GMS_BEST = 25U,
} GPRS_MODULE_SIG;
 
#pragma pack(1)
typedef struct
{
  /*ÕâÑùÅÅÐòÊÇΪÁË×Ö½Ú¶ÔÆë£¬buffÊý¾ÝÒª4µÄ±¶ÊýÅäºÏ__attribute__ ((aligned (4)))ʹÓÃ*/
  uint8_t gprs_recv_buf[GPRS_RECV_LEN_MAX];
  uint16_t gprs_recv_length;
  FlagStatus gprs_recv_flag;
  __IO GPRS_AT_CMD gprs_module_state;
} GPRS_MODULE_PARA_T;
 
#pragma pack()
 
extern uint8_t gprs_resend_data_flag_g;
extern char sim_imei_g[15];
 
extern GPRS_MODULE_PARA_T gprs_module_para_g;
 
ErrorStatus_STM32 Gprs_Uart1_Rx_DMA_CH3_Check(void);
 
void Gprs_Send_ATcmd(char *pAT_cmd);
void Gprs_Module_SendLogin(GPRS_AT_CMD module_state, uint8_t used_ip[4], uint16_t used_port);
void Gprs_Module_RecvLogin(GPRS_MODULE_PARA_T *gprs_module_para_p, GPRS_PROTOCOL_NORMAL_DATA_HEAD_T *gprs_protocol_normal_data_head_p);
uint8_t Gprs_Module_RecvDataProcess(uint16_t *recv_valid_length, uint8_t **pAddr, GPRS_MODULE_PARA_T *gprs_module_para_p);
 
#endif