Files
2025-12-15 16:07:49 +08:00

214 lines
5.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*************************************************************
* SOON WRITING *
* Copyright (c) Robulink, 2014-2024 *
*************************************************************/
/* Create Date: 2014/08/20
*
* Modify Record:
* <date> <author> <version> <desc>
* -------------------------------------------------------------------
* 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
*
* <h2><center>&copy; COPYRIGHT 2014 Robulink </center></h2>
******************************************************************************
*/
#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