コード例 #1
0
ファイル: supla-client.c プロジェクト: Alambos/supla-core
char supla_client_connect(void *_suplaclient) {

	TSuplaClientData *suplaclient = (TSuplaClientData *)_suplaclient;
	supla_client_disconnect(_suplaclient);

	supla_client_clean(_suplaclient);

	if ( ssocket_client_connect(suplaclient->ssd, NULL) == 1 ) {


		suplaclient->eh = eh_init();
		TsrpcParams srpc_params;
		srpc_params_init(&srpc_params);
		srpc_params.user_params = _suplaclient;
		srpc_params.data_read = &supla_client_socket_read;
		srpc_params.data_write = &supla_client_socket_write;
		srpc_params.on_remote_call_received = &supla_client_on_remote_call_received;
		srpc_params.before_async_call = &supla_client_before_async_call;
		srpc_params.eh = suplaclient->eh;
		suplaclient->srpc = srpc_init(&srpc_params);

		eh_add_fd(suplaclient->eh, ssocket_get_fd(suplaclient->ssd));
		suplaclient->connected = 1;

		supla_client_set_registered(_suplaclient, 0);

		if ( suplaclient->cfg.cb_on_connected )
			suplaclient->cfg.cb_on_connected(_suplaclient, suplaclient->cfg.user_data);

		return 1;
	}

	return 0;
}
コード例 #2
0
ファイル: SuplaDevice.cpp プロジェクト: SUPLA/arduino
bool SuplaDeviceClass::begin(IPAddress *local_ip, char GUID[SUPLA_GUID_SIZE], uint8_t mac[6], const char *Server,
                             int LocationID, const char *LocationPWD) {

    unsigned char a;
    if ( isInitialized(true) ) return false;

    if ( Params.cb.tcp_read == NULL
            || Params.cb.tcp_write == NULL
            || Params.cb.eth_setup == NULL
            || Params.cb.svr_connected == NULL
            || Params.cb.svr_connect == NULL
            || Params.cb.svr_disconnect == NULL ) {

        supla_log(LOG_DEBUG, "Callbacks not assigned!");
        return false;
    }

    if ( local_ip ) {
        Params.local_ip = *local_ip;
        Params.use_local_ip = true;
    } else {
        Params.use_local_ip = false;
    }

    memcpy(Params.reg_dev.GUID, GUID, SUPLA_GUID_SIZE);
    memcpy(Params.mac, mac, 6);
    Params.reg_dev.LocationID = LocationID;
    setString(Params.reg_dev.LocationPWD, LocationPWD, SUPLA_LOCATION_PWD_MAXSIZE);
    Params.server = strdup(Server);

    for(a=0; a<SUPLA_GUID_SIZE; a++)
        if ( Params.reg_dev.GUID[a] != 0 ) break;

    if ( a == SUPLA_GUID_SIZE ) {
        supla_log(LOG_DEBUG, "Invalid GUID");
        return false;
    }

    if ( Params.server == NULL
            || Params.server[0] == NULL ) {
        supla_log(LOG_DEBUG, "Unknown server address");
        return false;
    }

    if ( Params.reg_dev.LocationID == 0 ) {
        supla_log(LOG_DEBUG, "Unknown LocationID");
        return false;
    }

    setString(Params.reg_dev.Name, "ARDUINO", SUPLA_DEVICE_NAME_MAXSIZE);
    setString(Params.reg_dev.SoftVer, "1.1", SUPLA_SOFTVER_MAXSIZE);

    Params.cb.eth_setup(Params.mac, Params.use_local_ip ? &Params.local_ip : NULL);

    TsrpcParams srpc_params;
    srpc_params_init(&srpc_params);
    srpc_params.data_read = &supla_arduino_data_read;
    srpc_params.data_write = &supla_arduino_data_write;
    srpc_params.on_remote_call_received = &supla_arduino_on_remote_call_received;
    srpc_params.user_params = this;


    srpc = srpc_init(&srpc_params);
    supla_log(LOG_DEBUG, "SuplaDevice initialized");
}