/************************************************************* * SOON WRITING * * Copyright (c) Robulink, 2014-2024 * *************************************************************/ /* Create Date: 2014/08/20 * * Modify Record: * * ------------------------------------------------------------------- * 2014/08/20 SOON 1.0 Create the file. */ /** ****************************************************************************** * @file gprs.h * @author SOON * @version V1.0.0 * @date 2014-08-20 * @brief GPRS 通信处理任务头文件 * ****************************************************************************** * @attention * *

© COPYRIGHT 2014 Robulink

****************************************************************************** */ #ifndef __GPRS_H__ #define __GPRS_H__ #include "Basedefine.h" #include "global.h" // 宏定义 //#define GPRS_DEBUG_SWITCH 0 #define CPU_INT08U u8 #define CPU_INT16U u16 #define CPU_INT32U u32 #define CPU_INT16S int #define NULLP NULL #define CPU_CHAR char #define OS_SEM int #define CPU_INT08S char #define CPU_TS int #define OS_ERR int #define OS_MSG_SIZE int /* 模块返回值类型*/ typedef enum gprs_cmd_ack_e { GPRS_CMD_ACK_OK = (0x00000000) , GPRS_CMD_ACK_ERR , GPRS_CMD_ACK_PBREADY , GPRS_CMD_ACK_MYCCID , GPRS_CMD_ACK_CPIN_READY , GPRS_CMD_ACK_CSQ , GPRS_CMD_ACK_CREG , GPRS_CMD_ACK_MYTYPE , GPRS_CMD_ACK_MYURCACT , GPRS_CMD_ACK_MYNETOPEN , GPRS_CMD_ACK_MYURCREAD , GPRS_CMD_ACK_MYNETREAD , GPRS_CMD_ACK_MYNETWRITE , GPRS_CMD_ACK_MYNETACK , GPRS_CMD_ACK_MYNETCLOSE , GPRS_CMD_ACK_MAX } gprs_cmd_ack_t ; // 数据结构 #define GPRS_CMD_LEN 256 #define GPRS_MAX_FLAG 255 #define MIN_MYURC_LEN 2 #define GPRS_CCID_LEN 20 #define GPRS_GMR_LEN 44 #define NET_STATE_DISCONNECT 0 #define NET_STATE_CONNECT 1 //#define MAX_GPRSSEND_TABLE 2 #define PORT_STATUS_IDLE 0 #define PORT_STATUS_CONNECTED 1 #define GPRS_AT_STATUS_IDLE 0 #define GPRS_AT_STATUS_SEND 1 #define GPRS_AT_STATUS_ACKERR 2 #define GPRS_AT_STATUS_ACKOK 3 //-----STATE2/STATE1/STATE0 #define MODULE_STATE_NOMODULE 7 //无模块 #define MODULE_STATE_AT 6 //有模块,响应AT #define MODULE_STATE_NOTAT 4 //有模块,不响应AT #define MODULE_STATE_RESERVE 0 //预留 typedef struct{ CPU_INT08U *cmd_snd; //发送命令 CPU_INT08U *good_rcv; //期待正确应答,可以为空 CPU_INT08U status; //00,没有发送,01,已发送,02,收到错误应答,03,收到正确应答 }gprs_at_cmd; typedef struct{ CPU_INT08U send_port; CPU_INT16U len; }gprs_msg_head; #define MAX_NET_LEN 1500 #define MAX_GPRSSEND_BUF 2000 #define TYPE_TCP_CLIENT 0 #define TYPE_TCP_SERVER 1 #define TYPE_UDP 2 /* typedef struct { //CPU_INT08U used; // 是否有效 CPU_INT16U len; // 长度信息 CPU_INT08U data[MAX_GPRSSEND_BUF]; // 数据缓存字节数 }gprs_send_entry; typedef struct{ gprs_send_entry databuff[MAX_GPRSSEND_TABLE]; // 支持表项 CPU_INT08U count; // 几包有效数据 CPU_INT08U head; // 数据缓存队列头指针位置 CPU_INT08U tail; // 数据缓存队列尾指针位置 OS_SEM* buf_sem; OS_SEM* nstored; }gprssend_ctrl; */ typedef struct{ CPU_INT08U databuff[MAX_GPRSSEND_BUF]; // 支持表项 CPU_INT16U count; // 几包有效数据 CPU_INT16U head; CPU_INT16U tail; CPU_INT16U used_len; // OS_SEM buf_sem; }gprssend_ctrl; /****************************函数对外声明******************************/ extern void task_gprs(void *pParam);// //extern INT16S gprs_handle_urc(void* pst_ctrl, CPU_INT16U used_len); //extern INT16S gprs_sendbuf_send(CPU_INT08U *pmsg, CPU_INT08U * data, CPU_INT16U len); /****************************变量对外声明******************************/ extern gprssend_ctrl gprs_send_ctrl; //extern OS_SEM gprs_count_sem; extern CPU_INT08U gprs_init_flag; extern CPU_INT08U gprs_connect_flag; extern CPU_INT08U gprs_socket_flag; //extern OS_SEM* gprs_read0_sem; //extern gprs_byte_count gbc; extern CPU_INT08U config_server_flag; extern CPU_INT08U server_ip_main[16]; extern CPU_INT08U server_ip_bak[16]; extern CPU_INT16U server_port_main; extern CPU_INT16U server_port_bak; //extern void gprs_online_off(); //extern void gprs_online_on(); //extern void gprs_remote_revled_on(); //extern void gprs_remote_revled_off(); //extern void gprs_remote_sendled_on(); //extern void gprs_remote_sendled_off(); CPU_INT16S gprs_sendbuf_send(CPU_INT08U *pmsg, CPU_INT08U * data, CPU_INT16U len); void gprs_get_CCID(CPU_INT08U* buf); bool gprs_connect_status(); void gprs_send_flag(); /* AFN04_F3结构体 */ typedef struct { CPU_INT08U ip1; CPU_INT08U ip2; CPU_INT08U ip3; CPU_INT08U ip4; CPU_INT16U port; }ip_and_port; typedef struct { ip_and_port primary; ip_and_port reserve; CPU_INT08U APN[16]; CPU_INT08U user[30]; CPU_INT08U password[30]; }afn04_F3_st; void gprs_send_flag(); void gprs_send_proc_direct(u8 * val,u16 len); void ipport_read(); void ipport_write(); void ipport_init(); #endif