214 lines
5.1 KiB
C
214 lines
5.1 KiB
C
/*************************************************************
|
||
* 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>© 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
|