/****************************************************************
W128硬件设备接入通信协议版本
*****************************************************************/
#include "wwzl_w120ae_wx_tracker.h"
#include "bmt_utility.h"
#include "btostypes.h"
#include "DateTimeType.h"
#include "wwzlmqtt.h"
#include "mqtt.h"
static kal_int8 mb_socket_retry = 0;
static kal_bool wwzl_is_possing_now = KAL_FALSE;
static kal_int8 mb_wifi_flag = 0;
static kal_int16 g_wifi_num = 0;
kal_uint8 BPresponseMessage[512];
kal_int16 BPresponseMessage_len = 0;
kal_uint8 BPresponseMessageOpenLock[512];
kal_int16 BPresponseMessageOpenLock_len = 0;
kal_uint8 BPCloseLockMessage[512];
kal_int16 BPCloseLockMessage_len = 0;
char alarm_number[12];
kal_uint32 wwzl_fangdao_upload_num = 0;
kal_bool init_flag = KAL_FALSE;
kal_uint8 mBegainFlag = 0x00;
kal_uint8 mProtocolType = 0x00;
kal_uint8 mProtocolNum = 0x00;
kal_uint8 mBikeType = 0x00;
kal_uint8 mCmd = 0x00;
kal_uint8 mResponseFlag = 0x99;
kal_uint32 lock_open_timestamp[256] = {0};
kal_uint32 lock_close_timestamp[256] = {0};
kal_uint32 lock_open_timelong[256] = {0};
POSITION_TYPE wwzl_position_type = POSITION_USE_WIFI;
kal_bool is_charging = KAL_FALSE;
kal_uint32 mOpenLockTimeSec = 0;
kal_uint32 mCloseLockTimeSec = 0;
kal_uint32 mWorkType = WORK_TYPE_NONE;
kal_uint32 mSendWorkType = WORK_TYPE_NONE;
kal_uint32 lock_open_time = 0;
kal_uint32 shock_number = 0;
kal_bool is_shock_flag = KAL_FALSE;
kal_bool is_query_flag = KAL_FALSE;
int keepalive = 30;
mqtt_broker_handle_t broker;
extern kal_uint8 bcd_lc_bt_mac[7];
extern BMTStruct BMT;
extern bmt_adc bmt_adc_get_data;
extern kal_uint8 wwzl_customer_id[4];
extern void adups_net_start_get_new_version(void);
extern wwzl_get_local_ble_addr(BD_ADDR *ble_addr);
extern kal_uint8 wwzl_app_id_bt[4]; //yonghu id
extern kal_uint8 wwzl_app_id_gprs[4]; //yonghu id
extern kal_uint8 wwzl_app_id[4]; //yonghu id
extern kal_bool is_feixing_mode;
extern void wwzl_send_lock_faile_to_app(void);
extern void wwzl_send_lock_close_to_app(void);
extern void wwzl_send_lock_success_to_app(void);
extern void mobrain_wrap_cfun0(void);
extern void mobrain_wrap_cfun1(void);
extern kal_bool mLockServerOk;
LOCK_MODE mLockMode = LOCK_MODE_PACKAGING;
LOCK_STATE mLockState = LOCK_STATE_INVALID;
U32 open_time = 0;
U32 close_time = 0;
int ring_num = 0;
int mLockType = -1;// 1 gprs open lock; 0 bt open lock
kal_int16 len_trans = 0;
#ifdef __ONENET_MQTT__
#define WRITEUINT16(A,V) \
{\
*(A) = (uint8_t)(((V) & 0xFF00) >> 8); \
*(A+1) = (uint8_t)((V) & 0x00FF); \
}
#define WRITEFLOAT(A, V) \
{\
memcpy(A, &V, sizeof(float));\
}
struct MqttSampleContext
{
int epfd;
int mqttfd;
uint32_t sendedbytes;
struct MqttContext mqttctx[1];
struct MqttBuffer mqttbuf[1];
const char *host;
unsigned short port;
const char *proid;
const char *devid;
const char *apikey;
int dup;
enum MqttQosLevel qos;
int retain;
uint16_t pkt_to_ack;
char cmdid[1024];
};
struct Command
{
const char *cmd;
int (*func)(struct MqttSampleContext *ctx);
const char *desc;
};
#define buf_size 1024
#define STRLEN 64
char buf[buf_size];
char g_cmdid[STRLEN];
char* prjid = "339"; //project_id
char* auth_info = "{\"SYS\":\"F8E2ABB4278D47188CF6C1B3741D0DA1\"}"; //authoriz info
char* devid = "9277"; //device_id
#define MAX_TOPICS_NUMB 100
char* topics[MAX_TOPICS_NUMB+1];
int g_pkt_id = 1;
static int MqttSample_CmdConnect(struct MqttSampleContext *ctx);
static int MqttSample_CmdPing(struct MqttSampleContext *ctx);
static const struct Command commands[] = {
{"connect", MqttSample_CmdConnect, "Establish the connection."},
{"ping", MqttSample_CmdPing, "Send ping packet."}
};
#endif
/*0x0002 设备厂商代码 1*/
unsigned char lockDeviceHeadInfo[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//0x00 close 0x01 open
#define T_L (3) //TAG和LEN的长度和 是 3个字节
/*******************************************************************************
--------------------------------设备信息----------------------------------------
*******************************************************************************/
/*0x0001*/
/*0x0002 设备厂商代码 1*/
unsigned char lockDeviceProductTlv[] = {0x04,0x02,0x00,0x00};//0x00 close 0x01 open
/*0x0003 设备类别 1*/
unsigned char lockDeviceCategoryTlv[] = {0x04,0x03,0x00,0x00};//
/*0x0004 设备型号 20*/
unsigned char lockDeviceModelTlv[] = {0x17,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
/*0x0005 设备生产序列号 20*/
unsigned char lockDeviceProductSnTlv[] = {0x17,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
/*0x0006 经度 20*/
unsigned char lockLongitudeTlv[] = {0x17,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //longitude
/*0x0007 纬度 20*/
unsigned char lockLatitudeTlv[] = {0x17,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //latitude
/*0x0008 版本信息 20*/
unsigned char lockVersionTlv[] = {0x17,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //
/*0x0009 IMSI 20*/
unsigned char lockImsiTlv[] = {0x17,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //
/*0x0010 锁的状态 1*/
unsigned char lockStateTlv[] = {0x04,0x10,0x00,0x02};//
/*0x0050 锁的异常信息 1*/
unsigned char lockAbnormalTypeTlv[] = {0x04,0x50,0x00,0x00}; //
/*0x0051 锁的电量 1*/
unsigned char lockPowerTlv[] = {0x04,0x51,0x00,0x64}; //
/*0x0052 用户ID 4*/
unsigned char lockIDTlv[] = {0x07,0x52,0x00,0x00,0x00,0x00,0x00}; //
/*0x0053 GPS标识 1*/
unsigned char lockGpsFlagTlv[] = {0x04,0x53,0x00,0x01}; //
/*******************************************************************************
--------------------------------网络参数----------------------------------------
*******************************************************************************/
/*0x0101 单车设备号 8*/
/*0x0102 设备类型 1*/
unsigned char lockDeviceTypeTlv[] = {0x04,0x02,0x01,0x00}; //
/*0x0103 设备密码 4*/
unsigned char lockDevicePassWordTlv[] = {0x07,0x03,0x01,0x00,0x00,0x00,0x00}; //
/*0x0104 开锁开关 1*/
unsigned char lockOpenLockSwitchTlv[] = {0x04,0x04,0x01,0x00}; //
/*0x0105 MAC 地址 6*/
unsigned char lockMacTlv[] = {0x09,0x05,0x01,0x00,0x00,0x00,0x00,0x00,0x00}; //
/*0x0106 GPS工作模式 1*/
unsigned char lockGpsModeTlv[] = {0x04,0x06,0x01,0x00}; //
/*0x0107 GPS上传周期 4*/
unsigned char lockUpLoadCycleTlv[] = {0x07,0x07,0x01,0x00,0x00,0x00,0x00}; //
/*0x0108 开锁时长 4*/
unsigned char lockOpenLockTimeTlv[] = {0x07,0x08,0x01,0x00,0x00,0x00,0x00}; //
/*0x010A GPS卫星个数 1*/
unsigned char lockGpsNumTlv[] = {0x04,0x0A,0x01,0x00}; //
/*0x010B GPRS连接状态 1*/
unsigned char lockGprsConStateTlv[] = {0x04,0x0B,0x01,0x01}; //
/*0x0110 域名 20*/
unsigned char lockDomainTlv[] = {0x17,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //
/*0x0111 IP 4*/
unsigned char lockIPTlv[] = {0x07,0x11,0x01,0x00,0x00,0x00,0x00}; //
/*0x0112 端口 2*/
unsigned char lockPortTlv[] = {0x05,0x12,0x01,0x00,0x00}; //
/*0x0054 GPS上报类型*/
unsigned char lockGpsTypeTlv[] = {0x04,0x13,0x01,0x01}; //
/*0x0055 上报信号强度*/
unsigned char lockRssiNumTlv[] =
- 1
- 2
- 3
前往页