364 lines
8.5 KiB
C
364 lines
8.5 KiB
C
|
/************************************************************************************
|
|||
|
* @Copyright (c) :(C)2017, Qindao ieslab Co., Ltd
|
|||
|
* @FileName :nb_driver_bc25.h
|
|||
|
* @Author :QDIES PLATFORM TEAM
|
|||
|
* @Version :V1.0
|
|||
|
* @Date :2020-8-13
|
|||
|
* @Description :
|
|||
|
************************************************************************************/
|
|||
|
|
|||
|
#ifndef __NB_DRIVER_ML302_H
|
|||
|
#define __NB_DRIVER_ML302_H
|
|||
|
|
|||
|
|
|||
|
#include "sys_config.h"
|
|||
|
#ifdef MODULE_ML307A_TCP
|
|||
|
#include "type.h"
|
|||
|
#include <string.h>
|
|||
|
|
|||
|
|
|||
|
/*-----------------<2D>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>-------------------*/
|
|||
|
#define RSTN_NB_PORT (GpioPortF)
|
|||
|
#define RSTN_NB_PIN (GpioPin0)
|
|||
|
|
|||
|
#define BAT_NB_PORT (GpioPortE)
|
|||
|
#define BAT_NB_PIN (GpioPin4)
|
|||
|
|
|||
|
#define PWR_NB_PORT (GpioPortA)//(GpioPortF)
|
|||
|
#define PWR_NB_PIN (GpioPin15)//(GpioPin1)
|
|||
|
|
|||
|
#define NB_PSM_WAKE_PORT (GpioPortA)
|
|||
|
#define NB_PSM_WAKE_PIN (GpioPin2)
|
|||
|
|
|||
|
#define RSTN_NB_LOW() Gpio_WriteOutputIO(RSTN_NB_PORT, RSTN_NB_PIN, GPIO_PIN_SET)
|
|||
|
#define RSTN_NB_HIG() Gpio_WriteOutputIO(RSTN_NB_PORT, RSTN_NB_PIN, GPIO_PIN_RESET)
|
|||
|
|
|||
|
#define BAT_NB_DISABLE() Gpio_WriteOutputIO(BAT_NB_PORT, BAT_NB_PIN, GPIO_PIN_RESET)
|
|||
|
#define BAT_NB_ENABLE() Gpio_WriteOutputIO(BAT_NB_PORT, BAT_NB_PIN, GPIO_PIN_SET)
|
|||
|
|
|||
|
#define PWR_NB_LOW() Gpio_WriteOutputIO(PWR_NB_PORT, PWR_NB_PIN, GPIO_PIN_SET)
|
|||
|
#define PWR_NB_HIG() Gpio_WriteOutputIO(PWR_NB_PORT, PWR_NB_PIN, GPIO_PIN_RESET)
|
|||
|
|
|||
|
#define NB_PSM_WAKE_LOW() Gpio_WriteOutputIO(NB_PSM_WAKE_PORT , NB_PSM_WAKE_PIN, GPIO_PIN_SET)
|
|||
|
#define NB_PSM_WAKE_HIG() Gpio_WriteOutputIO(NB_PSM_WAKE_PORT , NB_PSM_WAKE_PIN, GPIO_PIN_RESET)
|
|||
|
|
|||
|
#define MODULE_POWER_DELAY_TIME 1000 //<2F><>Դ<EFBFBD><D4B4>ͨ<EFBFBD>ȶ<EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
#define MODULE_POWERKEY_DELAY_TIME 3000 //<2F><><EFBFBD><EFBFBD>: <20><> PWR_KEY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2s~3.5s
|
|||
|
/*-----------------<2D>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ö<EFBFBD><C3B6><EFBFBD>-------------------*/
|
|||
|
//<2F><>ѯ<EFBFBD><D1AF>״̬<D7B4><CCAC>Ϣ
|
|||
|
#define TASK_BUSY 0 //BUSY״̬
|
|||
|
#define TASK_IDLE 1 //IDLE״̬
|
|||
|
|
|||
|
//<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define NBIOT_ING 0xA2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define NBIOT_ONLINE 0xA3 //NBIOT<4F><54><EFBFBD><EFBFBD>
|
|||
|
#define NBIOT_SUCCESS 0xA4 //<2F><><EFBFBD>ͳɹ<CDB3>
|
|||
|
#define NBIOT_ERROR 0xA5 //<2F><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
typedef enum{
|
|||
|
TASK_FAIL=0,
|
|||
|
TASK_SUCCESS,
|
|||
|
TASK_INIT,
|
|||
|
}TYP_TASK_RESULT;
|
|||
|
|
|||
|
//NBIOT<4F><54><EFBFBD><EFBFBD>״̬
|
|||
|
#define NB_ON_LINE 0x01 //<2F><><EFBFBD><EFBFBD>
|
|||
|
#define NB_OFF_LINE 0x00 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
#define CONNECT_ON_LINE 0x01 //<2F><><EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD>
|
|||
|
#define CONNECT_OFF_LINE 0x00 //<2F><><EFBFBD>ӶϿ<D3B6>
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
#define NET_CEREG_MIN_TIMES 5
|
|||
|
#define NET_CEREG_MAX_TIMES 30
|
|||
|
/************************ATָ<54><EFBFBD><EEBCAF><EFBFBD><EFBFBD>*************************************/
|
|||
|
//ATָ<54><D6B8>״̬<D7B4><CCAC>ִ<EFBFBD>н<EFBFBD><D0BD><EFBFBD>
|
|||
|
typedef enum{
|
|||
|
ResultOk=0,
|
|||
|
ResultBusy,
|
|||
|
ResultFail,
|
|||
|
}TYP_RESULT_CODE;
|
|||
|
|
|||
|
//ATָ<54><D6B8><EFBFBD>ȴ<EFBFBD>Ӧ<EFBFBD><D3A6>ʱ<EFBFBD><CAB1>
|
|||
|
typedef enum{
|
|||
|
WT_2S=2,
|
|||
|
WT_5S=5,
|
|||
|
WT_20S=20,
|
|||
|
WT_40S=40
|
|||
|
}TYP_AT_WAIT_TIME;
|
|||
|
|
|||
|
//ATָ<54><D6B8><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
|
|||
|
typedef enum{
|
|||
|
RETRY_0=0,
|
|||
|
RETRY_1,
|
|||
|
RETRY_2,
|
|||
|
RETRY_3,
|
|||
|
RETRY_4,
|
|||
|
RETRY_5,
|
|||
|
RETRY_10 = 10,
|
|||
|
RETRY_15 = 15,
|
|||
|
RETRY_30 = 30
|
|||
|
}TYP_AT_RETRY_COUNT;
|
|||
|
|
|||
|
//ģ<><C4A3>ATָ<54><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
typedef enum{
|
|||
|
AT_CODE_AT=0,
|
|||
|
AT_CODE_CGSN,
|
|||
|
AT_CODE_CPIN,
|
|||
|
AT_CODE_CIMI,
|
|||
|
AT_CODE_MCCID,
|
|||
|
AT_CODE_CFUN_CK,
|
|||
|
AT_CODE_CFUN0,
|
|||
|
AT_CODE_CFUN1,
|
|||
|
AT_CODE_CSQ,
|
|||
|
AT_CODE_MUESTATS,
|
|||
|
AT_CODE_SBAND,
|
|||
|
AT_CODE_CGDCONT,
|
|||
|
AT_CODE_MIPCALL_CK,
|
|||
|
AT_CODE_CEREG,
|
|||
|
AT_CODE_MIPCALL,
|
|||
|
AT_CODE_CCLK,
|
|||
|
AT_CODE_MIPCFG_ACK1,
|
|||
|
AT_CODE_MIPCFG_ACK0,
|
|||
|
AT_CODE_MIPCFG_TCP,
|
|||
|
AT_CODE_MIPOPEN,
|
|||
|
AT_CODE_TCPSEND,
|
|||
|
AT_CODE_TCPSEND_ACK,
|
|||
|
AT_CODE_MIPCLOSE,
|
|||
|
AT_CODE_MIPCFG_UDP1,
|
|||
|
AT_CODE_MIPOPEN_UDP1,
|
|||
|
AT_CODE_UDPSEND1,
|
|||
|
AT_CODE_MIPCLOSE_UDP1,
|
|||
|
AT_CODE_MIPCFG_UDP2,
|
|||
|
AT_CODE_MIPOPEN_UDP2,
|
|||
|
AT_CODE_UDPSEND2,
|
|||
|
AT_CODE_MIPCLOSE_UDP2,
|
|||
|
AT_CODE_MPOF,
|
|||
|
|
|||
|
AT_CODE_ALL
|
|||
|
}TYP_AT_CMDCODE;
|
|||
|
|
|||
|
#define AT_CMD_COUNT AT_CODE_ALL
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
const TYP_AT_CMDCODE AtCode;
|
|||
|
const char* pAtCmdStr;
|
|||
|
const unsigned char WaitTime;
|
|||
|
unsigned char ErrorLimit;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
const unsigned char CaseAtNum;
|
|||
|
} STRUCT_AT_CMD;
|
|||
|
/********************************************************************/
|
|||
|
//ATָ<54><D6B8>ͨ<EFBFBD><CDA8>״̬
|
|||
|
typedef enum{
|
|||
|
AT_REQUEST_IDLE=0,
|
|||
|
AT_REQUEST_SEND,
|
|||
|
AT_REQUEST_CHECK,
|
|||
|
AT_REQUEST_WT
|
|||
|
}TYP_STATE_AT_REQUEST;
|
|||
|
|
|||
|
//<2F><>״̬<D7B4><CCAC><EFBFBD>е<EFBFBD>״̬<D7B4><CCAC>
|
|||
|
typedef enum{
|
|||
|
S_NBIOT_MAIN_IDLE=0,
|
|||
|
S_NBIOT_MAIN_POWER_INIT,
|
|||
|
S_NBIOT_MAIN_NET_OPEN,
|
|||
|
S_NBIOT_MAIN_DATA_SEND,
|
|||
|
S_NBIOT_MAIN_TCP_OPEN,
|
|||
|
S_NBIOT_MAIN_TCP_SEND,
|
|||
|
S_NBIOT_MAIN_TCP_READ,
|
|||
|
S_NBIOT_MAIN_UDP_OPEN,
|
|||
|
S_NBIOT_MAIN_UDP_SEND,
|
|||
|
S_NBIOT_MAIN_POWER_OFF
|
|||
|
}TYP_STATE_MAIN_CONNECT;
|
|||
|
|
|||
|
//ģ<>鿪<EFBFBD><E9BFAA>״̬<D7B4><CCAC>
|
|||
|
typedef enum{
|
|||
|
MODULE_IDLE=0,
|
|||
|
MODULE_POWERON,
|
|||
|
MODULE_POWERON_WT,
|
|||
|
MODULE_POWER_KEY_ON_WT,
|
|||
|
}TYP_STEP_MODULE_POWERON;
|
|||
|
|
|||
|
//ģ<><C4A3><EFBFBD>ػ<EFBFBD>״̬<D7B4><CCAC>
|
|||
|
typedef enum{
|
|||
|
S_PWOFF_IDLE=0,
|
|||
|
S_PWOFF_TCP_CLOSE,
|
|||
|
S_PWOFF_UDP1_CLOSE,
|
|||
|
S_PWOFF_UDP2_CLOSE,
|
|||
|
S_PWOFF_MPOF,
|
|||
|
S_PWOFF_PW_DOWN,
|
|||
|
S_PWOFF_PW_DOWN_WAIT,
|
|||
|
}TYP_STATE_POWER_OFF;
|
|||
|
|
|||
|
//ģ<><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>״̬<D7B4><CCAC>
|
|||
|
typedef enum{
|
|||
|
S_MODULE_INIT_IDLE=0,
|
|||
|
S_MODULE_INIT_POWER_ON,
|
|||
|
S_MODULE_INIT_AT,
|
|||
|
S_MODULE_INIT_CGSN,
|
|||
|
S_MODULE_INIT_CPIN,
|
|||
|
S_MODULE_INIT_CIMI,
|
|||
|
S_MODULE_INIT_MCCID,
|
|||
|
S_MODULE_INIT_CFUN_CK,
|
|||
|
S_MODULE_INIT_CFUN0,
|
|||
|
S_MODULE_INIT_CFUN1,
|
|||
|
S_MODULE_INIT_CSQ,
|
|||
|
S_MODULE_INIT_MUESTATS,
|
|||
|
S_MODULE_INIT_SBAND,
|
|||
|
S_MODULE_INIT_MIPCALL_CK,
|
|||
|
S_MODULE_INIT_CGDCONT,
|
|||
|
S_MODULE_INIT_MIPCALL,
|
|||
|
S_MODULE_INIT_CEREG_CK,
|
|||
|
S_MODULE_INIT_CCLK,
|
|||
|
}TYP_MODULE_INIT;
|
|||
|
|
|||
|
//TCP<43><50><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
typedef enum{
|
|||
|
S_TCP_CONNECT_IDLE=0,
|
|||
|
S_TCP_CONNECT_START,
|
|||
|
S_TCP_CONNECT_MIPCFG,
|
|||
|
S_TCP_CONNECT_MIPOPEN,
|
|||
|
S_TCP_CONNECT_NSOCR_R
|
|||
|
}TYP_TCP_CONNECT;
|
|||
|
|
|||
|
//TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
typedef enum{
|
|||
|
S_TCP_SEND_IDLE=0,
|
|||
|
S_TCP_SEND_START,
|
|||
|
S_TCP_SEND_DATALEN,
|
|||
|
S_TCP_SEND_DATA
|
|||
|
}TYP_TCP_SEND;
|
|||
|
|
|||
|
//UDP<44><50><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
typedef enum{
|
|||
|
S_UDP_CONNECT_IDLE=0,
|
|||
|
S_UDP_CONNECT_START,
|
|||
|
S_UDP_CONNECT_MIPOPEN,
|
|||
|
S_UDP_CONNECT_NSOCR_R
|
|||
|
}TYP_UDP_CONNECT;
|
|||
|
|
|||
|
//UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
typedef enum{
|
|||
|
S_UDP_SEND_IDLE=0,
|
|||
|
S_UDP_SEND_START,
|
|||
|
S_UDP_SEND_DATALEN,
|
|||
|
S_UDP_SEND_DATA
|
|||
|
}TYP_UDP_SEND;
|
|||
|
|
|||
|
//PSM״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
typedef enum{
|
|||
|
PSM_STATE_OUT=0,
|
|||
|
PSM_STATE_WAKE,
|
|||
|
PSM_STATE_SLEEP,
|
|||
|
}TYP_PSM_STATE;
|
|||
|
|
|||
|
|
|||
|
//ͨ<><CDA8>ģʽѡ<CABD><D1A1>
|
|||
|
#define SIM_CARD_TELECOM 0x00 //<2F><><EFBFBD>ſ<EFBFBD>
|
|||
|
#define SIM_CARD_MOBILE 0X01 //<2F>ƶ<EFBFBD><C6B6><EFBFBD>
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>Э<EFBFBD><D0AD>
|
|||
|
#define NBIOT_CONNECT_COAP 0
|
|||
|
#define NBIOT_CONNECT_UDP1 1
|
|||
|
#define NBIOT_CONNECT_UDP2 2
|
|||
|
|
|||
|
#define SEND_TYPE_COAP 0
|
|||
|
#define SEND_TYPE_UDP1 1
|
|||
|
#define SEND_TYPE_UDP2 2
|
|||
|
#define SEND_TYPE_TCP1 3
|
|||
|
//******************************* <20>ṹ<EFBFBD>嶨<EFBFBD><E5B6A8>*************************************
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD>
|
|||
|
#ifndef APN_SIZE
|
|||
|
#define APN_SIZE 32
|
|||
|
#endif
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
u8 *work_mode; //<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>һֱ<D2BB><D6B1><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
u8 *ip; //IP
|
|||
|
u8 *spare_ip; //<2F><><EFBFBD><EFBFBD>IP
|
|||
|
u8 *port; //<2F>˿ں<CBBF>
|
|||
|
u8 *spare_port; //<2F><><EFBFBD>ö˿ں<CBBF>
|
|||
|
u8 *apn; //APN
|
|||
|
} CFIG_PARA;
|
|||
|
|
|||
|
//NBIOT<4F><54>Ϣ
|
|||
|
|
|||
|
typedef union
|
|||
|
{
|
|||
|
struct
|
|||
|
{
|
|||
|
u8 para_change : 1; //<2F><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>
|
|||
|
u8 station_close : 1; //<2F><>վ<EFBFBD><D5BE><EFBFBD><EFBFBD>
|
|||
|
u8 open_spare_station : 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ
|
|||
|
u8 close_spare_station : 1; //<2F>رձ<D8B1>վ
|
|||
|
u8 apn_open : 1; //APN<50><4E><EFBFBD><EFBFBD>
|
|||
|
u8 rev_data : 1; //<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
} s;
|
|||
|
u8 info;
|
|||
|
} NBIOT_MSG;
|
|||
|
|
|||
|
//NBIOT<4F><54><EFBFBD>ز<EFBFBD><D8B2><EFBFBD>
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
CFIG_PARA cfig_para; //<2F><><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
|
|||
|
u8 csq; //<2F>ź<EFBFBD>ֵ
|
|||
|
u8 net_state; //<2F><><EFBFBD><EFBFBD>״̬
|
|||
|
u8 offline_reason; //<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
|
|||
|
u8 Telecom; //<2F><>Ӫ<EFBFBD><D3AA>
|
|||
|
u8 spare_station; //<2F><>վ
|
|||
|
u8 coap_state;
|
|||
|
u8 udp1_state;
|
|||
|
u8 udp2_state;
|
|||
|
} NBIOT_PARA;
|
|||
|
|
|||
|
//<2F><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
u8 *state; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>msg
|
|||
|
u8 *buf; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
u16 len; //<2F><><EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>
|
|||
|
} NBIOT_SEND_DATA;
|
|||
|
|
|||
|
|
|||
|
//******************************* <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>***************************************
|
|||
|
|
|||
|
//******************************* <20>ⲿ<EFBFBD>ӿں<D3BF><DABA><EFBFBD>***********************************
|
|||
|
void NbiotOnlineTask(u8 *state);
|
|||
|
void NbiotSendTask(u8 *addr, u16 len, u8 send_type,u8 *state);
|
|||
|
void NbiotUdpOpenTask(void);
|
|||
|
void NbiotReadECLSNRTask(u8 *state);
|
|||
|
|
|||
|
u8 NbiotIfIdle(void);
|
|||
|
u8 NbiotIfOnline(void);
|
|||
|
u8 NbiotIfSleep(void);
|
|||
|
void NbiotPreSleep(void);
|
|||
|
void NbiotWakeSleep(void);
|
|||
|
u8 ConncetIfOnline(u8 connect_type);
|
|||
|
void NB_NetConnectStart(unsigned char* temp_ip, u16 temp_port, u8 connect_type);
|
|||
|
|
|||
|
void NbiotGetCcidTask(u8 **ccid, u8 *state);
|
|||
|
void NbiotMainMachine(void);
|
|||
|
|
|||
|
u8 If_NB_Poweron(void);
|
|||
|
void StartPowerOffTask(void);
|
|||
|
void set_ip_port(void);
|
|||
|
void NbForcePowerOff(void);
|
|||
|
u8 GetNbiotSendType(void);
|
|||
|
u8 UdpIfOnline(void);
|
|||
|
|
|||
|
u8 TcpIfOnline(void);
|
|||
|
u32 sys_get_net_state(void);
|
|||
|
TYP_PSM_STATE getPsmState(void);
|
|||
|
void NbiotPsmWakeupTask(void);
|
|||
|
void NbiotPsmSleepTask(void);
|
|||
|
void NbiotPsmCheckTask(void);
|
|||
|
#endif
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
|