Example #1
0
void *client_loop_init(void *sthread) {

	TSuplaClientCfg scc;
	supla_client_cfginit(&scc);

	snprintf(scc.Name, SUPLA_CLIENT_NAME_MAXSIZE, "Console client");
	snprintf(scc.SoftVer, SUPLA_SOFTVER_MAXSIZE, "1.0-Linux");

	if ( cfg_pwd != NULL )
		snprintf(scc.AccessIDpwd, SUPLA_ACCESSID_PWD_MAXSIZE, "%s", cfg_pwd);

	scc.AccessID = cfg_aid;
	memcpy(scc.clientGUID, cfg_client_GUID, SUPLA_GUID_SIZE);

	scc.host = cfg_host;
	if ( cfg_ssl_enabled ) {
		scc.ssl_port = cfg_port;
	} else {
		scc.tcp_port = cfg_port;
	}
	scc.ssl_enabled = cfg_ssl_enabled;
	scc.user_data = sthread;
	scc.cb_on_registererror = &client_loop_on_registererror;
	scc.cb_location_update = &client_loop_location_update;
	scc.cb_channel_update = &client_loop_channel_update;
	scc.cb_channel_value_update = &client_loop_channel_value_update;
	scc.cb_on_event = &client_loop_on_event;

	return supla_client_init(&scc);
}
Example #2
0
JNIEXPORT void JNICALL
Java_org_supla_android_lib_SuplaClient_CfgInit(JNIEnv* env, jobject thiz, jobject cfg) {

    TSuplaClientCfg sclient_cfg;
    jfieldID fid;
    
    jclass jcs = (*env)->GetObjectClass(env, cfg);
    
    if ( jcs ) {
        
        supla_client_cfginit(&sclient_cfg);
        
        fid = supla_client_GetFieldID(env, jcs, "ssl_enabled", "Z");
        (*env)->SetBooleanField(env, cfg, fid, sclient_cfg.ssl_enabled == 1 ? JNI_TRUE : JNI_FALSE);
        
        fid = supla_client_GetFieldID(env, jcs, "ssl_port", "I");
        (*env)->SetIntField(env, cfg, fid, sclient_cfg.ssl_port);
        
        fid = supla_client_GetFieldID(env, jcs, "tcp_port", "I");
        (*env)->SetIntField(env, cfg, fid, sclient_cfg.tcp_port);
        
        if ( sclient_cfg.host == NULL )
            sclient_cfg.host = "";
        
        fid = supla_client_GetFieldID(env, jcs, "Host", "Ljava/lang/String;");
        (*env)->SetObjectField(env, cfg, fid, (*env)->NewStringUTF(env, sclient_cfg.host));
        
        fid = supla_client_GetFieldID(env, jcs, "SoftVer", "Ljava/lang/String;");
        (*env)->SetObjectField(env, cfg, fid, (*env)->NewStringUTF(env, sclient_cfg.SoftVer));
        
        fid = supla_client_GetFieldID(env, jcs, "AccessIDpwd", "Ljava/lang/String;");
        (*env)->SetObjectField(env, cfg, fid, (*env)->NewStringUTF(env, sclient_cfg.AccessIDpwd));
        
        fid = supla_client_GetFieldID(env, jcs, "AccessID", "I");
        (*env)->SetIntField(env, cfg, fid, sclient_cfg.AccessID);
        
        fid = supla_client_GetFieldID(env, jcs, "Name", "Ljava/lang/String;");
        (*env)->SetObjectField(env, cfg, fid, (*env)->NewStringUTF(env, sclient_cfg.Name));
        
        jbyteArray arr = (*env)->NewByteArray(env, SUPLA_GUID_SIZE);
        (*env)->SetByteArrayRegion (env, arr, 0, SUPLA_GUID_SIZE, sclient_cfg.clientGUID);
        
        fid = supla_client_GetFieldID(env, jcs, "clientGUID", "[B");
        (*env)->SetObjectField(env, cfg, fid, arr);
        
    };
    
    
}
Example #3
0
JNIEXPORT jlong JNICALL
Java_org_supla_android_lib_SuplaClient_scInit(JNIEnv* env, jobject thiz, jobject cfg) {


    TSuplaClientCfg sclient_cfg;
    jfieldID fid;
    
    jclass jcs = (*env)->GetObjectClass(env, cfg);
    
    if ( jcs ) {
        supla_client_cfginit(&sclient_cfg);
        
        fid = supla_client_GetFieldID(env, jcs, "ssl_enabled", "Z");
        sclient_cfg.ssl_enabled = (*env)->GetBooleanField(env, cfg, fid) == JNI_TRUE ? 1 : 0;
        
        fid = supla_client_GetFieldID(env, jcs, "ssl_port", "I");
        sclient_cfg.ssl_port = (*env)->GetIntField(env, cfg, fid);
        
        fid = supla_client_GetFieldID(env, jcs, "tcp_port", "I");
        sclient_cfg.tcp_port = (*env)->GetIntField(env, cfg, fid);
        
        fid = supla_client_GetFieldID(env, jcs, "Host", "Ljava/lang/String;");
        jstring js_host = (*env)->GetObjectField(env, cfg, fid);
        sclient_cfg.host = (char *)(*env)->GetStringUTFChars(env, js_host, 0);
        
        supla_android_client_jstring_to_buffer(env, cfg, jcs, "SoftVer", sclient_cfg.SoftVer, SUPLA_SOFTVER_MAXSIZE);
        
        supla_android_client_jstring_to_buffer(env, cfg, jcs, "AccessIDpwd", sclient_cfg.AccessIDpwd, SUPLA_ACCESSID_PWD_MAXSIZE);
        
        fid = supla_client_GetFieldID(env, jcs, "AccessID", "I");
        sclient_cfg.AccessID = (*env)->GetIntField(env, cfg, fid);
        
        supla_android_client_jstring_to_buffer(env, cfg, jcs, "Name", sclient_cfg.Name, SUPLA_CLIENT_NAME_MAXSIZE);
        
        fid = supla_client_GetFieldID(env, jcs, "clientGUID", "[B");
        jbyteArray barr = (*env)->GetObjectField(env, cfg, fid);
        
        if ( SUPLA_GUID_SIZE == (*env)->GetArrayLength(env, barr) ) {
            
            jbyte *data = (jbyte *)(*env)->GetByteArrayElements(env, barr, NULL);
            if ( data ) {
                memcpy(sclient_cfg.clientGUID, data, SUPLA_GUID_SIZE);
                (*env)->ReleaseByteArrayElements(env, barr, data, 0 );
            }
        }
        
        TAndroidSuplaClient *_asc = malloc(sizeof(TAndroidSuplaClient));
        memset(_asc, 0, sizeof(TAndroidSuplaClient));
        
        _asc->j_obj = (*env)->NewGlobalRef(env, thiz);
        
        jclass oclass = (*env)->GetObjectClass(env, thiz);
        
        _asc->j_mid_on_versionerror = supla_client_GetMethodID(env, oclass, "onVersionError", "(Lorg/supla/android/lib/SuplaVersionError;)V");
        _asc->j_mid_on_connected = supla_client_GetMethodID(env, oclass, "onConnected", "()V");
        _asc->j_mid_on_connerror = supla_client_GetMethodID(env, oclass, "onConnError", "(Lorg/supla/android/lib/SuplaConnError;)V");
        _asc->j_mid_on_disconnected = supla_client_GetMethodID(env, oclass, "onDisconnected", "()V");
        _asc->j_mid_on_registering = supla_client_GetMethodID(env, oclass, "onRegistering", "()V");
        _asc->j_mid_on_registered = supla_client_GetMethodID(env, oclass, "onRegistered", "(Lorg/supla/android/lib/SuplaRegisterResult;)V");
        _asc->j_mid_on_registererror = supla_client_GetMethodID(env, oclass, "onRegisterError", "(Lorg/supla/android/lib/SuplaRegisterError;)V");
        _asc->j_mid_location_update = supla_client_GetMethodID(env, oclass, "LocationUpdate", "(Lorg/supla/android/lib/SuplaLocation;)V");
        _asc->j_mid_channel_update = supla_client_GetMethodID(env, oclass, "ChannelUpdate", "(Lorg/supla/android/lib/SuplaChannel;)V");
        _asc->j_mid_channel_value_update = supla_client_GetMethodID(env, oclass, "ChannelValueUpdate", "(Lorg/supla/android/lib/SuplaChannelValueUpdate;)V");
        _asc->j_mid_on_event = supla_client_GetMethodID(env, oclass, "onEvent", "(Lorg/supla/android/lib/SuplaEvent;)V");
        
    
        sclient_cfg.user_data = _asc;
        sclient_cfg.cb_on_versionerror = supla_android_client_cb_on_versionerror;
        sclient_cfg.cb_on_connected = supla_android_client_cb_on_connected;
        sclient_cfg.cb_on_connerror = supla_android_client_cb_on_connerror;
        sclient_cfg.cb_on_disconnected = supla_android_client_cb_on_disconnected;
        sclient_cfg.cb_on_registering = supla_android_client_cb_on_registering;
        sclient_cfg.cb_on_registered = supla_android_client_cb_on_registered;
        sclient_cfg.cb_on_registererror = supla_android_client_cb_on_registererror;
        sclient_cfg.cb_location_update = supla_android_client_cb_location_update;
        sclient_cfg.cb_channel_update = supla_android_client_cb_channel_update;
        sclient_cfg.cb_channel_value_update = supla_android_client_cb_channel_value_update;
        sclient_cfg.cb_on_event = supla_android_client_cb_on_event;
        
        _asc->_supla_client = supla_client_init(&sclient_cfg);
        
        if ( sclient_cfg.host ) {
            (*env)->ReleaseStringUTFChars(env, js_host, sclient_cfg.host);
        }
        
        if ( _asc->_supla_client ) {

            #ifdef _LP64
            return (jlong)_asc;
            #else
            return (int)_asc;
            #endif
            
        } else {
            free(_asc);
        }
    }

    return 0;
}