Example #1
0
bool MqttClient::connect(String clientName, String username, String password)
{
	if (getConnectionState() != eTCS_Ready)
	{
		close();
		debugf("MQTT closed previous connection");
	}

	debugf("MQTT start connection");
	mqtt_init(&broker, clientName.c_str());
	if (clientName.length() > 0)
		mqtt_init_auth(&broker, username.c_str(), password.c_str());

	if(server) {
		TcpClient::connect(server, port);
	}
	else {
		TcpClient::connect(serverIp, port);
	}

	mqtt_set_alive(&broker, keepAlive);
	broker.socket_info = (void*)this;
	broker.send = staticSendPacket;

	int res = mqtt_connect(&broker);
	setTimeOut(USHRT_MAX);
	return res > 0;
}
Example #2
0
/***********************************************************
 *
 *   return :    0 success ,1 error
 *
 *************************************************************/
int32 Mqtt_SendConnetPacket( mqtt_broker_handle_t *pstBroketHandle, int32 socketid,const int8* username,const int8* password )
{       
    int32 ret;
    
    if( (username==NULL) || (password==NULL) )// 匿名登录 GAgent V4 will not runing this code.
    {
        return 1;
    }
    else // 用户登录
    {
        mqtt_init( pstBroketHandle,username );
        mqtt_init_auth(pstBroketHandle,username,password );
    }
    mqtt_set_alive(pstBroketHandle, CLOUD_MQTT_SET_ALIVE);
    pstBroketHandle->socketid = socketid;
    pstBroketHandle->mqttsend = send_packet;

    ret = mqtt_connect(pstBroketHandle);
    if (ret != 0)
        {
            GAgent_Printf(GAGENT_WARNING,"mqtt send connect packet is failed with:%d", ret); 
            return 1;
        }
    GAgent_Printf(GAGENT_INFO, "Mqtt_SendConnetPacket OK, write:%d", ret); 
    return 0;
}
Example #3
0
int init_socket(mqtt_broker_handle_t* broker, const char* hostname, short port)
{
	int flag = 1;
	int keepalive = 3; // Seconds

	// Create the socket
	if((socket_id = socket(PF_INET, SOCK_STREAM, 0)) < 0)
		return -1;

	// Disable Nagle Algorithm
	if (setsockopt(socket_id, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag)) < 0)
		return -2;

	struct sockaddr_in socket_address;
	// Create the stuff we need to connect
	socket_address.sin_family = AF_INET;
	socket_address.sin_port = htons(port);
	socket_address.sin_addr.s_addr = inet_addr(hostname);

	// Connect the socket
	if((connect(socket_id, (struct sockaddr*)&socket_address, sizeof(socket_address))) < 0)
		return -1;

	// MQTT stuffs
	mqtt_set_alive(broker, keepalive);
	broker->socket_info = (void*)&socket_id;
	broker->send = send_packet;

	return 0;
}
/******************************************************************
*       function    :   Cloud_MQTT_initSocket
*       broker      :   mqtt struct    
*       flag        :   0 wifi module to register socketid.
*                       1 wifi module to login socketid                       
*
*
********************************************************************/
int Cloud_MQTT_initSocket( mqtt_broker_handle_t* broker,int flag )
{
    int ret;
//    int MTflag;
    struct sockaddr_in Msocket_address;
    char MqttServerIpAddr[32];
    int iSocketId;
//    int packetLen;
    char *domain = g_Xpg_GlobalVar.m2m_SERVER;
    unsigned short port = g_Xpg_GlobalVar.m2m_Port;
	
    memset(MqttServerIpAddr, 0x0, sizeof(MqttServerIpAddr));

    ret = GAgent_GetHostByName( domain, MqttServerIpAddr );
    if(ret !=0 )
    {
        GAgent_Printf(GAGENT_ERROR,"Gethostbyname(%s) fail ret:%d", domain, ret);
        return 1; //域名解析失败
    }
    GAgent_Printf(GAGENT_INFO,"MQTT Connect Domain:%s IP:%s \r\n", domain, MqttServerIpAddr);

    if( broker->socketid!=-1 )
    {
        GAgent_Printf(GAGENT_INFO,"Cloud_MQTT_initSocket close[%04x] mqtt socket", broker->socketid);
        close_socket(broker);
    }
    
    if( (iSocketId = socket(AF_INET, SOCK_STREAM, 0))<0)
    {
        GAgent_Printf(GAGENT_ERROR," MQTT socket init fail");
        return 1;
    }

    ret = connect_mqtt_socket(iSocketId, &Msocket_address, port, MqttServerIpAddr);
    if (ret < 0)
    {
        GAgent_Printf(GAGENT_WARNING,"mqtt socket connect fail with:%d", ret);
        close(iSocketId);
        return 3;
    }

    /*For Test MQTT Read And Write Func*/
    MQTT_handlePacket();
    
    GAgent_Printf(GAGENT_LOG, "Created mqtt socketid[%08x]", iSocketId);

    // MQTT stuffs
    mqtt_set_alive(broker, MQTT_HEARTBEAT);
    broker->socketid = iSocketId;
    broker->mqttsend = send_packet; 
    
    return 0;
}
int init_socket(mqtt_broker_handle_t* broker, int keepalive)
{
	int flag = 1;

	socket_id = wifi_connect_server();
	if(socket_id >= 8)
	{
		return -1;
	}
	
	// MQTT stuffs
	mqtt_set_alive(broker, keepalive);
	broker->socket_info = socket_id;
	//broker->send = send_packet;

	return 0;
}
Example #6
0
void app_mqtt_init(mqtt_broker_handle_t *broker)
{
	mqtt_init(broker, "HF_mc300");
	mqtt_init_auth(broker, NULL, NULL);
	mqtt_set_alive(broker, MQTT_KEEPALIVE_SEC);
}