1 Star 0 Fork 0

yichen/Gateway

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
user_code.h 17.76 KB
一键复制 编辑 原始数据 按行查看 历史
yichen 提交于 2024-05-01 22:17 . start
#ifndef _USER_CODE_H
#define _USER_CODE_H
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/epoll.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <assert.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <getopt.h>
#include <libgen.h>
#include <signal.h>
#include <limits.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/uio.h>
#include <sys/time.h>
#include <termios.h>
#include <sys/stat.h>
#include <netinet/tcp.h>
#include "openssl/ssl.h"
#include "cjson.h"
struct mqtt_param{
void (*success)(void* ctx, void* response);//参数无意义
void (*failure)(void* ctx, void* response);//参数无意义
void *ctx;
int qos;
int msgid;
int retain;
};
#define STATIC 0
#define DHCP 1
#define NONE 0
#define EVEN 1
#define ODD 2
#define STOP_1 0
#define STOP_1_5 1
#define STOP_2 2
#define UART_MODE_TUNNEL 0 //透传
#define UART_MODE_MB_SLAVE 1//modbus tcp to rtu slave
#define UART_MODE_MB_MASTER 2//modbus tcp to rtu master
#define UART_MODE_ASK_ANSWER 3//一问一答
#define UART_MODE_FORMAT 4//分发
//配置参数
//网口
#define CFG_PARAM_NET_START 1
// STATIC 静态 DHCP 自动获取
#define CFG_PARAM_INT_NET_IP_TYPE CFG_PARAM_NET_START+1 //ip 类型
//字符型 如"192.168.1.1"
#define CFG_PARAM_STRING_NET_IP_ADDR CFG_PARAM_NET_START+2 //设备ip 地址
#define CFG_PARAM_STRING_NET_SUBNET_MASK CFG_PARAM_NET_START+3//子网掩码
#define CFG_PARAM_STRING_NET_GATEWAY CFG_PARAM_NET_START+4 //网关
#define CFG_PARAM_STRING_NET_DNS CFG_PARAM_NET_START+5 //dns
#define CFG_PARAM_STRING_NET_USER_NAME CFG_PARAM_NET_START+6 //网页登录用户名
#define CFG_PARAM_STRING_NET_USER_PASSWORD CFG_PARAM_NET_START+7 //网页登录密码
//4G
//串口
#define CFG_PARAM_UART_START 100
//
//支持600,1200,2400,4800,9600,14400,19200,38400,56000,57600,115200,128000,230400,256000,460800,921600,1024000
#define CFG_PARAM_INT_UART_BITRATE CFG_PARAM_UART_START+1
#define CFG_PARAM_INT_UART_BITCHECK CFG_PARAM_UART_START+2 //波特率 支持NONE EVEN ODD
#define CFG_PARAM_INT_UART_BITDATA CFG_PARAM_UART_START+3 //数据位支持5,6,7,8
#define CFG_PARAM_INT_UART_BITSTOP CFG_PARAM_UART_START+4//停止位支持STOP_1 STOP_1_5 STOP_2
#define CFG_PARAM_INT_UART_PACK_TIME CFG_PARAM_UART_START+5//打包时间0-65535
#define CFG_PARAM_INT_UART_PACK_SIZE CFG_PARAM_UART_START+6//打包长度0-65535
#define CFG_PARAM_INT_UART_MODE CFG_PARAM_UART_START+7//串口模式
#define CFG_PARAM_INT_UART_TIMEOUT CFG_PARAM_UART_START+8 //超时0-0xffffffff ms
#define CFG_PARAM_INT_UART_MODBUS_CACHE_ENABLE CFG_PARAM_UART_START+9 //命令缓存 disable enable
#define CFG_PARAM_INT_UART_UPDATE_TIME CFG_PARAM_UART_START+10//更新周期0-0xffffffff ms
#define CFG_PARAM_INT_UART_SEND_DELAY_TIME CFG_PARAM_UART_START+11//命令延时0-0xffffffff ms
#define CFG_PARAM_INT_UART_ADDR1 CFG_PARAM_UART_START+12//0-65535 分发模式下的串口地址
#define CFG_PARAM_INT_UART_ADDR2 CFG_PARAM_UART_START+13//保留
//48byte 数组,最多可以设置48 个数据源
//值范围 0-48 0是结尾 1-24 对应串口1-24 ,25-48 对应tcp 1-24
#define CFG_PARAM_ARRAY_UART_SOURCE CFG_PARAM_UART_START+14
//tcp 通讯口
#define WORK_MODE_DISABLE 0//不启用
#define WORK_MODE_TCP_SERVER 1//
#define WORK_MODE_TCP_CLIENT 2
#define WORK_MODE_UDP_SERVER 3
#define WORK_MODE_UDP_CLIENT 4
#define WORK_MODE_HTTPC 5
#define WORK_MODE_MQTT 6
#define WORK_MODE_WEBSOCKET_SERVER 7
#define CFG_PARAM_TCP_START 200
#define CFG_PARAM_INT_TCP_WORK_MODE CFG_PARAM_TCP_START+1//工作模式
#define CFG_PARAM_STRING_TCP_TARGET_IP CFG_PARAM_TCP_START+2//目标ip支持域名
#define CFG_PARAM_INT_TCP_TARGET_PORT CFG_PARAM_TCP_START+3//目标端口
#define CFG_PARAM_INT_TCP_LOCAL_PORT CFG_PARAM_TCP_START+4//本地端口 1111 1112 1110 80禁用
#define CFG_PARAM_ARRAY_TCP_HEARTBEAT_DATA CFG_PARAM_TCP_START+5//心跳包数据最大64个字节
#define CFG_PARAM_INT_TCP_HEARTBEAT_TIME CFG_PARAM_TCP_START+6//心跳时间0-65535
/*
0 不启用
1 连上服务器时 发一次\
2 在每个数据包前都加上
3 同时支持1 和2
*/
#define CFG_PARAM_INT_TCP_REGISTER_MODE CFG_PARAM_TCP_START+7//注册包模式
#define CFG_PARAM_ARRAY_TCP_REGISTER_DATA CFG_PARAM_TCP_START+8//注册包数据最大64个字节
#define CFG_PARAM_STRING_TCP_HTTPC_TARGET_IP CFG_PARAM_TCP_START+9//服务器ip支持域名
#define CFG_PARAM_INT_TCP_HTTPC_TARGET_PORT CFG_PARAM_TCP_START+10//服务器端口
#define CFG_PARAM_INT_TCP_HTTPC_GET_ENABLE CFG_PARAM_TCP_START+11//0 post 1 get
#define CFG_PARAM_STRING_TCP_HTTPC_HEADER CFG_PARAM_TCP_START+12//header
#define CFG_PARAM_STRING_TCP_MQTT_TARTET_IP CFG_PARAM_TCP_START+13//服务器ip 支持域名
#define CFG_PARAM_INT_TCP_MQTT_TARTET_PORT CFG_PARAM_TCP_START+14//端口
#define CFG_PARAM_STRING_TCP_MQTT_USER_NAME CFG_PARAM_TCP_START+15//用户名
#define CFG_PARAM_STRING_TCP_MQTT_USER_PASSWORD CFG_PARAM_TCP_START+16//密码
#define CFG_PARAM_STRING_TCP_MQTT_ID CFG_PARAM_TCP_START+17//设备ID
#define CFG_PARAM_INT_TCP_MQTT_KEEPALIVE CFG_PARAM_TCP_START+18//keepalive
#define CFG_PARAM_INT_TCP_MQTT_WILL_ENABLE CFG_PARAM_TCP_START+19//遗嘱
#define CFG_PARAM_STRING_TCP_MQTT_WILL_TOPIC CFG_PARAM_TCP_START+20//遗嘱topic
#define CFG_PARAM_STRING_TCP_MQTT_WILL_MESSAGE CFG_PARAM_TCP_START+21//遗嘱msg
#define CFG_PARAM_STRING_TCP_MQTT_SUB_TOPIC1 CFG_PARAM_TCP_START+22//订阅topic
#define CFG_PARAM_STRING_TCP_MQTT_PUB_TOPIC1 CFG_PARAM_TCP_START+23//发布topic
#define CFG_PARAM_INT_TCP_MQTT_CLOUD_MODE CFG_PARAM_TCP_START+24//云 00 不启用 01 阿里云02 智嵌云
#define CFG_PARAM_STRING_TCP_MQTT_ALI_PRODUCT_KEY CFG_PARAM_TCP_START+25
#define CFG_PARAM_STRING_TCP_MQTT_ALI_DEVICE_NAME CFG_PARAM_TCP_START+26
#define CFG_PARAM_STRING_TCP_MQTT_ALI_DEVICE_SECRET CFG_PARAM_TCP_START+27
#define CFG_PARAM_INT_TCP_MQTT_REGISTER_MODE CFG_PARAM_TCP_START+28//注册包模式
#define CFG_PARAM_ARRAY_TCP_MQTT_REGISTER_DATA CFG_PARAM_TCP_START+29//注册包数据 最大64
#define CFG_PARAM_INT_TCP_MQTT_SSL CFG_PARAM_TCP_START+30//ssl
#define CFG_PARAM_INT_TCP_MQTT_QOS CFG_PARAM_TCP_START+31//qos
#define CFG_PARAM_MB_POLL_START 1000
#define CFG_PARAM_INT_MB_POLL_ENABLE CFG_PARAM_MB_POLL_START+1
#define CFG_PARAM_INT_MB_POLL_UPDATE_TIME CFG_PARAM_MB_POLL_START+2//轮询间隔
#define CFG_PARAM_INT_MB_POLL_TIMEOUT CFG_PARAM_MB_POLL_START+3//超时
#define CFG_PARAM_INT_MB_POLL_SEND_DELAY_TIME CFG_PARAM_MB_POLL_START+4//指令延时
#define CFG_PARAM_INT_MB_POLL_ADDR CFG_PARAM_MB_POLL_START+5//映射地址
#define CFG_PARAM_INT_MB_POLL_TIMEOUT_MODE CFG_PARAM_MB_POLL_START+6//超时处理
#define CFG_PARAM_INT_MB_POLL_TIME_UPLOAD CFG_PARAM_MB_POLL_START+7//定时上传
#define CFG_PARAM_INT_MB_POLL_CHANGE_UPLOAD CFG_PARAM_MB_POLL_START+8//变化上传
#define CFG_PARAM_INT_MB_POLL_UPLOAD_MODE CFG_PARAM_MB_POLL_START+9//上传格式
#define CFG_PARAM_INT_MB_POLL_ARRAY CFG_PARAM_MB_POLL_START+10//统一为数组
#define CFG_PARAM_STRING_MB_POLL_PREFIX CFG_PARAM_MB_POLL_START+11//前缀
#define CFG_PARAM_ARRAY_MB_POLL_UPLOAD_INTERFACE CFG_PARAM_MB_POLL_START+12//上传接口
#define CFG_PARAM_INT_MB_POLL_CMD_CNT CFG_PARAM_MB_POLL_START+13//轮询的指令个数
#define CFG_PARAM_MB_POLL_CMD_START 1100
#define CFG_PARAM_INT_MB_POLL_CMD_INTERFACE CFG_PARAM_MB_POLL_CMD_START+1//接口
#define CFG_PARAM_INT_MB_POLL_CMD_ADDR CFG_PARAM_MB_POLL_CMD_START+2//地址
#define CFG_PARAM_INT_MB_POLL_CMD_FUN CFG_PARAM_MB_POLL_CMD_START+3//功能码
#define CFG_PARAM_INT_MB_POLL_CMD_REG_ADDR CFG_PARAM_MB_POLL_CMD_START+4//开始寄存器
#define CFG_PARAM_INT_MB_POLL_CMD_REG_SIZE CFG_PARAM_MB_POLL_CMD_START+5//寄存器个数
#define CFG_PARAM_INT_MB_POLL_CMD_DATA_TYPE CFG_PARAM_MB_POLL_CMD_START+6//数据类型
#define CFG_PARAM_STRING_MB_POLL_CMD_JSON CFG_PARAM_MB_POLL_CMD_START+7//JSON名
#define CFG_PARAM_INT_MB_POLL_CMD_THRESHOLD1 CFG_PARAM_MB_POLL_CMD_START+8//阀值1
#define CFG_PARAM_INT_MB_POLL_CMD_THRESHOLD2 CFG_PARAM_MB_POLL_CMD_START+9//阀值2
#define CFG_PARAM_INT_MB_POLL_CMD_K CFG_PARAM_MB_POLL_CMD_START+10//k
#define CFG_PARAM_INT_MB_POLL_CMD_B CFG_PARAM_MB_POLL_CMD_START+11//b
#define CFG_PARAM_INT_MB_POLL_CMD_EMG_FLAG CFG_PARAM_MB_POLL_CMD_START+12//紧急数据
//modbus poll
//其他
#define CFG_PARAM_START 1200
#define CFG_PARAM_INT_GPIO_ENABLE CFG_PARAM_START+1//8 输入 8 输出
#define CFG_PARAM_INT_SELF_BITRATE_ENABLE CFG_PARAM_START+2//自设波特率
#define CFG_PARAM_INT_NTP_ENABLE CFG_PARAM_START+3//
#define CFG_PARAM_INT_SELF_USER_CODE_ENABLE CFG_PARAM_START+4//用户代码
#define CFG_PARAM_INT_NET_BREAK_TIME CFG_PARAM_START+5//断网重启
#define CFG_PARAM_STRING_DEVICE_NAME CFG_PARAM_START+6//设备名称
#define CFG_PARAM_INT_WEB CFG_PARAM_START+7//是否启用web 0不启用 1 启用
#define CFG_PARAM_INT_DEV_LOCK CFG_PARAM_START+8//是否启用设备锁 0不启用 1 启用
#define CFG_PARAM_INT_IO_ENABLE CFG_PARAM_START+9//启用 8输入8输出io 0不启用 1 启用
#define CFG_PARAM_INT_IO_ADDR CFG_PARAM_START+10//io modbus 地址
#define CFG_PARAM_STRING_NTP_SERVER CFG_PARAM_START+11//NTP首选服务器 最大63个字节
#define CFG_PARAM_INT_USER_JSON_CFG CFG_PARAM_START+12//是否启用web 0不启用 1 启用
typedef int (*APP_INIT)(void * pParameter);
struct zq_recv_cb{
int (*tcp_recv)( unsigned char *data,unsigned int size,unsigned char tcp,int sock,void *p);
int (*uart_recv)( unsigned char *data,unsigned int size,unsigned char uart);
int (*mb_poll_loop_query_end)(void);//轮询一次 结束后 调用
int (*mb_poll_upload)(unsigned char *data,unsigned int size); //定时上传前调用
int (*factory_default)(void);//配置软件点击恢复出厂时 会调用此函数
int (*power_off)(unsigned char status); //设备掉电时 会调用,(设备需要有掉电检测功能)
int (*web_get_name)(unsigned char *value);//item 名称 最大64字节 如果是中文必须 unicode 编码
int (*web_set)(cJSON *value);//用户网页 点击保存时的回调函数 ,格式 参考demo
int (*web_get)(cJSON *value);//展示网页时 读取 显示的值 ,格式 参考demo
};
//mb 结构体
struct zq_mbpoll_info
{
unsigned char addr;//轮询的mb 地址
unsigned char fun;//轮询的 mb 功能码
unsigned short reg_start; //开始寄存器
unsigned short reg_num;//要读取的数量
unsigned char data_type;
unsigned char json[64]; //json名
unsigned char emg;//要读取的数量
float k;//要读取的数量
float b;//要读取的数量
unsigned char reg_data[511];//读取出来的寄存器值
unsigned char inter;//接口 1-24 对应u1-u24 25-48 对应n1-n24
unsigned char val[512];//类型值 字符型
unsigned char status;//0 正常 1 超时
unsigned char change;//0 和上次比较没有变化 1 有变化
};
/*
idx:串口 0-23 对应u1-u24
src:要发送的数据缓存
src_size:要发送数据的大小
dst:串口应答数据缓存
dst_size:串口应答数据的缓存大小
tm:发送后等待串口应答的最大时间 单位 ms
返回值:串口应答数据的大小
*/
int zq_user_mbpoll_send_with_ack(unsigned char idx ,unsigned char *src,unsigned int src_size,unsigned char *dst,unsigned int dst_size,unsigned int tm);
typedef void (*timer_cb)(void *data);
/*
设置接收回调函数,注意不要在回调函数中做费时的操作
*/
void zq_set_recv_cb(struct zq_recv_cb cb);
//debug
void dbg_user_printf(const char *fmt,...);
/*
id :0 - 23 n1-n24
0 未连接
1 已成功连接
*/
int zq_get_tcp_status(unsigned char idx);
/*
idx : 0 - 23 通讯口ID N1-N24
data:要发送的数据
size: 发送数据的大小
返回值 已经发送的数据大小
*p :私有参数
*/
int zq_tcp_send(unsigned char idx,unsigned char *data,unsigned int size,int sock,void *p);
/*
向串口 发送数据
idx : 0-23 串口id U1-U24
data:要发送的数据
size: 发送数据的大小
返回值发送的数据大小
*/
int zq_uart_send(unsigned char idx,unsigned char *data,unsigned int size);
int zq_uart_recv(unsigned char idx,unsigned char *data,unsigned int size,unsigned int timeout_ms);
/*
获得输出Y的状态
gpio: 取值0-8
返回值 0 或1
*/
char zq_get_Y(unsigned char gpio);
/*
获得输入X的状态
gpio: 取值0-8
返回值 0 或1
*/
char zq_get_X(unsigned char gpio);
/*
设置Y的状态
gpio: 取值0-8
status 0 或1
*/
void zq_set_Y(unsigned char gpio,unsigned char status);
/*
休眠
*/
void zq_sleep(unsigned int ms);
/*
创建定时器
func 定时器执行函数
param 传送的参数
返回 定时器的句柄
*/
int zq_create_timer(timer_cb cb, void* param);
/*
启动定时器
t 定时器句柄
ms 定时器时间
返回 0 失败 1 成功
*/
unsigned char zq_start_timer(int fd,int ms,int repeat);
/*
停止定时器
返回 0 失败 1 成功
*/
unsigned char zq_stop_timer( int fd);
/*
重启设备
*/
void zq_restart(void);
/*
设置用户代码版本 可以在配置软件中查看
*/
void zq_set_version(unsigned int ver);
/*
64kb 的存储空间
注意请勿频繁擦除
*/
int zq_flash_erase(void);
/*
addr:0-0x10000
data: 要写入的数据
len : 数据大小
返回值 -1 失败 大于0 是实际写入的数据大小
*/
int zq_flash_write(unsigned int addr,unsigned char *data,unsigned int size);
/*
addr:0-0x10000
data: 要读取的数据
len :要读的 数据大小
返回值 -1 失败 大于0 是实际读取的数据大小
*/
int zq_flash_read(unsigned int addr,unsigned char *data,unsigned int size);
char *zq_get_imei(void);
char *zq_get_iccid(void);
char *zq_get_id(void);
char *zq_get_name(void);
int zq_create_task(void*(*function)(void*),void *p);
/*sd 卡读写函数*/
/*
flag:O_RDONLY O_WRONLY O_RDWR O_CREATE
*/
int zq_file_save_open(char *path,int flag);
//返回实际写入的大小
int zq_file_save_write(int fd,char *data,unsigned int size);
//返回读取的大小
int zq_file_save_read(int fd,char *data,unsigned int size);
//返回modbus poll 的命令个数
int zq_get_mbpoll_item_count(void);
int zq_get_mbpoll_item_cmd_info(unsigned char item,struct zq_mbpoll_info *mb);
/*
获取int 类型的参数
param_id 参数id
idx :当设置串口相关的参数时 id 0-23 对应24 个串口 比如id=0 就是设置串口1的参数
当设置通讯口相关的参数时 id 0-23 对应24个通讯口比如id=0 就是设置通讯口1的参数
当设置modbus poll 命令相关的参数时 id0-255 对应256轮询指令比如id = 0就是设置第一个命令的参数
返回值:-1 参数id 不存在,-2 传参错误,其他参数值
*/
int zq_get_cfg_int_type(unsigned int param_id,unsigned int idx);
/*
获取字符串 类型的参数
param_id 参数id
idx :当设置串口相关的参数时 id 0-23 对应24 个串口 比如id=0 就是设置串口1的参数
当设置通讯口相关的参数时 id 0-23 对应24个通讯口比如id=0 就是设置通讯口1的参数
当设置modbus poll 命令相关的参数时 id0-255 对应256轮询指令比如id = 0就是设置第一个命令的参数
dst:返回的数据
dst_size : dst 缓存的大小
返回值:-1 参数id 不存在,-2 传参错误,大于0 返回的数据大小
*/
int zq_get_cfg_string_type(unsigned int param_id,unsigned int idx,unsigned char *dst,unsigned int dst_size);
/*
获取数组 类型的参数
param_id 参数id
idx :当设置串口相关的参数时 id 0-23 对应24 个串口 比如id=0 就是设置串口1的参数
当设置通讯口相关的参数时 id 0-23 对应24个通讯口比如id=0 就是设置通讯口1的参数
当设置modbus poll 命令相关的参数时 id0-255 对应256轮询指令比如id = 0就是设置第一个命令的参数
dst:返回的数据
dst_size : dst 缓存的大小
返回值:-1 参数id 不存在,-2 传参错误,大于0 返回的数据大小
*/
int zq_get_cfg_array_type(unsigned int param_id,unsigned int idx,unsigned char *dst,unsigned int dst_size);
/*
设置int 类型的参数
param_id 参数id
idx :当设置串口相关的参数时 id 0-23 对应24 个串口 比如id=0 就是设置串口1的参数
当设置通讯口相关的参数时 id 0-23 对应24个通讯口比如id=0 就是设置通讯口1的参数
当设置modbus poll 命令相关的参数时 id0-255 对应256轮询指令比如id = 0就是设置第一个命令的参数
value:要设置的值
返回值:-1 参数id 不存在,-2 传参错误
*/
int zq_set_cfg_int_type(unsigned int param_id,unsigned int idx,unsigned int value);
/*
设置int 类型的参数
param_id 参数id
idx :当设置串口相关的参数时 id 0-23 对应24 个串口 比如id=0 就是设置串口1的参数
当设置通讯口相关的参数时 id 0-23 对应24个通讯口比如id=0 就是设置通讯口1的参数
当设置modbus poll 命令相关的参数时 id0-255 对应256轮询指令比如id = 0就是设置第一个命令的参数
value:要设置的值必须字符串 以0 结尾
返回值:-1 参数id 不存在,-2 传参错误
*/
int zq_set_cfg_string_type(unsigned int param_id,unsigned int idx,unsigned char *value);
/*
设置int 类型的参数
param_id 参数id
idx :当设置串口相关的参数时 id 0-23 对应24 个串口 比如id=0 就是设置串口1的参数
当设置通讯口相关的参数时 id 0-23 对应24个通讯口比如id=0 就是设置通讯口1的参数
当设置modbus poll 命令相关的参数时 id0-255 对应256轮询指令比如id = 0就是设置第一个命令的参数
value:要设置的值
size : 值的大小
返回值:-1 参数id 不存在,-2 传参错误
*/
int zq_set_cfg_array_type(unsigned int param_id,unsigned int idx,unsigned char *value,unsigned int size);
/*
将设置的参数保存到flash中
所有参数保存后,重启后才生效
*/
void zq_save_config(void);
/*
设置串口的参数 立即生效 重启丢失
idx 0-23 :串口
baudrate :600,1200,2400,4800,9600,14400,19200,38400,56000,57600,115200,128000,230400,256000,460800,921600,1024000
datalen :5,6,7,8
stopbit :1,2
check :'N':无校验 ,'O' :奇校验, 'E' :偶校验
返回值 0 成功 -1 失败
*/
int zq_set_uart_param(unsigned char idx,unsigned int baudrate,unsigned char datalen,unsigned char stopbit,unsigned char check);
/*配置软件 上可指定item item内容当前目录 usercfgitem.txt
返回 0-0xffff
*/
int get_cfg_item();
int set_cfg_item(unsigned short item);
/*
特殊函数 qos = 1,
idx:0-23
topic:0 使用配置的topic 发布 否则按此topic 发布
data:发布的数据
size:发布数据的大小
mqtt_param: 参数 如qos 0为按配置参数
*/
int zq_mqtt_publish(unsigned char idx,void *topic,unsigned char *data,unsigned int size,struct mqtt_param *mqtt_param);
//获得纬度整数部分
unsigned int get_weidu(void);
//获得纬度小数部分
unsigned int get_weidu_dot(void);
//获得经度整数部分
unsigned int get_jingdu(void);
//获得经度整数部分
unsigned int get_jingdu_dot(void);
/*
此方式有风险,需要在本地验证好app 升级功能完好后,才能升级远程的设备。
ota 升级
强烈推荐 升级协议为 一问一答方式
目前没做双app 升级 所以升级过程中不能断电。
*/
/*
app_size:如果为0 将会分配3M 空间 ,不为0 必须是app 的大小
为升级分配资源
返回值
0 成功 其他失败
*/
int zq_ota_start(unsigned int app_size);
/*
addr:app 地址。 从0开始 对app 整个文件的映射
data: app 数据
data_size: 此次数据的大小
返回值 0 成功 -1 app 数据错误
*/
int zq_ota_data(unsigned int addr,unsigned char *data,unsigned int data_size);
/*
返回值 0 成功 其他失败
-1 app 错误
-2 app 数据错误
*/
int zq_ota_end(void);
/*
升级成功后调用 ,调用后系统会重启
*/
int zq_ota_restart(void);
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yichen79/gateway.git
git@gitee.com:yichen79/gateway.git
yichen79
gateway
Gateway
main

搜索帮助